StimPack* DroidStimpackModuleDataComponent::findStimPack() { StimPack* pack = NULL; float biggest = 0; DroidComponent* container = cast<DroidComponent*>(getParent()); if (container == NULL) return NULL; ManagedReference<SceneObject*> craftingComponents = container->getSlottedObject("crafted_components"); if (craftingComponents != NULL) { SceneObject* satchel = craftingComponents->getContainerObject(0); for (int i = 0; i < satchel->getContainerObjectsSize(); ++i) { ManagedReference<SceneObject*> sceno = satchel->getContainerObject(i); // is a stimpack if (sceno->isPharmaceuticalObject()) { PharmaceuticalObject* pharma = sceno.castTo<PharmaceuticalObject*>(); if (pharma->isStimPack() && !pharma->isPetStimPack() && !pharma->isDroidRepairKit()) { StimPack* stim = cast<StimPack*>(pharma); if (stim->getEffectiveness() > biggest) { biggest = stim->getEffectiveness(); pack = stim; } } } } } return pack; }
StimPack* DroidStimpackModuleDataComponent::compatibleStimpack(float power) { DroidComponent* droidComponent = cast<DroidComponent*>(getParent()); if (droidComponent == NULL) { info("droidComponent was null"); return NULL; } DroidObject* droid = getDroidObject(); if (droid == NULL) { return NULL; } Locker dlock(droid); ManagedReference<SceneObject*> craftingComponents = droidComponent->getSlottedObject("crafted_components"); if(craftingComponents != NULL) { SceneObject* satchel = craftingComponents->getContainerObject(0); if(satchel == NULL) { return NULL; } for (int i = 0; i < satchel->getContainerObjectsSize(); ++i) { SceneObject* item = satchel->getContainerObject(i); if (!item->isTangibleObject()) continue; TangibleObject* tano = cast<TangibleObject*>( item); if (tano->isPharmaceuticalObject()) { StimPack* stim = cast<StimPack*>(tano); if(stim->getEffectiveness() == power) { return stim; } } } } return NULL; }
void DroidStimpackModuleDataComponent::fillAttributeList(AttributeListMessage* alm, CreatureObject* droid) { // convert module rating to actual rating StringBuffer sb; sb << loaded; sb << "/"; sb << capacity; alm->insertAttribute( "stimpack_capacity", sb.toString()); alm->insertAttribute( "stimpack_speed", speed); float power = 0; if (loaded > 0) { StimPack* sp = findStimPack(); if (sp != NULL) power = sp->getEffectiveness(); } alm->insertAttribute("stimpack_power", power); }