1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-10 15:39:02 +00:00
OpenMW/apps/openmw/mwworld/inventorystore.hpp

92 lines
2.8 KiB
C++
Raw Normal View History

#ifndef GAME_MWWORLD_INVENTORYSTORE_H
#define GAME_MWWORLD_INVENTORYSTORE_H
#include "containerstore.hpp"
#include "../mwmechanics/magiceffects.hpp"
namespace MWMechanics
{
struct NpcStats;
}
namespace MWWorld
{
///< \brief Variant of the ContainerStore for NPCs
class InventoryStore : public ContainerStore
{
2012-03-13 12:31:11 +00:00
public:
2012-03-13 12:31:11 +00:00
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;
2012-03-13 12:31:11 +00:00
static const int Slots = 19;
static const int Slot_NoSlot = -1;
private:
mutable MWMechanics::MagicEffects mMagicEffects;
mutable bool mMagicEffectsUpToDate;
typedef std::vector<ContainerStoreIterator> TSlots;
mutable TSlots mSlots;
2012-03-13 12:31:11 +00:00
void copySlots (const InventoryStore& store);
void initSlots (TSlots& slots);
2012-03-13 12:31:11 +00:00
public:
InventoryStore();
InventoryStore (const InventoryStore& store);
InventoryStore& operator= (const InventoryStore& store);
void equip (int slot, const ContainerStoreIterator& iterator);
2012-03-13 13:04:19 +00:00
///< \note \a iteartor can be an end-iterator
2012-03-13 12:31:11 +00:00
ContainerStoreIterator getSlot (int slot);
void autoEquip (const MWMechanics::NpcStats& stats);
///< Auto equip items according to stats and item value.
2012-05-13 12:58:38 +00:00
const MWMechanics::MagicEffects& getMagicEffects();
///< Return magic effects from worn items.
///
/// \todo make this const again, after the constness of Ptrs and iterators has been addressed.
virtual void flagAsModified();
///< \attention This function is internal to the world model and should not be called from
/// outside.
2012-05-13 12:58:38 +00:00
protected:
virtual bool stacks (const Ptr& ptr1, const Ptr& ptr2);
2012-05-13 12:58:38 +00:00
///< @return true if the two specified objects can stack with each other
/// @note ptr1 is the item that is already in this container
};
}
#endif