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.
102 lines
3.4 KiB
102 lines
3.4 KiB
//========= 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
|