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