mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-10 10:49:35 +00:00
1
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// The copyright to the contents herein is the property of Valve, L.L.C.
|
||||
// The contents may be used and/or copied only with the written permission of
|
||||
// Valve, L.L.C., or in accordance with the terms and conditions stipulated in
|
||||
// the agreement/contract under which the contents have been supplied.
|
||||
//
|
||||
// $Header: $
|
||||
// $NoKeywords: $
|
||||
//
|
||||
// An RTS!
|
||||
//=============================================================================
|
||||
|
||||
#include "legion.h"
|
||||
#include <windows.h>
|
||||
#include "inputsystem/iinputsystem.h"
|
||||
#include "networksystem/inetworksystem.h"
|
||||
#include "filesystem.h"
|
||||
#include "materialsystem/imaterialsystem.h"
|
||||
#include "vgui/IVGui.h"
|
||||
#include "vgui/ISurface.h"
|
||||
#include "VGuiMatSurface/IMatSystemSurface.h"
|
||||
#include "vgui_controls/controls.h"
|
||||
#include "vgui/ILocalize.h"
|
||||
#include "vgui_controls/AnimationController.h"
|
||||
#include "gamemanager.h"
|
||||
#include "menumanager.h"
|
||||
#include "physicsmanager.h"
|
||||
#include "rendermanager.h"
|
||||
#include "uimanager.h"
|
||||
#include "inputmanager.h"
|
||||
#include "networkmanager.h"
|
||||
#include "worldmanager.h"
|
||||
#include "tier3/tier3.h"
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: Warning/Msg call back through this API
|
||||
// Input : type -
|
||||
// *pMsg -
|
||||
// Output : SpewRetval_t
|
||||
//-----------------------------------------------------------------------------
|
||||
SpewRetval_t SpewFunc( SpewType_t type, char const *pMsg )
|
||||
{
|
||||
OutputDebugString( pMsg );
|
||||
if ( type == SPEW_ASSERT )
|
||||
{
|
||||
DebuggerBreak();
|
||||
}
|
||||
return SPEW_CONTINUE;
|
||||
}
|
||||
|
||||
|
||||
static CLegionApp s_LegionApp;
|
||||
extern CLegionApp *g_pApp = &s_LegionApp;
|
||||
DEFINE_WINDOWED_STEAM_APPLICATION_OBJECT_GLOBALVAR( CLegionApp, s_LegionApp );
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Create all singleton systems
|
||||
//-----------------------------------------------------------------------------
|
||||
bool CLegionApp::Create()
|
||||
{
|
||||
SpewOutputFunc( SpewFunc );
|
||||
|
||||
// FIXME: Put this into tier1librariesconnect
|
||||
MathLib_Init( 2.2f, 2.2f, 0.0f, 2.0f, false );
|
||||
|
||||
if ( !BaseClass::Create() )
|
||||
return false;
|
||||
|
||||
AppSystemInfo_t appSystems[] =
|
||||
{
|
||||
{ "networksystem.dll", NETWORKSYSTEM_INTERFACE_VERSION },
|
||||
{ "", "" } // Required to terminate the list
|
||||
};
|
||||
|
||||
return AddSystems( appSystems );
|
||||
}
|
||||
|
||||
bool CLegionApp::PreInit( )
|
||||
{
|
||||
if ( !BaseClass::PreInit() )
|
||||
return false;
|
||||
|
||||
if ( !g_pInputSystem || !g_pFullFileSystem || !g_pNetworkSystem || !g_pMaterialSystem || !g_pVGui || !g_pVGuiSurface || !g_pMatSystemSurface )
|
||||
{
|
||||
Warning( "Legion is missing a required interface!\n" );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void CLegionApp::PostShutdown()
|
||||
{
|
||||
BaseClass::PostShutdown();
|
||||
}
|
||||
|
||||
|
||||
bool CLegionApp::RegisterConCommandBase( ConCommandBase *pCommand )
|
||||
{
|
||||
// Mark for easy removal
|
||||
pCommand->AddFlags( FCVAR_CLIENTDLL );
|
||||
pCommand->SetNext( 0 );
|
||||
|
||||
// Link to variable list
|
||||
g_pCVar->RegisterConCommandBase( pCommand );
|
||||
return true;
|
||||
}
|
||||
|
||||
void CLegionApp::UnregisterConCommandBase( ConCommandBase *pCommand )
|
||||
{
|
||||
// Unlink from variable list
|
||||
g_pCVar->UnlinkVariable( pCommand );
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// main application
|
||||
//-----------------------------------------------------------------------------
|
||||
int CLegionApp::Main()
|
||||
{
|
||||
if (!SetVideoMode())
|
||||
return 0;
|
||||
|
||||
ConCommandBaseMgr::OneTimeInit( this );
|
||||
|
||||
g_pMaterialSystem->ModInit();
|
||||
|
||||
// World database
|
||||
IGameManager::Add( g_pWorldManager );
|
||||
|
||||
// Output
|
||||
IGameManager::Add( g_pRenderManager );
|
||||
|
||||
// Input
|
||||
IGameManager::Add( g_pNetworkManager );
|
||||
IGameManager::Add( g_pInputManager );
|
||||
IGameManager::Add( g_pMenuManager );
|
||||
IGameManager::Add( g_pUIManager );
|
||||
|
||||
// Simulation
|
||||
IGameManager::Add( g_pPhysicsManager );
|
||||
|
||||
// Init the game managers
|
||||
if ( !IGameManager::InitAllManagers() )
|
||||
return 0;
|
||||
|
||||
// First menu to start on
|
||||
g_pMenuManager->PushMenu( "MainMenu" );
|
||||
|
||||
// This is the main game loop
|
||||
IGameManager::Start();
|
||||
|
||||
// Shut down game systems
|
||||
IGameManager::ShutdownAllManagers();
|
||||
|
||||
g_pMaterialSystem->ModShutdown();
|
||||
|
||||
g_pCVar->UnlinkVariables( FCVAR_CLIENTDLL );
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user