#include "stdafx.h" #include "Container.h" #include "EntitySelector.h" const EntitySelector *EntitySelector::ENTITY_STILL_ALIVE = new AliveEntitySelector(); const EntitySelector *EntitySelector::CONTAINER_ENTITY_SELECTOR = new ContainerEntitySelector(); bool AliveEntitySelector::matches(shared_ptr entity) const { return entity->isAlive(); } bool ContainerEntitySelector::matches(shared_ptr entity) const { return (dynamic_pointer_cast(entity) != NULL) && entity->isAlive(); } MobCanWearArmourEntitySelector::MobCanWearArmourEntitySelector(shared_ptr item) { this->item = item; } bool MobCanWearArmourEntitySelector::matches(shared_ptr entity) const { if ( !entity->isAlive() ) return false; if ( !entity->instanceof(eTYPE_LIVINGENTITY) ) return false; shared_ptr mob = dynamic_pointer_cast(entity); if (mob->getCarried(Mob::getEquipmentSlotForItem(item)) != NULL) return false; if ( mob->instanceof(eTYPE_MOB) ) { return dynamic_pointer_cast(mob)->canPickUpLoot(); } else if (mob->instanceof(eTYPE_PLAYER)) { return true; } return false; }