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.
347 lines
9.2 KiB
347 lines
9.2 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef TF_HUD_MANN_VS_MACHINE_VICTORY_H |
|
#define TF_HUD_MANN_VS_MACHINE_VICTORY_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
#include "hudelement.h" |
|
#include "tf_controls.h" |
|
#include "hud.h" |
|
#include <vgui/IScheme.h> |
|
#include <vgui_controls/ProgressBar.h> |
|
#include <vgui_controls/ScalableImagePanel.h> |
|
#include <vgui_controls/EditablePanel.h> |
|
#include <vgui/ISurface.h> |
|
#include <vgui_controls/ImageList.h> |
|
#include <vgui/KeyCode.h> |
|
#include "vgui_controls/SectionedListPanel.h" |
|
#include "c_tf_objective_resource.h" |
|
#include "vgui_avatarimage.h" |
|
#include "item_model_panel.h" |
|
#include "c_playerresource.h" |
|
#include "tf_gcmessages.h" |
|
#include "tf_mann_vs_machine_stats.h" |
|
#include "tf_gamerules.h" |
|
#include "tf_hud_mann_vs_machine_stats.h" |
|
#include "tf_gc_client.h" |
|
|
|
class CTFParticlePanel; |
|
|
|
//========================================================= |
|
class CVictoryPanel : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CVictoryPanel, vgui::EditablePanel ); |
|
public: |
|
CVictoryPanel( Panel *parent, const char *pName ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void OnTick( void ); |
|
|
|
void ResetVictoryPanel(); |
|
|
|
void SetMapAndPopFile (); |
|
|
|
private: |
|
enum |
|
{ |
|
INITIAL_VICTORY = 0, |
|
CREDITS_COLLECT, |
|
CREDITS_MISSED, |
|
CREDITS_BONUS, |
|
YOUR_UPGRADES, |
|
YOUR_BUYBACK, |
|
YOUR_BOTTLES, |
|
RATING_LABEL, |
|
RATING_SCORE, |
|
FINISHED, |
|
}; |
|
|
|
void CaptureStats(); |
|
|
|
bool StateUpdateValue( vgui::EditablePanel *parent, char* field, float targetTime, float currentTime, int nextState, int endValue ); |
|
bool StateUpdateCreditText( vgui::EditablePanel *parent, char* field, float targetTime, float currentTime, int nextState, int useValue, int creditValue ); |
|
bool CheckState( float targetTime, float currentTime, int nextState ); |
|
|
|
void RatingLabelUpdate( void ); |
|
void RatingScoreUpdate( void ); |
|
|
|
float m_fPreviousTick; |
|
float m_fStateRunningTime; |
|
|
|
vgui::EditablePanel *m_pHeaderContainer; |
|
vgui::EditablePanel *m_pCreditContainerPanel; |
|
vgui::EditablePanel *m_pTeamStatsContainerPanel; |
|
vgui::EditablePanel *m_pYourStatsContainerPanel; |
|
vgui::EditablePanel *m_pRatingContainerPanel; |
|
CExImageButton *m_pDoneButton; |
|
|
|
CCreditSpendPanel *m_pTotalGameCreditSpendPanel; |
|
|
|
int m_eState; |
|
|
|
int m_nCreditsCollected; |
|
int m_nCreditsMissed; |
|
int m_nCreditBonus; |
|
|
|
int m_nYourBuybacksCredits; |
|
int m_nYourBottlesCredits; |
|
int m_nYourUpgradeCredits; |
|
}; |
|
|
|
//========================================================= |
|
class CMvMVictoryMannUpLoot : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CMvMVictoryMannUpLoot, vgui::EditablePanel ); |
|
|
|
public: |
|
CMvMVictoryMannUpLoot( Panel *parent, const char *pName ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
|
|
void SetEconItem( CEconItem *econItem ); |
|
void HideEconItem( ); |
|
void SetEconToolTip( CItemModelPanelToolTip *pToolTip ); |
|
|
|
private: |
|
|
|
CItemModelPanel *m_pItemModelPanel; |
|
}; |
|
|
|
|
|
//========================================================= |
|
class CMvMVictoryMannUpEntry : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CMvMVictoryMannUpEntry, vgui::EditablePanel ); |
|
|
|
public: |
|
CMvMVictoryMannUpEntry( Panel *parent, const char *pName ); |
|
~CMvMVictoryMannUpEntry(); |
|
|
|
virtual void ApplySettings( KeyValues *inResourceData ) OVERRIDE; |
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; |
|
virtual void PerformLayout() OVERRIDE; |
|
|
|
void SetActive( bool bActive ); |
|
void SetData( KeyValues *kv ); |
|
void ClearPlayerData(); |
|
#ifdef USE_MVM_TOUR |
|
void SetPlayerData ( const CMsgMvMVictoryInfo_Player& player, int nMissionCount ); |
|
#else // new mm |
|
void SetPlayerData ( const CMsgMvMVictoryInfo_Player& player, int nMissionIndex ); |
|
#endif // USE_MVM_TOUR |
|
void SetItemsToolTip( CItemModelPanelToolTip *pToolTip ); |
|
|
|
bool AnimateProgressBar( void ); |
|
bool AnimateLoot( CTFParticlePanel* pParticlePanel ); |
|
|
|
void ForceFinishAllAnimation(); |
|
void SetLootAnimationPause( float flPause ); |
|
private: |
|
void PlayVCD( const char * pszVCDName ); |
|
bool SetModelPanelInfo( C_TFPlayer* pPlayer ); |
|
void SetBadgeProgressBarProgress( float flPercent ); |
|
#ifdef USE_MVM_TOUR |
|
int GetBadgeCompletionCount( uint32 iProgressBits ); |
|
#endif // USE_MVM_TOUR |
|
vgui::EditablePanel* AddLootRow(); |
|
|
|
void CheckBadgeLevel ( const CMsgMvMVictoryInfo_Player& player ); |
|
void ClearEconItems (); |
|
|
|
bool AnimTimePassed( float flTime ) const; |
|
bool AnimateLoot_Internal( CTFParticlePanel* pParticlePanel ); |
|
|
|
void UpdatePlayerData(); |
|
|
|
CTFParticlePanel *m_pBehindItemParticlePanel; |
|
vgui::EditablePanel *m_pTourProgress; |
|
vgui::EditablePanel *m_pProgressBarBG; |
|
vgui::EditablePanel *m_pProgressBarFGStatic; |
|
vgui::EditablePanel *m_pHeader; |
|
vgui::EditablePanel *m_pProgressBarFGAnim; |
|
|
|
vgui::EditablePanel *m_pProgressCheckOnBackground; |
|
vgui::ImagePanel *m_pProgressCheckOn; |
|
vgui::EditablePanel *m_pSquadSurplusBackground; |
|
vgui::ImagePanel *m_pSquadSurplus; |
|
|
|
vgui::Label *m_pMissingVoucher; |
|
|
|
CUtlVector< CEconItem* > m_MannUpEconItems; |
|
|
|
vgui::HFont m_DividerLabelFont; |
|
|
|
CMsgMvMVictoryInfo_Player m_playerData; |
|
bool m_bHasData; |
|
|
|
EHANDLE m_hPlayer; |
|
bool m_bBadgeUpdated; |
|
int m_iProgressWidthStart; |
|
int m_iProgressWidthEnd; |
|
int m_nBadgeLevel; |
|
|
|
float m_flPBarCurrTime; |
|
float m_flPBarPreviousTime; |
|
|
|
int m_iLootAnimIndex; |
|
float m_flLootAnimTime; |
|
float m_flLastLootAnimTime; |
|
|
|
#ifdef USE_MVM_TOUR |
|
int m_nChallengeCount; |
|
#else // new mm |
|
int m_nMissionIndex; |
|
#endif // USE_MVM_TOUR |
|
|
|
int m_nItemColumns; |
|
int m_nItemXSpacing; |
|
int m_nItemYSpacing; |
|
|
|
class CMvMLootItem : public CItemModelPanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CMvMLootItem, CItemModelPanel ); |
|
public: |
|
CMvMLootItem( vgui::Panel *parent, const char *name ) |
|
: CItemModelPanel( parent, name ) |
|
, m_nIndex( 0 ) |
|
, m_pUnopenedPanel( NULL ) |
|
{ |
|
m_pUnopenedPanel = new vgui::ImagePanel( parent, VarArgs( "unopened_%s", name ) ); |
|
} |
|
~CMvMLootItem() |
|
{} |
|
|
|
vgui::ImagePanel *m_pUnopenedPanel; |
|
CMsgMvMVictoryInfo_GrantReason m_eReason; |
|
int m_nIndex; |
|
}; |
|
|
|
CUtlVector< CMvMLootItem* > m_vecLootPanels; |
|
CUtlVector< vgui::EditablePanel* > m_vecRows; |
|
|
|
KeyValues *m_pItemModelPanelKVs; |
|
KeyValues *m_pRowKVs; |
|
KeyValues *m_pUnopenedLootKVs; |
|
|
|
CUtlMap< int, CExLabel* > m_LootLables; |
|
|
|
class CTFPlayerModelPanel *m_pPlayerModelPanel; |
|
class vgui::PanelListPanel *m_pListPanel; |
|
}; |
|
|
|
//========================================================= |
|
class CMvMVictoryMannUpPlayerTab : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CMvMVictoryMannUpPlayerTab, vgui::EditablePanel ); |
|
|
|
public: |
|
CMvMVictoryMannUpPlayerTab( Panel *parent, const char *pName ); |
|
|
|
void SetPlayer( const CSteamID& steamID ); |
|
void SetSelected( bool bState ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; |
|
virtual void OnCommand( const char *command ) OVERRIDE; |
|
|
|
private: |
|
|
|
CAvatarImagePanel *m_pAvatarImage; |
|
vgui::EditablePanel *m_pActiveTab; |
|
vgui::EditablePanel *m_pMouseoverHighlightPanel; |
|
bool m_bIsActive; |
|
}; |
|
|
|
//========================================================= |
|
class CMvMVictoryMannUpPanel : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CMvMVictoryMannUpPanel, vgui::EditablePanel ); |
|
|
|
public: |
|
CMvMVictoryMannUpPanel( Panel *parent, const char *pName ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ) OVERRIDE; |
|
virtual void OnTick( void ) OVERRIDE; |
|
virtual void SetVisible( bool bState ) OVERRIDE; |
|
|
|
void ShowVictoryPanel(); |
|
void ClearData(); |
|
void MannUpServerResponse( CMsgMvMVictoryInfo &pData ); |
|
void ForceFinishAllAnimation(); |
|
|
|
bool HasData() { return m_hasData; } |
|
|
|
virtual void OnCommand( const char *command ) OVERRIDE; |
|
private: |
|
|
|
void LoadVictoryData(); |
|
void UpdateHighlight(); |
|
void SetTabActive( int nIndex ); |
|
|
|
CTFParticlePanel *m_pParticlePanel; |
|
CUtlVector< vgui::Button* > m_vecTabButtons; |
|
CUtlVector< CMvMVictoryMannUpPlayerTab* > m_vecTabs; |
|
CUtlVector< CMvMVictoryMannUpEntry* > m_PlayerEntryPanels; |
|
CExImageButton *m_pDoneButton; |
|
|
|
CItemModelPanel *m_pMouseOverItemPanel; |
|
CItemModelPanelToolTip *m_pMouseOverTooltip; |
|
|
|
vgui::EditablePanel *m_pNoItemServerContainer; |
|
|
|
bool m_hasData; |
|
|
|
int m_iMannUpLootIndex; |
|
|
|
bool m_bAnimationComplete; |
|
|
|
float m_flChangeTabPauseTime; |
|
|
|
CMsgMvMVictoryInfo m_victoryInfo; |
|
}; |
|
|
|
//========================================================= |
|
class CMvMVictoryPanelContainer : public vgui::EditablePanel |
|
{ |
|
DECLARE_CLASS_SIMPLE( CMvMVictoryPanelContainer, vgui::EditablePanel ); |
|
|
|
public: |
|
CMvMVictoryPanelContainer( Panel *parent, const char *pName ); |
|
|
|
virtual void ApplySchemeSettings( vgui::IScheme *pScheme ); |
|
virtual void FireGameEvent( IGameEvent *event ); |
|
virtual void OnTick( void ); |
|
virtual void OnCommand( const char *command ); |
|
virtual void OnKeyCodePressed( vgui::KeyCode code ); |
|
|
|
void MannUpServerResponse( CMsgMvMVictoryInfo &pData ) |
|
{ |
|
m_pVictoryPanelMannUp->MannUpServerResponse( pData ); |
|
m_pObjective = TFObjectiveResource(); |
|
} |
|
|
|
void ShowVictoryPanel( bool bIsReopening ); |
|
void CreateReOpenNotification(); |
|
|
|
bool IsVictoryPanelVisible() |
|
{ |
|
return ( m_pVictoryPanelNormal && m_pVictoryPanelNormal->IsVisible() ) || ( m_pVictoryPanelMannUp && m_pVictoryPanelMannUp->IsVisible() ); |
|
} |
|
|
|
private: |
|
|
|
CVictoryPanel *m_pVictoryPanelNormal; |
|
CMvMVictoryMannUpPanel *m_pVictoryPanelMannUp; |
|
const C_TFObjectiveResource *m_pObjective; |
|
}; |
|
|
|
|
|
|
|
#endif // TF_HUD_MANN_VS_MACHINE_VICTORY_H
|
|
|