//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef ECON_UI_H #define ECON_UI_H #ifdef _WIN32 #pragma once #endif enum EconBaseUIPanels_t { ECONUI_BASEUI = 0, ECONUI_BACKPACK, ECONUI_CRAFTING, ECONUI_ARMORY, ECONUI_TRADING, ECONUI_LOADOUT, ECONUI_FIRST_PANEL = ECONUI_BASEUI, ECONUI_LAST_PANEL = ECONUI_LOADOUT }; class CBackpackPanel; class CCraftingPanel; class CItemPickupPanel; class CItemDiscardPanel; class CStorePanel; struct cart_item_t; namespace vgui { class Panel; }; // Interface used to connect to the game specific implementations of the Economy UI abstract_class IEconRootUI { public: // Open the EconUI, optionally to a specific page (Backpack/Crafting/etc) // If bCheckForInventorySpaceOnExit is set, On closing the EconUI should make sure the user doesn't // have to throw out any items to make room in their inventory. virtual IEconRootUI *OpenEconUI( int iDirectToPage = 0, bool bCheckForInventorySpaceOnExit = false ) = 0; // Close the EconUI, and any associated sub panels. virtual void CloseEconUI( void ) = 0; // Return true if the specified EconUI sub panel is currently visible. virtual bool IsUIPanelVisible( EconBaseUIPanels_t iPanel ) = 0; // Some part of the EconUI might be in a state where they want to prevent the user // from being able to close the EconUI (in the middle of a trade, for instance) virtual void SetPreventClosure( bool bPrevent ) = 0; // Sub panel access. // These are panels that are parented to the root EconUI. virtual CBackpackPanel *GetBackpackPanel( void ) = 0; virtual CCraftingPanel *GetCraftingPanel( void ) = 0; // Gamestats access (We should replace these with an Econ Gamestats) virtual void Gamestats_ItemTransaction( int eventID, CEconItemView *item, const char *pszReason = NULL, int iQuality = 0 ) = 0; virtual void Gamestats_Store( int eventID, CEconItemView* item=NULL, const char* panelName=NULL, 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; virtual void SetExperimentValue( uint64 experimentValue ) = 0; // Open separate economy panels (they're not parented to the root EconUI) // This is here so that games can customize the implementation of these panels. virtual CItemPickupPanel *OpenItemPickupPanel( void ) = 0; virtual CItemDiscardPanel *OpenItemDiscardPanel( void ) = 0; // Store virtual void CreateStorePanel( void ) = 0; virtual CStorePanel *OpenStorePanel( int iItemDef, bool bAddToCart ) = 0; virtual CStorePanel *GetStorePanel( void ) = 0; // When the root UI is closed, send an "EconUIClosed" message to pListener. virtual void AddPanelCloseListener( vgui::Panel *pListener ) = 0; // 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 virtual void SetClosePanel( int iPanel ) = 0; // Call this to set which team the class loadout should display virtual void SetDefaultTeam( int iTeam ) = 0; }; extern IEconRootUI *EconUI( void ); // IDs for Item related events in Gamestats tracking enum ITEMEVENTS { // STORE EVENTS IE_STORE_ENTERED, IE_STORE_EXITED, IE_STORE_TAB_CHANGED, IE_STORE_ITEM_SELECTED, IE_STORE_ITEM_PREVIEWED, IE_STORE_ITEM_ADDED_TO_CART, IE_STORE_ITEM_REMOVED_FROM_CART, IE_STORE_CHECKOUT_ATTEMPT, IE_STORE_CHECKOUT_FAILURE, IE_STORE_CHECKOUT_SUCCESS, IE_STORE_CHECKOUT_ITEM, // LOADOUT EVENTS IE_LOADOUT_ENTERED, IE_LOADOUT_EXITED, // TRADING EVENTS IE_TRADING_ENTERED, IE_TRADING_EXITED, IE_TRADING_WENT_TO_ARMORY, IE_TRADING_RETURNED_FROM_ARMORY, IE_TRADING_REQUEST_SENT, IE_TRADING_REQUEST_RECEIVED, IE_TRADING_REQUEST_REJECTED, IE_TRADING_REQUEST_ACCEPTED, IE_TRADING_TRADE_NEGOTIATED, IE_TRADING_TRADE_SUCCESS, IE_TRADING_TRADE_FAILURE, IE_TRADING_ITEM_GIVEN, IE_TRADING_ITEM_RECEIVED, IE_TRADING_ITEM_GIFTED, // CRAFTING EVENTS IE_CRAFTING_ENTERED, IE_CRAFTING_EXITED, IE_CRAFTING_WENT_TO_ARMORY, IE_CRAFTING_RETURNED_FROM_ARMORY, IE_CRAFTING_VIEW_BLUEPRINTS, IE_CRAFTING_TIMEOUT, IE_CRAFTING_FAILURE, IE_CRAFTING_SUCCESS, IE_CRAFTING_NO_RECIPE_MATCH, IE_CRAFTING_ATTEMPT, IE_CRAFTING_RECIPE_FOUND, // ARMORY EVENTS IE_ARMORY_ENTERED, IE_ARMORY_EXITED, IE_ARMORY_SELECT_ITEM, IE_ARMORY_BROWSE_WIKI, IE_ARMORY_CHANGE_FILTER, // TRANSACTION EVENTS IE_ITEM_RECEIVED, IE_ITEM_DISCARDED, IE_ITEM_DELETED, IE_ITEM_USED_TOOL, IE_ITEM_USED_CONSUMABLE, IE_ITEM_REMOVED_ATTRIB, IE_ITEM_CHANGED_STYLE, // NEW STORE EVENTS IE_STORE2_ENTERED, // This gets written *in addition* to IE_STORE_ENTERED // THESE STORED AS INTEGERS IN THE DATABASE SO THESE ARE NEW IE_ITEM_RESET_STRANGE_COUNTERS, IE_ITEM_PUT_INTO_COLLECTION, IE_COUNT, }; #endif // ECON_UI_H