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