BVB Source Codes

CRYENGINE Show IItemSystem.h Source code

Return Download CRYENGINE: download IItemSystem.h Source code - Download CRYENGINE Source code - Type:.h
  1. // Copyright 2001-2016 Crytek GmbH / Crytek Group. All rights reserved.
  2.  
  3. /*************************************************************************
  4.    -------------------------------------------------------------------------
  5.    $Id$
  6.    $DateTime$
  7.    Description: Item System interfaces.
  8.  
  9.    -------------------------------------------------------------------------
  10.    History:
  11.    - 1:9:2004   19:52 : Created by M谩rcio Martins
  12.    - 20:6:2005        : Changed IItem to be a game object extension by Craig Tiller
  13.  
  14. *************************************************************************/
  15.  
  16. #ifndef __IITEMSYSTEM_H__
  17. #define __IITEMSYSTEM_H__
  18.  
  19. #pragma once
  20.  
  21. #include "IGameObject.h"
  22. #include "IItem.h"
  23. #include "IWeapon.h"
  24. #include "IActorSystem.h"
  25. #include <CryFlowGraph/IFlowSystem.h>
  26.  
  27. enum EItemParamMapTypes
  28. {
  29.         eIPT_None   = -2,
  30.         eIPT_Any    = -1,
  31.         eIPT_Float  = EFlowDataTypes::eFDT_Float,
  32.         eIPT_Int    = EFlowDataTypes::eFDT_Int,
  33.         eIPT_Vec3   = EFlowDataTypes::eFDT_Vec3,
  34.         eIPT_String = EFlowDataTypes::eFDT_String,
  35. };
  36.  
  37. struct IItemParamsNode
  38. {
  39.         virtual ~IItemParamsNode() {}
  40.  
  41.         virtual void                   AddRef() const = 0;
  42.         virtual uint32                 GetRefCount() const = 0;
  43.         virtual void                   Release() const = 0;
  44.  
  45.         virtual int                    GetAttributeCount() const = 0;
  46.         virtual const char*            GetAttributeName(int i) const = 0;
  47.         virtual const char*            GetAttribute(int i) const = 0;
  48.         virtual bool                   GetAttribute(int i, Vec3& attr) const = 0;
  49.         virtual bool                   GetAttribute(int i, Ang3& attr) const = 0;
  50.         virtual bool                   GetAttribute(int i, float& attr) const = 0;
  51.         virtual bool                   GetAttribute(int i, int& attr) const = 0;
  52.         virtual int                    GetAttributeType(int i) const = 0;
  53.  
  54.         virtual const char*            GetAttribute(const char* name) const = 0;
  55.         virtual bool                   GetAttribute(const char* name, Vec3& attr) const = 0;
  56.         virtual bool                   GetAttribute(const char* name, Ang3& attr) const = 0;
  57.         virtual bool                   GetAttribute(const char* name, float& attr) const = 0;
  58.         virtual bool                   GetAttribute(const char* name, int& attr) const = 0;
  59.         virtual int                    GetAttributeType(const char* name) const = 0;
  60.  
  61.         virtual const char*            GetAttributeSafe(const char* name) const = 0;
  62.  
  63.         virtual const char*            GetNameAttribute() const = 0;
  64.  
  65.         virtual int                    GetChildCount() const = 0;
  66.         virtual const char*            GetChildName(int i) const = 0;
  67.         virtual const IItemParamsNode* GetChild(int i) const = 0;
  68.         virtual const IItemParamsNode* GetChild(const char* name) const = 0;
  69.  
  70.         virtual void                   SetAttribute(const char* name, const char* attr) = 0;
  71.         virtual void                   SetAttribute(const char* name, const Vec3& attr) = 0;
  72.         virtual void                   SetAttribute(const char* name, float attr) = 0;
  73.         virtual void                   SetAttribute(const char* name, int attr) = 0;
  74.  
  75.         virtual void                   SetName(const char* name) = 0;
  76.         virtual const char*            GetName() const = 0;
  77.  
  78.         virtual IItemParamsNode*       InsertChild(const char* name) = 0;
  79.         virtual void                   ConvertFromXML(const XmlNodeRef& root) = 0;
  80.         virtual bool                   ConvertFromXMLWithFiltering(const XmlNodeRef& root, const char* keepWithThisAttrValue) = 0;
  81.  
  82.         virtual void                   GetMemoryUsage(ICrySizer* pSizer) const = 0;
  83.  
  84.         void                           Dump(const char* name = 0) const
  85.         {
  86.                 int ident = 0;
  87.                 DumpNode(this, name ? name : "root", ident);
  88.         }
  89.  
  90. private:
  91.         void DumpNode(const IItemParamsNode* node, const char* name, int& ident) const
  92.         {
  93.                 string dump;
  94.                 dump.reserve(10000);
  95.                 for (int i = 0; i < ident; i++)
  96.                         dump += " ";
  97.  
  98.                 dump += "<";
  99.                 dump += name;
  100.  
  101.                 char snum[64];
  102.  
  103.                 for (int a = 0; a < node->GetAttributeCount(); a++)
  104.                 {
  105.                         const char* attrName = node->GetAttributeName(a);
  106.                         dump += " ";
  107.                         dump += attrName;
  108.                         dump += "=\"";
  109.  
  110.                         switch (node->GetAttributeType(a))
  111.                         {
  112.                         case eIPT_Int:
  113.                                 {
  114.                                         int attr;
  115.                                         node->GetAttribute(a, attr);
  116.                                         cry_sprintf(snum, "%d", attr);
  117.                                         dump += snum;
  118.                                 }
  119.                                 break;
  120.                         case eIPT_Float:
  121.                                 {
  122.                                         float attr;
  123.                                         node->GetAttribute(a, attr);
  124.                                         cry_sprintf(snum, "%f", attr);
  125.                                         dump += snum;
  126.                                 }
  127.                                 break;
  128.                         case eIPT_String:
  129.                                 {
  130.                                         const char* attr = node->GetAttribute(a);
  131.                                         dump += attr;
  132.                                 }
  133.                                 break;
  134.                         case eIPT_Vec3:
  135.                                 {
  136.                                         Vec3 attr;
  137.                                         node->GetAttribute(a, attr);
  138.                                         cry_sprintf(snum, "%f,%f,%f", attr.x, attr.y, attr.z);
  139.                                         dump += snum;
  140.                                 }
  141.                                 break;
  142.                         default:
  143.                                 break;
  144.                         }
  145.  
  146.                         dump += "\"";
  147.                 }
  148.                 if (node->GetChildCount())
  149.                 {
  150.                         dump += ">";
  151.                         CryLogAlways("%s", dump.c_str());
  152.  
  153.                         ident += 2;
  154.                         for (int c = 0; c < node->GetChildCount(); c++)
  155.                         {
  156.                                 const char* childName = node->GetChildName(c);
  157.                                 const IItemParamsNode* child = node->GetChild(c);
  158.                                 DumpNode(child, childName, ident);
  159.                         }
  160.                         ident -= 2;
  161.  
  162.                         string finale;
  163.                         for (int i = 0; i < ident; i++)
  164.                                 finale += " ";
  165.                         finale += "</";
  166.                         finale += name;
  167.                         finale += ">";
  168.                         CryLogAlways("%s", finale.c_str());
  169.                 }
  170.                 else
  171.                 {
  172.                         dump += " />";
  173.                         CryLogAlways("%s", dump.c_str());
  174.                 }
  175.         }
  176. };
  177.  
  178. struct IInventory : public IGameObjectExtension
  179. {
  180.         enum EInventorySlots
  181.         {
  182.                 eInventorySlot_Weapon = 0,
  183.                 eInventorySlot_Explosives,
  184.                 eInventorySlot_Grenades,
  185.                 eInventorySlot_Special,
  186.                 eInventorySlot_Last
  187.         };
  188.  
  189.         virtual bool                AddItem(EntityId id) = 0;
  190.         virtual bool                RemoveItem(EntityId id) = 0;
  191.         virtual void                RemoveAllItems(bool forceClear = false) = 0;
  192.  
  193.         virtual bool                AddAccessory(IEntityClass* itemClass) = 0;
  194.  
  195.         virtual void                Destroy() = 0;
  196.         virtual void                Clear(bool forceClear = false) = 0;
  197.  
  198.         virtual void                RMIReqToServer_RemoveAllItems() const = 0;
  199.         virtual void                RMIReqToServer_AddItem(const char* _pszItemClass) const = 0;
  200.         virtual void                RMIReqToServer_RemoveItem(const char* _pszItemClass) const = 0;
  201.         virtual void                RMIReqToServer_SetAmmoCount(const char* _pszAmmoClass, int _iAmount) const = 0;
  202.         virtual void                RMIReqToServer_AddEquipmentPack(const char* _pszEquipmentPack, bool _bAdd, bool _bPrimary) const = 0;
  203.  
  204.         virtual int                 GetCapacity() const = 0;
  205.         virtual int                 GetCount() const = 0;
  206.         virtual int                 GetCountOfClass(const char* className) const = 0;
  207.         virtual int                 GetCountOfCategory(const char* categoryName) const = 0;
  208.         virtual int                 GetCountOfUniqueId(uint8 uniqueId) const = 0;
  209.  
  210.         virtual int                 GetSlotCount(int slotId) const = 0;
  211.  
  212.         virtual EntityId            GetItem(int slotId) const = 0;
  213.         virtual const char*         GetItemString(int slotId) const = 0;
  214.         virtual EntityId            GetItemByClass(IEntityClass* pClass, IItem* pIgnoreItem = NULL) const = 0;
  215.         virtual IItem*              GetItemByName(const char* name) const = 0;
  216.  
  217.         virtual int                 GetAccessoryCount() const = 0;
  218.         virtual const char*         GetAccessory(int slotId) const = 0;
  219.         virtual const IEntityClass* GetAccessoryClass(int slotId) const = 0;
  220.         virtual bool                HasAccessory(IEntityClass* pClass) const = 0;
  221.  
  222.         virtual int                 FindItem(EntityId itemId) const = 0;
  223.  
  224.         virtual int                 FindNext(IEntityClass* pClass, const char* category, int firstSlot, bool wrap) const = 0;
  225.         virtual int                 FindPrev(IEntityClass* pClass, const char* category, int firstSlot, bool wrap) const = 0;
  226.  
  227.         virtual EntityId            GetCurrentItem() const = 0;
  228.         virtual EntityId            GetHolsteredItem() const = 0;
  229.         virtual void                SetCurrentItem(EntityId itemId) = 0;
  230.         virtual void                SetHolsteredItem(EntityId itemId) = 0;
  231.  
  232.         virtual void                SetLastItem(EntityId itemId) = 0;
  233.         virtual EntityId            GetLastItem() const = 0;
  234.         virtual EntityId            GetLastSelectedInSlot(IInventory::EInventorySlots slotId) const = 0;
  235.  
  236.         virtual void                HolsterItem(bool holster) = 0;
  237.  
  238.         virtual void                SerializeInventoryForLevelChange(TSerialize ser) = 0;
  239.         virtual bool                IsSerializingForLevelChange() const = 0;
  240.  
  241.         virtual int                 GetAmmoTypesCount() const = 0;
  242.         virtual IEntityClass*       GetAmmoType(int idx) const = 0;
  243.  
  244.         virtual void                SetAmmoCount(IEntityClass* pAmmoType, int count) = 0;
  245.         virtual int                 GetAmmoCount(IEntityClass* pAmmoType) const = 0;
  246.         virtual void                SetAmmoCapacity(IEntityClass* pAmmoType, int max) = 0;
  247.         virtual int                 GetAmmoCapacity(IEntityClass* pAmmoType) const = 0;
  248.         virtual void                ResetAmmo() = 0;
  249.  
  250.         virtual void                AddAmmoUser(IEntityClass* pAmmoType) = 0;
  251.         virtual void                RemoveAmmoUser(IEntityClass* pAmmoType) = 0;
  252.         virtual int                 GetNumberOfUsersForAmmo(IEntityClass* pAmmoType) const = 0;
  253.  
  254.         virtual IActor*             GetActor() = 0;
  255.  
  256.         virtual void                SetInventorySlotCapacity(EInventorySlots slotId, unsigned int capacity) = 0;
  257.         virtual void                AssociateItemCategoryToSlot(const char* itemCategory, EInventorySlots slotId) = 0;
  258.         virtual bool                IsAvailableSlotForItemClass(const char* itemClass) const = 0;
  259.         virtual bool                IsAvailableSlotForItemCategory(const char* itemCategory) const = 0;
  260.         virtual bool                AreItemsInSameSlot(const char* itemClass1, const char* itemClass2) const = 0;
  261.         virtual EInventorySlots     GetSlotForItemCategory(const char* itemCategory) const = 0;
  262.  
  263.         virtual void                AddListener(struct IInventoryListener* pListener) = 0;
  264.         virtual void                RemoveListener(struct IInventoryListener* pListener) = 0;
  265.  
  266.         virtual void                IgnoreNextClear() = 0;
  267. };
  268.  
  269. struct IInventoryListener
  270. {
  271.         virtual ~IInventoryListener(){}
  272.         virtual void OnAddItem(EntityId entityId) = 0;
  273.         virtual void OnSetAmmoCount(IEntityClass* pAmmoType, int count) = 0;
  274.         virtual void OnAddAccessory(IEntityClass* pAccessoryClass) = 0;
  275.         virtual void OnClearInventory() = 0;
  276. };
  277.  
  278. struct IEquipmentPackPreCacheCallback
  279. {
  280.         virtual ~IEquipmentPackPreCacheCallback(){}
  281.         virtual void PreCacheItemResources(const char* itemName) = 0;
  282. };
  283.  
  284. // Summary
  285. //   Used to give predefined inventory to actors
  286. struct IEquipmentManager
  287. {
  288.         virtual ~IEquipmentManager(){}
  289.         struct IListener
  290.         {
  291.                 virtual ~IListener(){}
  292.                 virtual void OnBeginGiveEquipmentPack() {}
  293.                 virtual void OnEndGiveEquipmentPack()   {}
  294.         };
  295.  
  296.         struct IEquipmentPackIterator
  297.         {
  298.                 virtual ~IEquipmentPackIterator(){}
  299.                 virtual void        AddRef() = 0;
  300.                 virtual void        Release() = 0;
  301.                 virtual int         GetCount() = 0;
  302.                 virtual const char* Next() = 0;
  303.         };
  304.         typedef _smart_ptr<IEquipmentPackIterator> IEquipmentPackIteratorPtr;
  305.  
  306.         // Clear all equipment packs
  307.         virtual void DeleteAllEquipmentPacks() = 0;
  308.  
  309.         // Loads equipment packs from rootNode
  310.         virtual void LoadEquipmentPacks(const XmlNodeRef& rootNode) = 0;
  311.  
  312.         // Load all equipment packs from a certain path
  313.         virtual void LoadEquipmentPacksFromPath(const char* path) = 0;
  314.  
  315.         // Load an equipment pack from an XML node
  316.         virtual bool LoadEquipmentPack(const XmlNodeRef& rootNode, bool bOverrideExisiting = true) = 0;
  317.  
  318.         // Give an equipment pack (resp. items/ammo) to an actor
  319.         virtual bool GiveEquipmentPack(IActor* pActor, const char* packName, bool bAdd, bool bSelectPrimary) = 0;
  320.  
  321.         // Pre-cache all resources needed for the items included in the given pack
  322.         virtual void PreCacheEquipmentPackResources(const char* packName, IEquipmentPackPreCacheCallback& preCacheCallback) = 0;
  323.  
  324.         // return iterator with all available equipment packs
  325.         virtual IEquipmentManager::IEquipmentPackIteratorPtr CreateEquipmentPackIterator() = 0;
  326.  
  327.         virtual void RegisterListener(IListener* pListener) = 0;
  328.         virtual void UnregisterListener(IListener* pListener) = 0;
  329. };
  330.  
  331. struct IActor;
  332.  
  333. struct IItemSystemListener
  334. {
  335.         virtual ~IItemSystemListener(){}
  336.         virtual void OnSetActorItem(IActor* pActor, IItem* pItem) = 0;
  337.         virtual void OnDropActorItem(IActor* pActor, IItem* pItem) = 0;
  338.         virtual void OnSetActorAccessory(IActor* pActor, IItem* pItem) = 0;
  339.         virtual void OnDropActorAccessory(IActor* pActor, IItem* pItem) = 0;
  340.  
  341.         virtual void GetMemoryUsage(ICrySizer* pSizer) const {};
  342. };
  343.  
  344. // Summary
  345. // Query that item system can handle
  346. enum IItemSystemQuery
  347. {
  348.         eISQ_Dump_Item_Names = 0,
  349.         eISQ_Find_Item_By_Name,
  350.         eISQ_Last,
  351. };
  352.  
  353. // Summary
  354. //   Interface to the Item system
  355. struct IItemSystem
  356. {
  357.         virtual ~IItemSystem(){}
  358.         virtual void                   Reset() = 0;
  359.         virtual void                   Reload() = 0;
  360.         virtual void                   PreReload() = 0;
  361.         virtual void                   PostReload() = 0;
  362.         virtual void                   Scan(const char* folderName) = 0;
  363.         virtual IItemParamsNode*       CreateParams() = 0;
  364.         virtual const IItemParamsNode* GetItemParams(const char* itemName) const = 0;
  365.         virtual const char*            GetItemParamsDescriptionFile(const char* itemName) const = 0;
  366.         virtual int                    GetItemParamsCount() const = 0;
  367.         virtual const char*            GetItemParamName(int index) const = 0;
  368.         virtual uint8                  GetItemPriority(const char* item) const = 0;
  369.         virtual const char*            GetItemCategory(const char* item) const = 0;
  370.         virtual uint8                  GetItemUniqueId(const char* item) const = 0;
  371.  
  372.         virtual bool                   IsItemClass(const char* name) const = 0;
  373.         virtual const char*            GetFirstItemClass() = 0;
  374.         virtual const char*            GetNextItemClass() = 0;
  375.  
  376.         virtual void                   RegisterForCollection(EntityId itemId) = 0;
  377.         virtual void                   UnregisterForCollection(EntityId itemId) = 0;
  378.  
  379.         virtual void                   AddItem(EntityId itemId, IItem* pItem) = 0;
  380.         virtual void                   RemoveItem(EntityId itemId, const char* itemName = NULL) = 0;
  381.         virtual IItem*                 GetItem(EntityId itemId) const = 0;
  382.  
  383.         virtual void                   SetConfiguration(const char* name) = 0;
  384.         virtual const char*            GetConfiguration() const = 0;
  385.  
  386.         virtual void*                  Query(IItemSystemQuery query, const void* param = NULL) = 0;
  387.  
  388.         virtual ICharacterInstance*    GetCachedCharacter(const char* fileName) = 0;
  389.         virtual IStatObj*              GetCachedObject(const char* fileName) = 0;
  390.         virtual void                   CacheObject(const char* fileName, bool useCgfStreaming) = 0;
  391.         virtual void                   CacheGeometry(const IItemParamsNode* geometry) = 0;
  392.         virtual void                   CacheItemGeometry(const char* className) = 0;
  393.         virtual void                   ClearGeometryCache() = 0;
  394.  
  395.         virtual void                   CacheItemSound(const char* className) = 0;
  396.         virtual void                   ClearSoundCache() = 0;
  397.  
  398.         virtual void                   Serialize(TSerialize ser) = 0;
  399.  
  400.         virtual EntityId               GiveItem(IActor* pActor, const char* item, bool sound, bool select, bool keepHistory, const char* setup = NULL, EEntityFlags entityFlags = (EEntityFlags)0) = 0;
  401.         virtual void                   SetActorItem(IActor* pActor, EntityId itemId, bool keepHistory = true) = 0;
  402.         virtual void                   SetActorItem(IActor* pActor, const char* name, bool keepHistory = true) = 0;
  403.         virtual void                   DropActorItem(IActor* pActor, EntityId itemId) = 0;
  404.         virtual void                   SetActorAccessory(IActor* pActor, EntityId itemId, bool keepHistory = true) = 0;
  405.         virtual void                   DropActorAccessory(IActor* pActor, EntityId itemId) = 0;
  406.  
  407.         virtual void                   RegisterListener(IItemSystemListener* pListener) = 0;
  408.         virtual void                   UnregisterListener(IItemSystemListener* pListener) = 0;
  409.  
  410.         virtual IEquipmentManager*     GetIEquipmentManager() = 0;
  411.  
  412.         virtual uint32                 GetItemSocketCount(const char* item) const = 0;
  413.         virtual const char*            GetItemSocketName(const char* item, int idx) const = 0;
  414.         virtual bool                   IsCompatible(const char* item, const char* attachment) const = 0;
  415.         virtual bool                   GetItemSocketCompatibility(const char* item, const char* socket) const = 0;
  416.         virtual bool                   CanSocketBeEmpty(const char* item, const char* socket) const = 0;
  417. };
  418.  
  419. #endif //__IITEMSYSTEM_H__
  420.  
downloadIItemSystem.h Source code - Download CRYENGINE Source code
Related Source Codes/Software:
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top