//========= 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 *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 m_PresetData[ CEconItemSchema::kMaxItemPresetCount ]; }; #endif // ECONITEMPRESET_H