diff options
Diffstat (limited to 'game/shared/econ/econ_item_preset.h')
| -rw-r--r-- | game/shared/econ/econ_item_preset.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/game/shared/econ/econ_item_preset.h b/game/shared/econ/econ_item_preset.h new file mode 100644 index 0000000..0aa394a --- /dev/null +++ b/game/shared/econ/econ_item_preset.h @@ -0,0 +1,102 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +//=================================================================== + +#ifndef ECONITEMPRESET_H +#define ECONITEMPRESET_H +#ifdef _WIN32 +#pragma once +#endif + +#include "gcsdk/protobufsharedobject.h" +#include "gcsdk/gcclientsdk.h" +#include "base_gcmessages.pb.h" + +#include "econ/econ_item_constants.h" + +namespace GCSDK +{ + class CSQLAccess; +}; + +class CSOClassPresetClientData; + +typedef uint8 equipped_preset_t; + +struct PresetSlotItem_t +{ +#ifdef GC_DLL + DECLARE_CLASS_MEMPOOL( PresetSlotItem_t ); +#endif + + equipped_slot_t m_unSlotID; + itemid_t m_ulItemOriginalID; // Original ID of the item in this slot. We store this instead of the current ID to avoid breaking presets when items get renamed, etc. +}; + +// -------------------------------------------------------------------------- +// Purpose: +// -------------------------------------------------------------------------- +class CEconItemPerClassPresetData : public GCSDK::CSharedObject +{ +#ifdef GC_DLL + DECLARE_CLASS_MEMPOOL( CEconItemPerClassPresetData ); +#endif + +public: + typedef GCSDK::CSharedObject BaseClass; + + const static int k_nTypeID = k_EEconTypeItemPresetInstance; + virtual int GetTypeID() const OVERRIDE { return k_nTypeID; } + + CEconItemPerClassPresetData(); + CEconItemPerClassPresetData( uint32 unAccountID, equipped_class_t unClassID ); + + virtual bool BIsKeyLess( const CSharedObject& soRHS ) const; + +#ifdef GC + virtual bool BYieldingAddInsertToTransaction( GCSDK::CSQLAccess &sqlAccess ) OVERRIDE; + virtual bool BYieldingAddWriteToTransaction( GCSDK::CSQLAccess &sqlAccess, const CUtlVector< int > &fields ) OVERRIDE; + virtual bool BYieldingAddRemoveToTransaction( GCSDK::CSQLAccess &sqlAccess ) OVERRIDE; + virtual bool BAddToMessage( CUtlBuffer & bufOutput ) const OVERRIDE; + virtual bool BAddToMessage( std::string *pBuffer ) const OVERRIDE; + virtual bool BAddDestroyToMessage( CUtlBuffer & bufDestroy ) const OVERRIDE; + virtual bool BAddDestroyToMessage( std::string *pBuffer ) const OVERRIDE; +#endif + + virtual bool BParseFromMessage( const CUtlBuffer & buffer ) OVERRIDE; + virtual bool BParseFromMessage( const std::string &buffer ) OVERRIDE; + virtual bool BUpdateFromNetwork( const CSharedObject & objUpdate ) OVERRIDE; + virtual void Copy( const CSharedObject & soRHS ); + virtual void Dump() const; + + void SerializeToProtoBufItem( CSOClassPresetClientData &msgPresetInstance ) const; + void DeserializeFromProtoBufItem( const CSOClassPresetClientData &msgPresetIntance ); + + enum + { + kPerClassPresetDataDirtyField_ActivePreset, + kPerClassPresetDataDirtyField_PresetData_Base, + }; + +#ifdef GC_DLL + const CUtlVector<PresetSlotItem_t> *FindItemsForPresetIndex( equipped_preset_t unPreset ) const; + void EquipItemIntoActivePresetSlot( equipped_slot_t unSlot, itemid_t unOriginalItemID ); + void RemoveAllItemsFromPresetIndex( equipped_preset_t unPreset ); + + void SetActivePreset( equipped_preset_t unPreset ); + equipped_class_t GetClass() const { return m_unClassID; } +#endif // GC_DLL + equipped_preset_t GetActivePreset() const { return m_unActivePreset; } + +private: + CEconItemPerClassPresetData( const CEconItemPerClassPresetData& ) = delete; + void operator=( const CEconItemPerClassPresetData& ) = delete; + +private: + uint32 m_unAccountID; + equipped_class_t m_unClassID; + equipped_preset_t m_unActivePreset; + CUtlVector<PresetSlotItem_t> m_PresetData[ CEconItemSchema::kMaxItemPresetCount ]; +}; + +#endif // ECONITEMPRESET_H |