1 #include "stdafx.h" 2 #include "item_index.h" 3 #include "item_class.h" 4 #include "item.h" 5 #include "minion_equipment.h" 6 #include "resource_id.h" 7 #include "corpse_info.h" 8 #include "effect.h" 9 getName(ItemIndex index,int count)10const char* getName(ItemIndex index, int count) { 11 switch (index) { 12 case ItemIndex::RANGED_WEAPON: return count == 1 ? "ranged weapon" : "ranged weapons"; 13 default: FATAL << "Unimplemented"; 14 } 15 return ""; 16 } 17 getIndexPredicate(ItemIndex index)18function<bool(WConstItem)> getIndexPredicate(ItemIndex index) { 19 switch (index) { 20 case ItemIndex::GOLD: return Item::classPredicate(ItemClass::GOLD); 21 case ItemIndex::WOOD: return [](WConstItem it) { 22 return it->getResourceId() == CollectiveResourceId::WOOD; }; 23 case ItemIndex::IRON: return [](WConstItem it) { 24 return it->getResourceId() == CollectiveResourceId::IRON; }; 25 case ItemIndex::STEEL: return [](WConstItem it) { 26 return it->getResourceId() == CollectiveResourceId::STEEL; }; 27 case ItemIndex::STONE: return [](WConstItem it) { 28 return it->getResourceId() == CollectiveResourceId::STONE; }; 29 case ItemIndex::REVIVABLE_CORPSE: return [](WConstItem it) { 30 return it->getClass() == ItemClass::CORPSE && it->getCorpseInfo()->canBeRevived; }; 31 case ItemIndex::WEAPON: return [](WConstItem it) { 32 return it->getClass() == ItemClass::WEAPON; }; 33 case ItemIndex::TRAP: return [](WConstItem it) { return !!it->getTrapType(); }; 34 case ItemIndex::CORPSE: return [](WConstItem it) { 35 return it->getClass() == ItemClass::CORPSE; }; 36 case ItemIndex::MINION_EQUIPMENT: return [](WConstItem it) { 37 return MinionEquipment::isItemUseful(it);}; 38 case ItemIndex::RANGED_WEAPON: return [](WConstItem it) { 39 return it->getClass() == ItemClass::RANGED_WEAPON;}; 40 case ItemIndex::CAN_EQUIP: return [](WConstItem it) {return it->canEquip();}; 41 case ItemIndex::FOR_SALE: return [](WConstItem it) {return it->isOrWasForSale();}; 42 case ItemIndex::HEALING_ITEM: return [](WConstItem it) {return it->getEffect() == Effect(Effect::Heal{});}; 43 } 44 } 45