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.
290 lines
8.6 KiB
290 lines
8.6 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TF_HUD_MAINMENUOVERRIDE_H |
|
#define TF_HUD_MAINMENUOVERRIDE_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include <vgui_controls/EditablePanel.h> |
|
#include <vgui_controls/ScrollableEditablePanel.h> |
|
#include <game/client/iviewport.h> |
|
#include <vgui/IScheme.h> |
|
#include <vgui/ISurface.h> |
|
#include "hud.h" |
|
#include "hudelement.h" |
|
#include "tf_shareddefs.h" |
|
#include "vgui_avatarimage.h" |
|
#include "tf_imagepanel.h" |
|
#include "tf_gamestats_shared.h" |
|
#include "tf_controls.h" |
|
#include "item_model_panel.h" |
|
#include "motd.h" |
|
#include "gcsdk/gcclientsdk.h" |
|
#include "quest_log_panel.h" |
|
#include "local_steam_shared_object_listener.h" |
|
|
|
using namespace vgui; |
|
using namespace GCSDK; |
|
|
|
class CExButton; |
|
class HTML; |
|
class CSaxxyAwardsPanel; |
|
class CTFStreamListPanel; |
|
class CLobbyContainerFrame_Comp; |
|
class CLobbyContainerFrame_MvM; |
|
class CLobbyContainerFrame_Casual; |
|
|
|
enum mm_button_styles |
|
{ |
|
MMBS_NORMAL = 0, |
|
MMBS_SUBBUTTON = 1, |
|
MMBS_CUSTOM, |
|
}; |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
class CHudMainMenuOverride : public vgui::EditablePanel, public IViewPortPanel, public CGameEventListener, public CLocalSteamSharedObjectListener |
|
{ |
|
DECLARE_CLASS_SIMPLE( CHudMainMenuOverride, vgui::EditablePanel ); |
|
|
|
enum mm_highlight_anims |
|
{ |
|
MMHA_TUTORIAL = 0, |
|
MMHA_PRACTICE, |
|
MMHA_NEWUSERFORUM, |
|
MMHA_OPTIONS, |
|
MMHA_LOADOUT, |
|
MMHA_STORE, |
|
MMHA_WAR, |
|
|
|
NUM_ANIMS |
|
}; |
|
|
|
public: |
|
CHudMainMenuOverride( IViewPort *pViewPort ); |
|
~CHudMainMenuOverride( void ); |
|
|
|
void AttachToGameUI( void ); |
|
virtual const char *GetName( void ){ return PANEL_MAINMENUOVERRIDE; } |
|
virtual void SetData( KeyValues *data ){} |
|
virtual void Reset(){ Update(); SetVisible( true ); } |
|
virtual void Update() { return; } |
|
virtual bool NeedsUpdate( void ){ return false; } |
|
virtual bool HasInputElements( void ){ return true; } |
|
virtual void ShowPanel( bool bShow ) { SetVisible( true ); } // Refuses to hide |
|
|
|
// both vgui::Frame and IViewPortPanel define these, so explicitly define them here as passthroughs to vgui |
|
vgui::VPANEL GetVPanel( void ){ return BaseClass::GetVPanel(); } |
|
virtual bool IsVisible(); |
|
virtual void SetParent( vgui::VPANEL parent ){ BaseClass::SetParent( parent ); } |
|
|
|
virtual void ApplySettings( KeyValues *inResourceData ); |
|
virtual void ApplySchemeSettings( IScheme *scheme ); |
|
virtual void PerformLayout( void ); |
|
|
|
void OnCommand( const char *command ); |
|
|
|
void OnKeyCodePressed( KeyCode code ); |
|
|
|
void LoadMenuEntries( void ); |
|
void RemoveAllMenuEntries( void ); |
|
virtual void FireGameEvent( IGameEvent *event ); |
|
|
|
void LoadCharacterImageFile( void ); |
|
|
|
void UpdateNotifications(); |
|
void SetNotificationsButtonVisible( bool bVisible ); |
|
void SetNotificationsPanelVisible( bool bVisible ); |
|
void AdjustNotificationsPanelHeight(); |
|
|
|
void SetMOTDButtonVisible( bool bVisible ); |
|
void SetMOTDVisible( bool bVisible ); |
|
void SetQuestLogVisible( bool bVisible ); |
|
void SetWatchStreamVisible( bool bVisible ); |
|
void OpenMvMMMPanel(); |
|
void OpenCompMMPanel(); |
|
void OpenCasualMMPanel(); |
|
void ReloadMMPanels(); |
|
void UpdateMOTD( bool bNewMOTDs ); |
|
bool ReloadedAllMOTDs( void ) { return m_bReloadedAllMOTDs; } |
|
CMOTDManager & GetMOTDManager() { return m_MOTDManager; } |
|
RTime32 GetLastMOTDRequestTime( void ) { return m_nLastMOTDRequestAt; } |
|
ELanguage GetLastMOTDRequestLanguage( void ) { return m_nLastMOTDRequestLanguage; } |
|
|
|
void UpdatePromotionalCodes( void ); |
|
|
|
void CheckTrainingStatus( void ); |
|
void StartHighlightAnimation( mm_highlight_anims iAnim ); |
|
void HideHighlight( mm_highlight_anims iAnim ); |
|
|
|
MESSAGE_FUNC( OnUpdateMenu, "UpdateMenu" ); |
|
MESSAGE_FUNC_PARAMS( OnConfirm, "ConfirmDlgResult", data ); |
|
|
|
void ScheduleTrainingCheck( bool bWasInTraining ) { m_flCheckTrainingAt = (engine->Time() + 1.5); m_bWasInTraining = bWasInTraining; } |
|
void ScheduleItemCheck( void ) { m_flCheckUnclaimedItems = (engine->Time() + 1.5); } |
|
|
|
void CheckUnclaimedItems(); |
|
|
|
void OnTick(); |
|
|
|
virtual GameActionSet_t GetPreferredActionSet() { return GAME_ACTION_SET_NONE; } // Seems like this should be GAME_ACTION_SET_MENU, but it's not because it's apparently visible *all* *the* *damn* *time* |
|
|
|
#ifdef _DEBUG |
|
void Refresh(); |
|
#endif |
|
void CheckForNewQuests( void ); |
|
void UpdatePlaylistEntries( void ); |
|
|
|
virtual void SOCreated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE { SOEvent( pObject ); } |
|
virtual void SOUpdated( const CSteamID & steamIDOwner, const CSharedObject *pObject, ESOCacheEvent eEvent ) OVERRIDE { SOEvent( pObject ); } |
|
|
|
CLobbyContainerFrame_Comp* GetCompLobbyPanel(); |
|
CLobbyContainerFrame_MvM* GetMvMLobbyPanel(); |
|
CLobbyContainerFrame_Casual* GetCasualLobbyPanel(); |
|
|
|
#ifdef STAGING_ONLY |
|
void GenerateIconsThink( void ); |
|
void GenerateIcons( bool bLarge, int min = -1, int max = -1 ); |
|
|
|
bool m_bGeneratingIcons; |
|
bool m_bGeneratingLargeTestIcons; |
|
CEconItemView *m_pIconData; |
|
CUtlVector< item_definition_index_t > m_vecIconDefs; |
|
#endif |
|
|
|
protected: |
|
virtual void PaintTraverse( bool Repaint, bool allowForce = true ) OVERRIDE; |
|
|
|
private: |
|
|
|
void SOEvent( const CSharedObject* pObject ); |
|
|
|
void PerformKeyRebindings( void ); |
|
void TogglePlayListMenu( void ); |
|
|
|
bool CheckAndWarnForPREC( void ); |
|
void StopUpdateGlow(); |
|
|
|
private: |
|
|
|
// Store |
|
CItemModelPanel *m_pFeaturedItemPanel; |
|
CItemModelPanel *m_pFeaturedItemMouseOverPanel; |
|
|
|
CItemModelPanel *m_pMouseOverItemPanel; |
|
CItemModelPanelToolTip *m_pMouseOverTooltip; |
|
|
|
// Notifications |
|
vgui::EditablePanel *m_pNotificationsShowPanel; |
|
vgui::EditablePanel *m_pNotificationsPanel; |
|
vgui::EditablePanel *m_pNotificationsControl; |
|
vgui::ScrollableEditablePanel *m_pNotificationsScroller; |
|
int m_iNumNotifications; |
|
int m_iNotiPanelWide; |
|
|
|
// MOTDs |
|
vgui::EditablePanel *m_pMOTDShowPanel; |
|
vgui::EditablePanel *m_pMOTDPanel; |
|
vgui::Label *m_pMOTDHeaderLabel; |
|
vgui::ImagePanel *m_pMOTDHeaderIcon; |
|
vgui::ScrollableEditablePanel *m_pMOTDTextScroller; |
|
vgui::EditablePanel *m_pMOTDTextPanel; |
|
vgui::Label *m_pMOTDTextLabel; |
|
vgui::Label *m_pMOTDTitleLabel; |
|
vgui::EditablePanel *m_pMOTDTitleImageContainer; |
|
vgui::ImagePanel *m_pMOTDTitleImage; |
|
|
|
int m_hTitleLabelFont; |
|
bool m_bInitMOTD; |
|
|
|
CExImageButton *m_pMOTDNextButton; |
|
CExImageButton *m_pMOTDPrevButton; |
|
CExButton *m_pMOTDURLButton; |
|
|
|
// MOTD handling |
|
CMOTDManager m_MOTDManager; |
|
bool m_bHaveNewMOTDs; |
|
RTime32 m_nLastMOTDRequestAt; |
|
ELanguage m_nLastMOTDRequestLanguage; |
|
bool m_bReloadedAllMOTDs; |
|
int m_iCurrentMOTD; |
|
bool m_bMOTDShownAtStartup; |
|
|
|
class CWarLandingPanel *m_pWarLandingPage; |
|
|
|
vgui::ImagePanel *m_pCharacterImagePanel; |
|
int m_iCharacterImageIdx; |
|
|
|
CExButton *m_pQuitButton; |
|
CExButton *m_pDisconnectButton; |
|
bool m_bIsDisconnectText; |
|
|
|
CExButton *m_pBackToReplaysButton; |
|
ImagePanel *m_pStoreHasNewItemsImage; |
|
|
|
CExButton *m_pVRModeButton; |
|
vgui::Panel *m_pVRModeBackground; |
|
|
|
KeyValues *m_pButtonKV; |
|
bool m_bReapplyButtonKVs; |
|
|
|
DHANDLE< CExplanationPopup > m_pHighlightAnims[ NUM_ANIMS ]; |
|
|
|
float m_flCheckTrainingAt; |
|
bool m_bWasInTraining; |
|
|
|
float m_flCheckUnclaimedItems; |
|
|
|
vgui::ImagePanel *m_pBackground; |
|
|
|
struct mainmenu_entry_t |
|
{ |
|
vgui::EditablePanel *pPanel; |
|
bool bOnlyInGame; |
|
bool bOnlyInReplay; |
|
bool bOnlyAtMenu; |
|
bool bIsVisible; |
|
bool bOnlyVREnabled; |
|
int iStyle; |
|
const char *pszImage; |
|
const char *pszTooltip; |
|
}; |
|
CUtlVector<mainmenu_entry_t> m_pMMButtonEntries; |
|
|
|
CMainMenuToolTip *m_pToolTip; |
|
vgui::EditablePanel *m_pToolTipEmbeddedPanel; |
|
|
|
CSimplePanelToolTip *m_pFeaturedItemToolTip; |
|
|
|
EditablePanel *m_pQuestLogButton; |
|
EditablePanel *m_pEventPromoContainer; |
|
EditablePanel *m_pSafeModeContainer; |
|
|
|
vgui::DHANDLE<vgui::Frame> m_hReportPlayerDialog; |
|
|
|
CTFStreamListPanel *m_pWatchStreamsPanel; |
|
|
|
bool m_bPlayListExpanded; |
|
bool m_bStabilizedInitialLayout; |
|
float m_flLastWarNagTime; |
|
bool m_bBackgroundUsesCharacterImages; |
|
|
|
EditablePanel *m_pCompetitiveAccessInfo; |
|
#ifdef SAXXYMAINMENU_ENABLED |
|
CSaxxyAwardsPanel *m_pSaxxyAwardsPanel; |
|
KeyValues *m_pSaxxySettings; |
|
#endif |
|
|
|
CPanelAnimationVarAliasType( int, m_iButtonXOffset, "button_x_offset", "0", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_iButtonY, "button_y", "0", "proportional_int" ); |
|
CPanelAnimationVarAliasType( int, m_iButtonYDelta, "button_y_delta", "0", "proportional_int" ); |
|
}; |
|
|
|
#endif //TF_HUD_MAINMENUOVERRIDE_H
|
|
|