PyDict *Character::CharGetInfo() { //TODO: verify that we are a char? if( !LoadContents( m_factory ) ) { codelog(ITEM__ERROR, "%s (%u): Failed to load contents for CharGetInfo", m_itemName.c_str(), m_itemID); return NULL; } PyDict *result = new PyDict; Rsp_CommonGetInfo_Entry entry; if(!Populate(entry)) return NULL; result->SetItem(new PyInt(m_itemID), new PyObject("util.KeyVal", entry.Encode())); //now encode skills... std::vector<InventoryItemRef> skills; //find all the skills contained within ourself. FindByFlag( flagSkill, skills ); FindByFlag( flagSkillInTraining, skills ); //encode an entry for each one. std::vector<InventoryItemRef>::iterator cur, end; cur = skills.begin(); end = skills.end(); for(; cur != end; cur++) { if(!(*cur)->Populate(entry)) { codelog(ITEM__ERROR, "%s (%u): Failed to load skill item %u for CharGetInfo", m_itemName.c_str(), itemID(), (*cur)->itemID()); } else { result->SetItem(new PyInt((*cur)->itemID()), new PyObject("util.KeyVal", entry.Encode())); } } return result; }
PyObject *Character::CharGetInfo() { //TODO: verify that we are a char? if( !LoadContents( m_factory ) ) { codelog(ITEM__ERROR, "%s (%u): Failed to load contents for CharGetInfo", m_itemName.c_str(), m_itemID); return NULL; } Rsp_CommonGetInfo result; Rsp_CommonGetInfo_Entry entry; //first encode self. if(!Populate(entry)) return NULL; //print already done. result.items[m_itemID] = entry.Encode(); //now encode skills... std::vector<InventoryItemRef> skills; // Check that there are not expired boosters CheckBoosters(); // find all the skills located at our character's brain( AKA locationID = characterID ) FindByFlag( flagSkill, skills ); FindByFlag( flagSkillInTraining, skills ); FindByFlag( flagImplant, skills ); FindByFlag( flagBooster, skills ); //encode an entry for each one. std::vector<InventoryItemRef>::iterator cur, end; cur = skills.begin(); end = skills.end(); for(; cur != end; cur++) { if(!(*cur)->Populate(entry)) { codelog(ITEM__ERROR, "%s (%u): Failed to load skill item %u for CharGetInfo", m_itemName.c_str(), itemID(), (*cur)->itemID()); } else { result.items[(*cur)->itemID()] = entry.Encode(); } } return(result.Encode()); }
PyObject *Structure::StructureGetInfo() { if( !LoadContents( m_factory ) ) { codelog( ITEM__ERROR, "%s (%u): Failed to load contents for StructureGetInfo", itemName().c_str(), itemID() ); return NULL; } Rsp_CommonGetInfo result; Rsp_CommonGetInfo_Entry entry; //first populate the Structure. if( !Populate( entry ) ) return NULL; //print already done. result.items[ itemID() ] = entry.Encode(); return result.Encode(); }
PyDict *Ship::ShipGetInfo() { if( !LoadContents( m_factory ) ) { codelog( ITEM__ERROR, "%s (%u): Failed to load contents for ShipGetInfo", itemName().c_str(), itemID() ); return NULL; } PyDict *result = new PyDict; Rsp_CommonGetInfo_Entry entry; //first populate the ship. if( !Populate( entry ) ) return NULL; //print already done. result->SetItem(new PyInt( itemID()), new PyObject("util.KeyVal", entry.Encode())); //now encode contents... std::vector<InventoryItemRef> equipped; std::vector<InventoryItemRef> integrated; //find all the equipped items and rigs FindByFlagRange( flagLowSlot0, flagFixedSlot, equipped ); FindByFlagRange( flagRigSlot0, flagRigSlot7, integrated ); //append them into one list equipped.insert(equipped.end(), integrated.begin(), integrated.end() ); //encode an entry for each one. std::vector<InventoryItemRef>::iterator cur, end; cur = equipped.begin(); end = equipped.end(); for(; cur != end; cur++) { if( !(*cur)->Populate( entry ) ) { codelog( ITEM__ERROR, "%s (%u): Failed to load item %u for ShipGetInfo", itemName().c_str(), itemID(), (*cur)->itemID() ); } else result->SetItem(new PyInt((*cur)->itemID()), new PyObject("util.KeyVal", entry.Encode())); } return result; }
PyObject *Ship::ShipGetInfo() { if( !LoadContents( m_factory ) ) { codelog( ITEM__ERROR, "%s (%u): Failed to load contents for ShipGetInfo", itemName().c_str(), itemID() ); return NULL; } Rsp_CommonGetInfo result; Rsp_CommonGetInfo_Entry entry; //first populate the ship. if( !Populate( entry ) ) return NULL; //print already done. //hacking: //maximumRangeCap /* this is a ugly hack... */ if (entry.attributes.find(AttrMaximumRangeCap) == entry.attributes.end()) entry.attributes.insert(std::make_pair(AttrMaximumRangeCap, new PyFloat( 249999.0 ))); // more hacking SetAttribute(AttrArmorMaxDamageResonance, 1.0f, false); SetAttribute(AttrShieldMaxDamageResonance, 1.0f, false); SetAttribute(AttrWarpSpeedMultiplier, 1.0f, false); entry.attributes.insert(std::make_pair(AttrArmorMaxDamageResonance, new PyFloat( 1.0 ))); entry.attributes.insert(std::make_pair(AttrShieldMaxDamageResonance, new PyFloat( 1.0 ))); entry.attributes.insert(std::make_pair(AttrWarpSpeedMultiplier, new PyFloat( 1.0 ))); result.items[ itemID() ] = entry.Encode(); //now encode contents... std::vector<InventoryItemRef> equipped; std::vector<InventoryItemRef> integrated; //find all the equipped items and rigs FindByFlagRange( flagLowSlot0, flagFixedSlot, equipped ); FindByFlagRange( flagRigSlot0, flagRigSlot7, integrated ); //append them into one list equipped.insert(equipped.end(), integrated.begin(), integrated.end() ); //encode an entry for each one. std::vector<InventoryItemRef>::iterator cur, end; cur = equipped.begin(); end = equipped.end(); for(; cur != end; cur++) { if( !(*cur)->Populate( entry ) ) { codelog( ITEM__ERROR, "%s (%u): Failed to load item %u for ShipGetInfo", itemName().c_str(), itemID(), (*cur)->itemID() ); } else result.items[ (*cur)->itemID() ] = entry.Encode(); } return result.Encode(); }