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)10 const 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)18 function<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