blob: 0f575c73b09c88849d3c7ff6084039f56eec4310 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#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> entity) const
{
return entity->isAlive();
}
bool ContainerEntitySelector::matches(shared_ptr<Entity> entity) const
{
return (dynamic_pointer_cast<Container>(entity) != nullptr) && entity->isAlive();
}
MobCanWearArmourEntitySelector::MobCanWearArmourEntitySelector(shared_ptr<ItemInstance> item)
{
this->item = item;
}
bool MobCanWearArmourEntitySelector::matches(shared_ptr<Entity> entity) const
{
if ( !entity->isAlive() ) return false;
if ( !entity->instanceof(eTYPE_LIVINGENTITY) ) return false;
shared_ptr<LivingEntity> mob = dynamic_pointer_cast<LivingEntity>(entity);
if (mob->getCarried(Mob::getEquipmentSlotForItem(item)) != nullptr) return false;
if ( mob->instanceof(eTYPE_MOB) )
{
return dynamic_pointer_cast<Mob>(mob)->canPickUpLoot();
}
else if (mob->instanceof(eTYPE_PLAYER))
{
return true;
}
return false;
}
|