//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef STORE_PREVIEW_ITEM_H #define STORE_PREVIEW_ITEM_H #ifdef _WIN32 #pragma once #endif #include #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 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