Team Fortress 2 Source Code as on 22/4/2020
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.

225 lines
8.3 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef COLLECTION_CRAFTING_PANEL_H
  8. #define COLLECTION_CRAFTING_PANEL_H
  9. #ifdef _WIN32
  10. #pragma once
  11. #endif
  12. #include "backpack_panel.h"
  13. #include "vgui_controls/ScrollableEditablePanel.h"
  14. #include "tf_gcmessages.h"
  15. #include "econ_gcmessages.h"
  16. #include "tf_imagepanel.h"
  17. #include "tf_controls.h"
  18. #include "item_selection_panel.h"
  19. #include "drawing_panel.h"
  20. #include "local_steam_shared_object_listener.h"
  21. //-----------------------------------------------------------------------------
  22. // Purpose:
  23. //-----------------------------------------------------------------------------
  24. class CCollectionCraftingSelectionPanel : public CItemCriteriaSelectionPanel
  25. {
  26. DECLARE_CLASS_SIMPLE( CCollectionCraftingSelectionPanel, CItemCriteriaSelectionPanel );
  27. public:
  28. CCollectionCraftingSelectionPanel( Panel *pParent ) : BaseClass( pParent, NULL ) {}
  29. void SetCorrespondingItems( CCopyableUtlVector< const CEconItemView* >& vecSelectedItems )
  30. {
  31. m_vecCorrespondingItems = vecSelectedItems;
  32. }
  33. void ApplySchemeSettings( vgui::IScheme *pScheme )
  34. {
  35. BaseClass::ApplySchemeSettings( pScheme );
  36. vgui::Label* pWeaponLabel = dynamic_cast<vgui::Label*>( FindChildByName( "ItemSlotLabel" ) );
  37. if ( pWeaponLabel )
  38. {
  39. pWeaponLabel->SetVisible( false );
  40. }
  41. }
  42. //-----------------------------------------------------------------------------
  43. virtual const char *GetSelectionInvalidReason( const IEconItemInterface *pTestItem, const IEconItemInterface *pSourceItem ) const
  44. {
  45. return GetCollectionCraftingInvalidReason( pTestItem, pSourceItem );
  46. }
  47. //-----------------------------------------------------------------------------
  48. // Purpose:
  49. //-----------------------------------------------------------------------------
  50. const char *GetItemNotSelectableReason( const CEconItemView *pItem ) const
  51. {
  52. if ( !pItem )
  53. return NULL;
  54. const CEconItemView* pSourceItem = m_vecCorrespondingItems.Count() ? m_vecCorrespondingItems[0] : NULL;
  55. FOR_EACH_VEC( m_vecCorrespondingItems, i )
  56. {
  57. if ( pItem->GetItemID() == m_vecCorrespondingItems[i]->GetItemID() )
  58. {
  59. return "#TF_StrangeCount_Transfer_Self";
  60. }
  61. }
  62. return GetSelectionInvalidReason( pItem, pSourceItem );
  63. }
  64. virtual bool ShouldDeleteOnClose( void ) OVERRIDE{ return false; }
  65. protected:
  66. const char * m_pszTitleToken;
  67. CUtlVector< const CEconItemView* > m_vecCorrespondingItems;
  68. };
  69. //-----------------------------------------------------------------------------
  70. // A panel to let users choose 10 weapons to craft up within collections
  71. //-----------------------------------------------------------------------------
  72. class CCollectionCraftingPanel : public vgui::EditablePanel, public CGameEventListener, public CLocalSteamSharedObjectListener
  73. {
  74. public:
  75. DECLARE_CLASS_SIMPLE( CCollectionCraftingPanel, vgui::EditablePanel );
  76. CCollectionCraftingPanel( vgui::Panel *parent, CItemModelPanelToolTip* pTooltip );
  77. ~CCollectionCraftingPanel( void );
  78. virtual const char *GetResFile( void ) { return "Resource/UI/econ/CollectionCraftingDialog.res"; }
  79. virtual void ApplySchemeSettings( vgui::IScheme *pScheme );
  80. virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE;
  81. virtual void PerformLayout() OVERRIDE;
  82. virtual void FireGameEvent( IGameEvent *event ) OVERRIDE;
  83. virtual void OnCommand( const char *command ) OVERRIDE;
  84. virtual void SetVisible( bool bVisible ) OVERRIDE;
  85. virtual void SOCreated( const CSteamID & steamIDOwner, const GCSDK::CSharedObject *pObject, GCSDK::ESOCacheEvent eEvent ) OVERRIDE;
  86. virtual void Show( CUtlVector< const CEconItemView* >& vecStartingItems );
  87. void SetWaitingForItem( eEconItemOrigin eOrigin );
  88. virtual int GetInputItemCount() { return COLLECTION_CRAFTING_ITEM_COUNT; }
  89. virtual int GetOutputItemCount() { return 0; } // For Ui Display Purposes
  90. MESSAGE_FUNC_PTR( OnItemPanelMousePressed, "ItemPanelMousePressed", panel );
  91. MESSAGE_FUNC_PARAMS( OnSelectionReturned, "SelectionReturned", data );
  92. protected:
  93. virtual void SetItemPanelCount( );
  94. virtual void CreateSelectionPanel();
  95. virtual void CreateItemPanels();
  96. void SelectPanel( int nPanel );
  97. void UpdateOKButton();
  98. void SetItem( const CEconItemView* pItem, int nIndex );
  99. virtual void OnThink() OVERRIDE;
  100. CItemModelPanelToolTip *m_pMouseOverTooltip;
  101. DHANDLE<CCollectionCraftingSelectionPanel> m_hSelectionPanel;
  102. CExButton *m_pOKButton;
  103. CExButton *m_pNextItemButton;
  104. EditablePanel* m_pTradeUpContainer;
  105. CItemModelPanel* m_pSelectingItemModelPanel;
  106. CUtlVector< EditablePanel* > m_vecItemContainers;
  107. CUtlVector< ImagePanel* > m_vecImagePanels;
  108. CUtlVector< CItemModelPanel* > m_vecItemPanels;
  109. CUtlVector< EditablePanel* > m_vecOutputItemContainers;
  110. CUtlVector< ImagePanel* > m_vecOutputImagePanels;
  111. CUtlVector< CItemModelPanel* > m_vecOutputItemPanels;
  112. CUtlVector< CUtlString > m_vecBoxTopNames;
  113. CUtlVector< CUtlString > m_vecStampNames;
  114. CUtlVector< CUtlString > m_vecResultStrings;
  115. struct LocalizedPanelAction_t
  116. {
  117. CUtlString m_strPanel;
  118. bool m_bShowForEnglish;
  119. };
  120. CUtlVector< LocalizedPanelAction_t > m_vecLocalizedPanels;
  121. CBaseModelPanel *m_pModelPanel;
  122. ImagePanel* m_pStampPanel;
  123. CExButton* m_pStampButton;
  124. CDrawingPanel *m_pDrawingPanel;
  125. CTFItemInspectionPanel *m_pInspectPanel;
  126. CItemModelPanel* m_pCosmeticResultItemModelPanel;
  127. CItemModelPanel* m_pItemNamePanel;
  128. KeyValues* m_pKVItemPanels;
  129. bool m_bWaitingForGCResponse;
  130. RealTimeCountdownTimer m_timerResponse;
  131. CUtlVector<itemid_t> m_nFoundItemID;
  132. bool m_bEnvelopeReadyToSend;
  133. bool m_bShowing;
  134. bool m_bShowImmediately;
  135. eEconItemOrigin m_eEconItemOrigin;
  136. CPanelAnimationVarAliasType( int, m_iButtonsStartX, "buttons_start_x", "0", "proportional_int" );
  137. CPanelAnimationVarAliasType( int, m_iButtonsStartY, "buttons_start_y", "0", "proportional_int" );
  138. CPanelAnimationVarAliasType( int, m_iButtonsStepX, "buttons_step_x", "0", "proportional_int" );
  139. CPanelAnimationVarAliasType( int, m_iButtonsStepY, "buttons_step_y", "0", "proportional_int" );
  140. CPanelAnimationVarAliasType( int, m_iOutputItemStartX, "output_start_x", "0", "proportional_int" );
  141. CPanelAnimationVarAliasType( int, m_iOutputItemStartY, "output_start_y", "0", "proportional_int" );
  142. CPanelAnimationVarAliasType( int, m_iOutputItemStepX, "output_step_x", "0", "proportional_int" );
  143. CPanelAnimationVarAliasType( int, m_iOutputItemStepY, "output_step_y", "0", "proportional_int" );
  144. CPanelAnimationVarAliasType( float, m_flSlideInTime, "slide_in_time", "1.0", "float" );
  145. CPanelAnimationVarAliasType( int, m_iBGContainerTargetY, "bg_target_y", "0", "proportional_int" );
  146. };
  147. //-----------------------------------------------------------------------------
  148. // Purpose:
  149. //-----------------------------------------------------------------------------
  150. class CStatClockCraftingSelectionPanel : public CCollectionCraftingSelectionPanel
  151. {
  152. DECLARE_CLASS_SIMPLE( CStatClockCraftingSelectionPanel, CCollectionCraftingSelectionPanel );
  153. public:
  154. CStatClockCraftingSelectionPanel( Panel *pParent ) : BaseClass( pParent ) {}
  155. //-----------------------------------------------------------------------------
  156. virtual const char *GetSelectionInvalidReason( const IEconItemInterface *pTestItem, const IEconItemInterface *pSourceItem ) const
  157. {
  158. return GetCraftCommonStatClockInvalidReason( pTestItem, pSourceItem ); // FIX ME
  159. }
  160. };
  161. //-----------------------------------------------------------------------------
  162. // A panel to let users choose 10 weapons to craft up within collections
  163. //-----------------------------------------------------------------------------
  164. class CCraftCommonStatClockPanel : public CCollectionCraftingPanel
  165. {
  166. public:
  167. DECLARE_CLASS_SIMPLE( CCraftCommonStatClockPanel, CCollectionCraftingPanel );
  168. CCraftCommonStatClockPanel( vgui::Panel *parent, CItemModelPanelToolTip* pTooltip );
  169. ~CCraftCommonStatClockPanel( void );
  170. virtual const char *GetResFile( void ) { return "Resource/UI/econ/MannCoTrade_CommonStatClock.res"; }
  171. virtual void OnCommand( const char *command ) OVERRIDE;
  172. virtual int GetInputItemCount() { return CRAFT_COMMON_STATCLOCK_ITEM_COUNT; }
  173. virtual int GetOutputItemCount() { return 1; }
  174. virtual void Show( CUtlVector< const CEconItemView* >& vecStartingItems );
  175. protected:
  176. virtual void CreateSelectionPanel();
  177. CEconItemView m_outputItem;
  178. };
  179. #endif // COLLECTION_CRAFTING_PANEL_H