Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

251 lines
9.7 KiB

//====== Copyright © 1996-2010, Valve Corporation, All rights reserved. =======
//
// Purpose:
//
//=============================================================================
#ifndef __ECON_ITEM_SYSTEM_INTERFACE_H
#define __ECON_ITEM_SYSTEM_INTERFACE_H
#ifdef _WIN32
#pragma once
#endif
#include "utlmap.h"
#include "econ/econ_item_constants.h"
class KeyValues;
class IEconItemSchema;
class CEconItemDefinition;
struct item_list_entry_t;
//-----------------------------------------------------------------------------
// Particle system attachments exposed for editors.
//-----------------------------------------------------------------------------
struct attachedparticlecontrolpoint_t
{
short nControlPoint;
byte nAttachType;
const char *pszAttachmentName;
Vector vecPosition;
};
enum attachedparticle_toent_t
{
ATTPART_TO_SELF,
ATTPART_TO_PARENT,
};
struct attachedparticlesystem_t
{
const char *pszResourceName;
const char *pszSystemName;
const char *pszAttachmentName;
bool bFollowRootBone;
bool bFlyingCourier;
int iCustomType;
int iCount;
int nSystemID;
KeyValues* pEffectKV;
// Advanced particle controlling
byte nRootAttachType;
attachedparticle_toent_t nAttachToEntity;
CCopyableUtlVector<attachedparticlecontrolpoint_t> vecControlPoints;
};
//-----------------------------------------------------------------------------
// Item Attribute
//-----------------------------------------------------------------------------
class IEconItemAttributeDefinition
{
public:
virtual uint16 GetDefinitionIndex( void ) const = 0;
virtual const char *GetDefinitionName( void ) const = 0;
virtual const char *GetDescriptionString( void ) const = 0;
virtual const char *GetAttributeClass( void ) const = 0;
virtual KeyValues* GetRawDefinition( void ) const = 0;
};
//-----------------------------------------------------------------------------
// Loot List
//-----------------------------------------------------------------------------
class IEconLootListDefinition
{
public:
virtual const char *GetName() const = 0;
virtual const CUtlVector<item_list_entry_t>& GetLootListContents() const = 0;
virtual float GetWeight( int iIdx ) const = 0;
virtual KeyValues* GenerateKeyValues() const = 0;
virtual bool IsServerList() const = 0;
// Additional Drops
virtual int GetAdditionalDropCount( void ) const = 0;
virtual bool GetAdditionalDrop( int iIndex, CUtlString& strLootList, float& flChance ) const = 0;
// Random Attributes
virtual int GetRandomAttributeGroupCount( void ) const = 0;
virtual bool GetRandomAttributeGroup( int iIndex, float& flChance, float& flTotalWeight ) const = 0;
virtual int GetRandomAttributeCount( int iGroup ) const = 0;
virtual bool GetRandomAttribute( int iGroup, int iIndex, float& flWeight, int& iValue, int& iDefIndex ) const = 0;
// Editable Interface
virtual void PurgeItems( void ) = 0;
};
//-----------------------------------------------------------------------------
// Item Set
//-----------------------------------------------------------------------------
class IEconItemSetDefinition
{
public:
virtual const char* GetName( void ) const = 0;
virtual const char* GetLocKey( void ) const = 0;
virtual const char* GetUnlocalizedName( void ) const = 0;
virtual int GetBundle( void ) const = 0;
virtual int GetItemCount( void ) const = 0;
virtual int GetItemDef( int iIndex ) const = 0;
virtual int GetItemPaintKit( int iIndex ) const = 0;
virtual item_definition_index_t GetCraftReward( void ) const = 0;
virtual int GetItemRarity( int iIndex ) const = 0;
virtual int GetHighestItemRarityValue( void ) const = 0;
};
//-----------------------------------------------------------------------------
// Static Item Data
//-----------------------------------------------------------------------------
class IEconItemDefinition
{
public:
virtual item_definition_index_t GetDefinitionIndex( void ) const = 0;
virtual const char* GetPrefabName( void ) const = 0;
virtual const char* GetItemBaseName( void ) const = 0;
virtual const char* GetItemTypeName( void ) const = 0;
virtual const char* GetItemDesc( void ) const = 0;
virtual const char* GetInventoryImage( void ) const = 0;
virtual const char* GetBasePlayerDisplayModel() const = 0;
virtual const char* GetWorldDisplayModel() const = 0;
virtual const char* GetExtraWearableModel( void ) const = 0;
virtual int GetLoadoutSlot( void ) const = 0;
virtual KeyValues* GetRawDefinition( void ) const = 0;
virtual int GetHeroID( void ) const = 0;
virtual uint8 GetRarity( void ) const = 0;
virtual const CUtlVector< int >& GetItemSets( void ) const = 0;
virtual int GetBundleItemCount( void ) const = 0;
virtual int GetBundleItem( int iIndex ) const = 0;
virtual bool IsBaseItem( void ) const = 0;
virtual bool IsPublicItem( void ) const = 0;
virtual bool IsBundle( void ) const = 0;
virtual bool IsPackBundle( void ) const = 0;
virtual bool IsPackItem( void ) const = 0;
virtual void BInitVisualBlockFromKV( KeyValues *pKVItem, IEconItemSchema &pschema, CUtlVector<CUtlString> *pVecErrors = NULL ) = 0;
};
//-----------------------------------------------------------------------------
// Item Schema
//-----------------------------------------------------------------------------
class IEconItemSchema
{
public:
// Schema Parsing
virtual bool BInit( const char *fileName, const char *pathID, CUtlVector<CUtlString> *pVecErrors = NULL ) = 0;
virtual bool BInitLootLists( KeyValues *pKVLootLists, KeyValues *pKVRandomAttributeTemplates, CUtlVector<CUtlString> *pVecErrors, bool bServerLists ) = 0;
virtual KeyValues* GetRawDefinition( void ) const = 0;
virtual int GetItemDefinitionCount() = 0;
virtual IEconItemDefinition* GetItemDefinitionInterface( int iDefIndex ) = 0;
virtual IEconItemDefinition* GetDefaultItemDefinitionInterface() = 0;
virtual int GetLoadoutSlotCount() = 0;
virtual const char* GetLoadoutSlotName( int iSlot ) = 0;
virtual int GetLoadoutSlot( const char* pszSlotName ) = 0;
virtual int GetCharacterSlotType( int iCharacter, int iSlot ) = 0;
virtual int GetCharacterID( const char* pszCharacterName ) = 0;
virtual int GetCharacterCount( void ) = 0;
virtual const char* GetCharacterName( int iCharacter ) = 0;
virtual const char* GetCharacterModel( int iCharacter ) = 0;
// Particle Systems
virtual attachedparticlesystem_t* GetAttributeControlledParticleSystem( int id ) = 0;
virtual attachedparticlesystem_t* GetAttributeControlledParticleSystemByIndex( int id ) = 0;
virtual attachedparticlesystem_t* FindAttributeControlledParticleSystem( const char *pchSystemName, int *outID = NULL ) = 0;
virtual int GetNumAttributeControlledParticleSystems() const = 0;
// Quality
virtual int GetQualityDefinitionCount( void ) = 0;
virtual const char* GetQualityName( uint8 iQuality ) = 0;
virtual int GetQualityIndex( const char* pszQuality ) = 0;
// Rarity
virtual int GetRarityDefinitionCount( void ) const = 0;
virtual const char* GetRarityName( uint8 iRarity ) = 0;
virtual const char* GetRarityLocKey( uint8 iRarity ) = 0;
virtual const char* GetRarityColor( uint8 iRarity ) = 0;
virtual const char* GetRarityLootList( uint8 iRarity ) = 0;
virtual int GetRarityIndex( const char* pszRarity ) = 0;
// Attributes
virtual const IEconItemAttributeDefinition *GetAttributeDefinitionInterface( int iAttribIndex ) const = 0;
// Item Sets
virtual int GetItemSetCount( void ) const = 0;
virtual const IEconItemSetDefinition* GetItemSet( int iIndex ) const = 0;
// Loot Lists
virtual void PurgeLootLists( void ) = 0;
virtual const IEconLootListDefinition* GetLootListInterfaceByName( const char* pListName, int *out_piIndex = NULL ) = 0;
virtual const IEconLootListDefinition* GetLootListInterfaceByIndex( int iIdx ) const = 0;
virtual const int GetLootListIndex( const char* pListName ) = 0;
virtual const int GetLootListInterfaceCount( void ) const = 0;
virtual KeyValues *FindDefinitionPrefabByName( const char *pszPrefabName ) const = 0;
// Schema Init, for Editing
virtual attachedparticlesystem_t GetAttachedParticleSystemInfo( KeyValues* pParticleSystemKV, int32 nItemIndex ) const = 0;
virtual bool BInitAttributeControlledParticleSystems( KeyValues *pKVParticleSystems, CUtlVector<CUtlString> *pVecErrors ) = 0;
virtual bool BInitItems( KeyValues *pKVAttributes, CUtlVector<CUtlString> *pVecErrors ) = 0;
virtual bool BInitItemSets( KeyValues *pKVItemSets, CUtlVector<CUtlString> *pVecErrors ) = 0;
virtual bool DeleteItemDefinition( int iDefIndex ) = 0;
// Iterating over the item definitions.
virtual CEconItemDefinition *GetItemDefinitionByName( const char *pszDefName ) = 0;
virtual const CEconItemDefinition *GetItemDefinitionByName( const char *pszDefName ) const = 0;
#if defined(CLIENT_DLL) || defined(GAME_DLL) || defined(CLIENT_EDITOR_DLL)
virtual void ItemTesting_CreateTestDefinition( int iCloneFromItemDef, int iNewDef, KeyValues *pNewKV ) = 0;
virtual void ItemTesting_DiscardTestDefinition( int iDef ) = 0;
#endif
// sound materials
virtual const char* GetSoundMaterialNameByID( int nSoundMaterialID ) = 0;
virtual int GetSoundMaterialID( const char* pszSoundMaterial ) = 0;
// iterating sound materials
virtual int GetSoundMaterialCount( void ) = 0;
virtual int GetSoundMaterialIDByIndex( int nIndex ) = 0; // returns the Nth sound material ID
};
//-----------------------------------------------------------------------------
// Item System
//-----------------------------------------------------------------------------
class IEconItemSystem
{
public:
virtual IEconItemSchema* GetItemSchemaInterface() = 0;
// Item Reservations
virtual void RequestReservedItemDefinitionList() = 0;
virtual void ReserveItemDefinition( uint32 nDefIndex, const char* pszUserName ) = 0;
virtual void ReleaseItemDefReservation( uint32 nDefIndex, const char* pszUserName ) = 0;
};
#endif // __ECON_ITEM_SYSTEM_INTERFACE_H