#ifndef GAME_MWWORLD_INVENTORYSTORE_H #define GAME_MWWORLD_INVENTORYSTORE_H #include "containerstore.hpp" namespace MWMechanics { struct NpcStats; } namespace MWWorld { struct Environment; ///< \brief Variant of the ContainerStore for NPCs class InventoryStore : public ContainerStore { public: static const int Slot_Helmet = 0; static const int Slot_Cuirass = 1; static const int Slot_Greaves = 2; static const int Slot_LeftPauldron = 3; static const int Slot_RightPauldron = 4; static const int Slot_LeftGauntlet = 5; static const int Slot_RightGauntlet = 6; static const int Slot_Boots = 7; static const int Slot_Shirt = 8; static const int Slot_Pants = 9; static const int Slot_Skirt = 10; static const int Slot_Robe = 11; static const int Slot_LeftRing = 12; static const int Slot_RightRing = 13; static const int Slot_Amulet = 14; static const int Slot_Belt = 15; static const int Slot_CarriedRight = 16; static const int Slot_CarriedLeft = 17; static const int Slot_Ammunition = 18; static const int Slots = 19; static const int Slot_NoSlot = -1; private: typedef std::vector TSlots; mutable TSlots mSlots; void copySlots (const InventoryStore& store); void initSlots (TSlots& slots); public: InventoryStore(); InventoryStore (const InventoryStore& store); InventoryStore& operator= (const InventoryStore& store); void equip (int slot, const ContainerStoreIterator& iterator); ///< \note \a iteartor can be an end-iterator ContainerStoreIterator getSlot (int slot); void autoEquip (const MWMechanics::NpcStats& stats, const Environment& environment); ///< Auto equip items according to stats and item value. }; } #endif