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.
108 lines
3.5 KiB
108 lines
3.5 KiB
2 months ago
|
//
|
||
|
// Copyright (c) 2010-2011 Matthew Jack and Doug Binks
|
||
|
//
|
||
|
// This software is provided 'as-is', without any express or implied
|
||
|
// warranty. In no event will the authors be held liable for any damages
|
||
|
// arising from the use of this software.
|
||
|
// Permission is granted to anyone to use this software for any purpose,
|
||
|
// including commercial applications, and to alter it and redistribute it
|
||
|
// freely, subject to the following restrictions:
|
||
|
// 1. The origin of this software must not be misrepresented; you must not
|
||
|
// claim that you wrote the original software. If you use this software
|
||
|
// in a product, an acknowledgment in the product documentation would be
|
||
|
// appreciated but is not required.
|
||
|
// 2. Altered source versions must be plainly marked as such, and must not be
|
||
|
// misrepresented as being the original software.
|
||
|
// 3. This notice may not be removed or altered from any source distribution.
|
||
|
|
||
|
#include "Environment.h"
|
||
|
|
||
|
#include "../../Systems/Systems.h"
|
||
|
|
||
|
#include "../../Systems/LogSystem/FileLogSystem/FileLogSystem.h"
|
||
|
#include "../../Systems/LogSystem/MultiLogSystem/MultiLogSystem.h"
|
||
|
#include "../../Systems/LogSystem/RocketLogSystem/RocketLogSystem.h"
|
||
|
#include "../../Systems/LogSystem/ThreadsafeLogSystem/ThreadsafeLogSystem.h"
|
||
|
#include "../../Systems/TimeSystem/TimeSystem.h"
|
||
|
#include "../../Systems/EntitySystem/EntitySystem.h"
|
||
|
#include "../../Systems/AssetSystem/AssetSystem.h"
|
||
|
#include "../../RuntimeObjectSystem/ObjectFactorySystem/ObjectFactorySystem.h"
|
||
|
#include "../../RuntimeObjectSystem/RuntimeObjectSystem.h"
|
||
|
#include "../../Systems/GUISystem/GUISystem.h"
|
||
|
#include "../../RuntimeCompiler/FileChangeNotifier.h"
|
||
|
#include "CompilerLogger.h"
|
||
|
|
||
|
Environment::Environment( IGame* pGame )
|
||
|
{
|
||
|
sys = new SystemTable();
|
||
|
|
||
|
// Set the systems library to refer to this system table
|
||
|
gSys = sys;
|
||
|
|
||
|
sys->pGame = pGame;
|
||
|
|
||
|
// init AssetSystem first as this establishes the Asset dir used by many systems
|
||
|
sys->pAssetSystem = new AssetSystem("Assets");
|
||
|
|
||
|
FileLogSystem *pFileLog = new FileLogSystem();
|
||
|
pFileLog->SetLogPath("Log.txt");
|
||
|
pFileLog->SetVerbosity(eLV_COMMENTS);
|
||
|
pFileLog->Log(eLV_EVENTS, "Started file logger\n");
|
||
|
|
||
|
RocketLogSystem *pRocketLog = new RocketLogSystem();
|
||
|
pRocketLog->SetVerbosity(eLV_COMMENTS);
|
||
|
pRocketLog->Log(eLV_EVENTS,"Started RocketLib logger\n");
|
||
|
sys->pRocketLogSystem = pRocketLog;
|
||
|
|
||
|
MultiLogSystem *pMultiLog = new MultiLogSystem();
|
||
|
pMultiLog->AddLogSystem(pFileLog);
|
||
|
pMultiLog->AddLogSystem(pRocketLog);
|
||
|
|
||
|
ThreadsafeLogSystem *pThreadsafeLog = new ThreadsafeLogSystem();
|
||
|
pThreadsafeLog->SetProtectedLogSystem(pMultiLog);
|
||
|
|
||
|
sys->pLogSystem = pThreadsafeLog;
|
||
|
|
||
|
sys->pLogSystem->Log(eLV_EVENTS, "All logs initialised\n");
|
||
|
|
||
|
pCompilerLogger = new CompilerLogger(this);
|
||
|
sys->pRuntimeObjectSystem = new RuntimeObjectSystem();
|
||
|
sys->pObjectFactorySystem = sys->pRuntimeObjectSystem->GetObjectFactorySystem();
|
||
|
sys->pFileChangeNotifier = sys->pRuntimeObjectSystem->GetFileChangeNotifier();
|
||
|
|
||
|
sys->pObjectFactorySystem->SetObjectConstructorHistorySize( 5 );
|
||
|
|
||
|
sys->pTimeSystem = new TimeSystem();
|
||
|
|
||
|
sys->pEntitySystem = new EntitySystem();
|
||
|
|
||
|
sys->pGUISystem = new GUISystem();
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
void Environment::Init()
|
||
|
{
|
||
|
sys->pTimeSystem->StartSession();
|
||
|
sys->pRuntimeObjectSystem->Initialise( pCompilerLogger, sys );
|
||
|
}
|
||
|
|
||
|
|
||
|
Environment::~Environment()
|
||
|
{
|
||
|
// Reverse order as a rule
|
||
|
|
||
|
delete sys->pGUISystem;
|
||
|
delete sys->pEntitySystem;
|
||
|
delete sys->pTimeSystem;
|
||
|
delete sys->pRuntimeObjectSystem;
|
||
|
delete sys->pLogSystem;
|
||
|
delete sys->pAssetSystem;
|
||
|
|
||
|
|
||
|
delete pCompilerLogger;
|
||
|
delete sys;
|
||
|
}
|
||
|
|