summaryrefslogtreecommitdiff
path: root/game/shared/econ/econ_item_preset.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/shared/econ/econ_item_preset.h')
-rw-r--r--game/shared/econ/econ_item_preset.h102
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