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
165 lines
4.8 KiB
//========= 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
|
|
|