summaryrefslogtreecommitdiff
path: root/game/client/econ/store/store_preview_item.h
diff options
context:
space:
mode:
Diffstat (limited to 'game/client/econ/store/store_preview_item.h')
-rw-r--r--game/client/econ/store/store_preview_item.h100
1 files changed, 100 insertions, 0 deletions
diff --git a/game/client/econ/store/store_preview_item.h b/game/client/econ/store/store_preview_item.h
new file mode 100644
index 0000000..6493b0c
--- /dev/null
+++ b/game/client/econ/store/store_preview_item.h
@@ -0,0 +1,100 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef STORE_PREVIEW_ITEM_H
+#define STORE_PREVIEW_ITEM_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui_controls/Panel.h>
+#include "econ_controls.h"
+#include "store_page.h"
+
+enum preview_state_t
+{
+ PS_ITEM,
+ PS_PLAYER,
+ PS_DETAILS,
+};
+
+//-----------------------------------------------------------------------------
+// Purpose: Button that handles the rotation of the preview model.
+//-----------------------------------------------------------------------------
+class CPreviewRotButton : public CExButton
+{
+ DECLARE_CLASS_SIMPLE( CPreviewRotButton, CExButton );
+public:
+ CPreviewRotButton( vgui::Panel *parent, const char *name, const char *text, vgui::Panel *pActionSignalTarget = NULL, const char *cmd = NULL ) :
+ CExButton( parent, name, text, pActionSignalTarget, cmd )
+ {
+ }
+ CPreviewRotButton( vgui::Panel *parent, const char *name, const wchar_t *wszText, vgui::Panel *pActionSignalTarget = NULL, const char *cmd = NULL ) :
+ CExButton( parent, name, wszText, pActionSignalTarget, cmd )
+ {
+ }
+
+ virtual void OnMousePressed(vgui::MouseCode code);
+ virtual void OnMouseReleased(vgui::MouseCode code);
+
+ // Our fire action signal does nothing, because it's all done in mouse pressed/released
+ virtual void FireActionSignal( void ) { return; }
+};
+
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CStorePreviewItemPanel : public vgui::EditablePanel
+{
+ DECLARE_CLASS_SIMPLE( CStorePreviewItemPanel, vgui::EditablePanel );
+public:
+ CStorePreviewItemPanel( vgui::Panel *pParent, const char *pResFile, const char *pPanelName, CStorePage *pOwner );
+ virtual ~CStorePreviewItemPanel();
+
+ CStorePage *GetOwningStorePage() { return m_pOwner; }
+
+ virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
+ virtual void OnCommand( const char *command );
+ virtual void PerformLayout( void );
+ virtual void OnTick( void );
+
+ virtual void PreviewItem( int iClass, CEconItemView *pItem, const econ_store_entry_t* pEntry=NULL );
+ virtual void SetState( preview_state_t iState );
+
+ // Subclass interface.
+ virtual int GetPreviewTeam() const { return 0; }
+
+ MESSAGE_FUNC_PARAMS( OnRotButtonDown, "RotButtonDown", data );
+ MESSAGE_FUNC( OnRotButtonUp, "RotButtonUp" );
+
+ MESSAGE_FUNC_PARAMS( OnItemIconSelected, "ItemIconSelected", data );
+
+protected:
+ virtual void UpdateIcons( void );
+
+protected:
+ const char *m_pResFile;
+ CUtlVector<CStorePreviewItemIcon*> m_pItemIcons;
+
+ int m_iCurrentIconPosition;
+
+ CEconItemDetailsRichText *m_pDataTextRichText;
+ CItemModelPanel *m_pItemFullImage;
+
+ CEconItemView m_item;
+ preview_state_t m_iState;
+
+ int m_iCurrentRotation;
+ CExButton *m_pIconsMoveLeftButton;
+ CExButton *m_pIconsMoveRightButton;
+
+ CStorePage *m_pOwner;
+};
+
+#endif // STORE_PREVIEW_ITEM_H