diff options
Diffstat (limited to 'game/client/econ/econ_ui.h')
| -rw-r--r-- | game/client/econ/econ_ui.h | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/game/client/econ/econ_ui.h b/game/client/econ/econ_ui.h new file mode 100644 index 0000000..99c86e0 --- /dev/null +++ b/game/client/econ/econ_ui.h @@ -0,0 +1,165 @@ +//========= 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 |