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.
189 lines
5.6 KiB
189 lines
5.6 KiB
![]()
4 years ago
|
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||
|
//
|
||
|
// Purpose:
|
||
|
//
|
||
|
// $NoKeywords: $
|
||
|
//
|
||
|
//=============================================================================//
|
||
|
#include "cbase.h"
|
||
|
#include "hud.h"
|
||
|
#include "hud_macros.h"
|
||
|
#include "clientmode_tfnormal.h"
|
||
|
#include "clientmode.h"
|
||
|
#include "clientmode_commander.h"
|
||
|
#include "ivmodemanager.h"
|
||
|
#include "hud_timer.h"
|
||
|
#include "hud_technologytreedoc.h"
|
||
|
#include "CommanderOverlay.h"
|
||
|
#include "c_tf2rootpanel.h"
|
||
|
#include "c_info_act.h"
|
||
|
|
||
|
// default FOV for TF2
|
||
|
ConVar default_fov( "default_fov", "90", FCVAR_CHEAT );
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Handles switching to/from commander mode
|
||
|
//-----------------------------------------------------------------------------
|
||
|
class CTFModeManager : public IVModeManager
|
||
|
{
|
||
|
public:
|
||
|
virtual void Init( void );
|
||
|
virtual void SwitchMode( bool commander, bool force );
|
||
|
virtual void LevelInit( const char *newmap );
|
||
|
virtual void LevelShutdown( void );
|
||
|
|
||
|
CTFModeManager( void );
|
||
|
virtual ~CTFModeManager( void );
|
||
|
|
||
|
void UserCmd_Commander( void );
|
||
|
void UserCmd_Normal( void );
|
||
|
|
||
|
};
|
||
|
|
||
|
static CTFModeManager g_ModeManager;
|
||
|
IVModeManager *modemanager = ( IVModeManager * )&g_ModeManager;
|
||
|
|
||
|
// The current client mode. Always ClientModeNormal in HL.
|
||
|
IClientMode *g_pClientMode = NULL;
|
||
|
|
||
|
DECLARE_COMMAND( g_ModeManager, Commander );
|
||
|
DECLARE_COMMAND( g_ModeManager, Normal );
|
||
|
|
||
|
HOOK_COMMAND( commander, Commander );
|
||
|
HOOK_COMMAND( normal, Normal );
|
||
|
|
||
|
void __MsgFunc_ActBegin(bf_read &msg);
|
||
|
void __MsgFunc_ActEnd(bf_read &msg);
|
||
|
|
||
|
#define MINIMAP_FILE "scripts/minimap_overlays.txt"
|
||
|
#define SCREEN_FILE "scripts/vgui_screens.txt"
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Intialize the mode manager
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CTFModeManager::Init( void )
|
||
|
{
|
||
|
g_pClientMode = ClientModeCommander();
|
||
|
g_pClientMode = GetClientModeNormal();
|
||
|
|
||
|
// These define the panels that can be used by the engine
|
||
|
PanelMetaClassMgr()->LoadMetaClassDefinitionFile( MINIMAP_FILE );
|
||
|
PanelMetaClassMgr()->LoadMetaClassDefinitionFile( SCREEN_FILE );
|
||
|
|
||
|
// FIXME: Turn these into client systems
|
||
|
HudCommanderOverlayMgr()->GameInit();
|
||
|
MapData().Init();
|
||
|
GetTechnologyTreeDoc().Init();
|
||
|
|
||
|
HOOK_MESSAGE( ActBegin );
|
||
|
HOOK_MESSAGE( ActEnd );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Output :
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CTFModeManager::CTFModeManager( void )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Output :
|
||
|
//-----------------------------------------------------------------------------
|
||
|
CTFModeManager::~CTFModeManager( void )
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CTFModeManager::UserCmd_Commander( void )
|
||
|
{
|
||
|
engine->ServerCmd( "tactical 1\n" );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CTFModeManager::UserCmd_Normal( void )
|
||
|
{
|
||
|
engine->ServerCmd( "tactical 0\n" );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: Switch to / from commander mode ( won't change if current mode is already
|
||
|
// correct
|
||
|
// Input : commander -
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CTFModeManager::SwitchMode( bool commander, bool force )
|
||
|
{
|
||
|
if ( commander && ( ( g_pClientMode != ClientModeCommander() ) || force ) )
|
||
|
{
|
||
|
g_pClientMode->Disable();
|
||
|
g_pClientMode = ClientModeCommander();
|
||
|
g_pClientMode->Enable();
|
||
|
}
|
||
|
else if ( !commander && ( ( g_pClientMode != GetClientModeNormal() ) || force ) )
|
||
|
{
|
||
|
g_pClientMode->Disable();
|
||
|
g_pClientMode = GetClientModeNormal();
|
||
|
g_pClientMode->Enable();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
// Input : *newmap -
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CTFModeManager::LevelInit( const char *newmap )
|
||
|
{
|
||
|
GetTechnologyTreeDoc().LevelInit();
|
||
|
g_pTF2RootPanel->LevelInit();
|
||
|
|
||
|
CHudTimer *timer = GET_HUDELEMENT( CHudTimer );
|
||
|
if ( timer )
|
||
|
{
|
||
|
timer->Init();
|
||
|
}
|
||
|
|
||
|
// Tell all modes about the map change
|
||
|
ClientModeCommander()->LevelInit( newmap );
|
||
|
GetClientModeNormal()->LevelInit( newmap );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose:
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void CTFModeManager::LevelShutdown( void )
|
||
|
{
|
||
|
GetClientModeNormal()->LevelShutdown();
|
||
|
ClientModeCommander()->LevelShutdown();
|
||
|
|
||
|
g_pTF2RootPanel->LevelShutdown();
|
||
|
GetTechnologyTreeDoc().LevelShutdown();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: A new act has just begun
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void __MsgFunc_ActBegin(bf_read &msg)
|
||
|
{
|
||
|
int iActNumber = (char)msg.ReadByte();
|
||
|
float flStartTime = msg.ReadFloat();
|
||
|
|
||
|
StartAct( iActNumber, flStartTime );
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------------
|
||
|
// Purpose: An act has just ended
|
||
|
//-----------------------------------------------------------------------------
|
||
|
void __MsgFunc_ActEnd(bf_read &msg)
|
||
|
{
|
||
|
CHudTimer *timer = GET_HUDELEMENT( CHudTimer );
|
||
|
if ( timer )
|
||
|
{
|
||
|
timer->SetNoFixedTimer( 0.0f );
|
||
|
}
|
||
|
}
|