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.

165 lines
4.8 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #ifndef ECON_UI_H
  8. #define ECON_UI_H
  9. #ifdef _WIN32
  10. #pragma once
  11. #endif
  12. enum EconBaseUIPanels_t
  13. {
  14. ECONUI_BASEUI = 0,
  15. ECONUI_BACKPACK,
  16. ECONUI_CRAFTING,
  17. ECONUI_ARMORY,
  18. ECONUI_TRADING,
  19. ECONUI_LOADOUT,
  20. ECONUI_FIRST_PANEL = ECONUI_BASEUI,
  21. ECONUI_LAST_PANEL = ECONUI_LOADOUT
  22. };
  23. class CBackpackPanel;
  24. class CCraftingPanel;
  25. class CItemPickupPanel;
  26. class CItemDiscardPanel;
  27. class CStorePanel;
  28. struct cart_item_t;
  29. namespace vgui
  30. {
  31. class Panel;
  32. };
  33. // Interface used to connect to the game specific implementations of the Economy UI
  34. abstract_class IEconRootUI
  35. {
  36. public:
  37. // Open the EconUI, optionally to a specific page (Backpack/Crafting/etc)
  38. // If bCheckForInventorySpaceOnExit is set, On closing the EconUI should make sure the user doesn't
  39. // have to throw out any items to make room in their inventory.
  40. virtual IEconRootUI *OpenEconUI( int iDirectToPage = 0, bool bCheckForInventorySpaceOnExit = false ) = 0;
  41. // Close the EconUI, and any associated sub panels.
  42. virtual void CloseEconUI( void ) = 0;
  43. // Return true if the specified EconUI sub panel is currently visible.
  44. virtual bool IsUIPanelVisible( EconBaseUIPanels_t iPanel ) = 0;
  45. // Some part of the EconUI might be in a state where they want to prevent the user
  46. // from being able to close the EconUI (in the middle of a trade, for instance)
  47. virtual void SetPreventClosure( bool bPrevent ) = 0;
  48. // Sub panel access.
  49. // These are panels that are parented to the root EconUI.
  50. virtual CBackpackPanel *GetBackpackPanel( void ) = 0;
  51. virtual CCraftingPanel *GetCraftingPanel( void ) = 0;
  52. // Gamestats access (We should replace these with an Econ Gamestats)
  53. virtual void Gamestats_ItemTransaction( int eventID, CEconItemView *item, const char *pszReason = NULL, int iQuality = 0 ) = 0;
  54. virtual void Gamestats_Store( int eventID, CEconItemView* item=NULL, const char* panelName=NULL,
  55. int classId=0, const cart_item_t* in_cartItem=NULL, int in_checkoutAttempts=0, const char* storeError=NULL, int in_totalPrice=0, int in_currencyCode=0 ) = 0;
  56. virtual void SetExperimentValue( uint64 experimentValue ) = 0;
  57. // Open separate economy panels (they're not parented to the root EconUI)
  58. // This is here so that games can customize the implementation of these panels.
  59. virtual CItemPickupPanel *OpenItemPickupPanel( void ) = 0;
  60. virtual CItemDiscardPanel *OpenItemDiscardPanel( void ) = 0;
  61. // Store
  62. virtual void CreateStorePanel( void ) = 0;
  63. virtual CStorePanel *OpenStorePanel( int iItemDef, bool bAddToCart ) = 0;
  64. virtual CStorePanel *GetStorePanel( void ) = 0;
  65. // When the root UI is closed, send an "EconUIClosed" message to pListener.
  66. virtual void AddPanelCloseListener( vgui::Panel *pListener ) = 0;
  67. // The panel at which we want back to actually close the UI - defaults to the root panel - a negative value can be passed in for class loadout panels
  68. virtual void SetClosePanel( int iPanel ) = 0;
  69. // Call this to set which team the class loadout should display
  70. virtual void SetDefaultTeam( int iTeam ) = 0;
  71. };
  72. extern IEconRootUI *EconUI( void );
  73. // IDs for Item related events in Gamestats tracking
  74. enum ITEMEVENTS
  75. {
  76. // STORE EVENTS
  77. IE_STORE_ENTERED,
  78. IE_STORE_EXITED,
  79. IE_STORE_TAB_CHANGED,
  80. IE_STORE_ITEM_SELECTED,
  81. IE_STORE_ITEM_PREVIEWED,
  82. IE_STORE_ITEM_ADDED_TO_CART,
  83. IE_STORE_ITEM_REMOVED_FROM_CART,
  84. IE_STORE_CHECKOUT_ATTEMPT,
  85. IE_STORE_CHECKOUT_FAILURE,
  86. IE_STORE_CHECKOUT_SUCCESS,
  87. IE_STORE_CHECKOUT_ITEM,
  88. // LOADOUT EVENTS
  89. IE_LOADOUT_ENTERED,
  90. IE_LOADOUT_EXITED,
  91. // TRADING EVENTS
  92. IE_TRADING_ENTERED,
  93. IE_TRADING_EXITED,
  94. IE_TRADING_WENT_TO_ARMORY,
  95. IE_TRADING_RETURNED_FROM_ARMORY,
  96. IE_TRADING_REQUEST_SENT,
  97. IE_TRADING_REQUEST_RECEIVED,
  98. IE_TRADING_REQUEST_REJECTED,
  99. IE_TRADING_REQUEST_ACCEPTED,
  100. IE_TRADING_TRADE_NEGOTIATED,
  101. IE_TRADING_TRADE_SUCCESS,
  102. IE_TRADING_TRADE_FAILURE,
  103. IE_TRADING_ITEM_GIVEN,
  104. IE_TRADING_ITEM_RECEIVED,
  105. IE_TRADING_ITEM_GIFTED,
  106. // CRAFTING EVENTS
  107. IE_CRAFTING_ENTERED,
  108. IE_CRAFTING_EXITED,
  109. IE_CRAFTING_WENT_TO_ARMORY,
  110. IE_CRAFTING_RETURNED_FROM_ARMORY,
  111. IE_CRAFTING_VIEW_BLUEPRINTS,
  112. IE_CRAFTING_TIMEOUT,
  113. IE_CRAFTING_FAILURE,
  114. IE_CRAFTING_SUCCESS,
  115. IE_CRAFTING_NO_RECIPE_MATCH,
  116. IE_CRAFTING_ATTEMPT,
  117. IE_CRAFTING_RECIPE_FOUND,
  118. // ARMORY EVENTS
  119. IE_ARMORY_ENTERED,
  120. IE_ARMORY_EXITED,
  121. IE_ARMORY_SELECT_ITEM,
  122. IE_ARMORY_BROWSE_WIKI,
  123. IE_ARMORY_CHANGE_FILTER,
  124. // TRANSACTION EVENTS
  125. IE_ITEM_RECEIVED,
  126. IE_ITEM_DISCARDED,
  127. IE_ITEM_DELETED,
  128. IE_ITEM_USED_TOOL,
  129. IE_ITEM_USED_CONSUMABLE,
  130. IE_ITEM_REMOVED_ATTRIB,
  131. IE_ITEM_CHANGED_STYLE,
  132. // NEW STORE EVENTS
  133. IE_STORE2_ENTERED, // This gets written *in addition* to IE_STORE_ENTERED
  134. // THESE STORED AS INTEGERS IN THE DATABASE SO THESE ARE NEW
  135. IE_ITEM_RESET_STRANGE_COUNTERS,
  136. IE_ITEM_PUT_INTO_COLLECTION,
  137. IE_COUNT,
  138. };
  139. #endif // ECON_UI_H