Changeset View
Changeset View
Standalone View
Standalone View
source/ps/World.cpp
Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | |||||
/** | /** | ||||
* Constructor. | * Constructor. | ||||
* | * | ||||
* @param pGame CGame * pGame pointer to the container game object. | * @param pGame CGame * pGame pointer to the container game object. | ||||
**/ | **/ | ||||
CWorld::CWorld(CGame *pGame): | CWorld::CWorld(CGame *pGame): | ||||
m_pGame(pGame), | m_pGame(pGame), | ||||
m_Terrain(new CTerrain()), | m_Terrain(new CTerrain()), | ||||
m_UnitManager(new CUnitManager()), | m_UnitManager(new CUnitManager()), | ||||
Stan: Could they be unique_ptr? | |||||
Done Inline ActionsThey should actually, but I think I'll leave that cleanup for another diff. wraitii: They should actually, but I think I'll leave that cleanup for another diff. | |||||
m_MapReader(new CMapReader) | m_MapReader(new CMapReader) | ||||
{ | { | ||||
} | } | ||||
/** | /** | ||||
* Initializes the game world with the attributes provided. | * Initializes the game world with the attributes provided. | ||||
**/ | **/ | ||||
void CWorld::RegisterInit(const CStrW& mapFile, const ScriptContext& cx, JS::HandleValue settings, int playerID) | void CWorld::RegisterInit(const CStrW& mapFile, const ScriptContext& cx, JS::HandleValue settings, int playerID) | ||||
{ | { | ||||
// Load the map, if one was specified | // Load the map, if one was specified | ||||
if (mapFile.length()) | if (mapFile.length()) | ||||
{ | { | ||||
VfsPath mapfilename = VfsPath(mapFile).ChangeExtension(L".pmp"); | VfsPath mapfilename = VfsPath(mapFile).ChangeExtension(L".pmp"); | ||||
try | try | ||||
{ | { | ||||
CTriggerManager* pTriggerManager = NULL; | CTriggerManager* pTriggerManager = NULL; | ||||
m_MapReader->LoadMap(mapfilename, cx, settings, m_Terrain, | m_MapReader->LoadMap(mapfilename, cx, settings, m_Terrain, | ||||
CRenderer::IsInitialised() ? g_Renderer.GetWaterManager() : NULL, | |||||
CRenderer::IsInitialised() ? g_Renderer.GetSkyManager() : NULL, | CRenderer::IsInitialised() ? g_Renderer.GetSkyManager() : NULL, | ||||
&g_LightEnv, m_pGame->GetView(), | &g_LightEnv, m_pGame->GetView(), | ||||
m_pGame->GetView() ? m_pGame->GetView()->GetCinema() : NULL, | m_pGame->GetView() ? m_pGame->GetView()->GetCinema() : NULL, | ||||
pTriggerManager, CRenderer::IsInitialised() ? &g_Renderer.GetPostprocManager() : NULL, | pTriggerManager, CRenderer::IsInitialised() ? &g_Renderer.GetPostprocManager() : NULL, | ||||
m_pGame->GetSimulation2(), &m_pGame->GetSimulation2()->GetSimContext(), playerID, false); | m_pGame->GetSimulation2(), &m_pGame->GetSimulation2()->GetSimContext(), playerID, false); | ||||
// fails immediately, or registers for delay loading | // fails immediately, or registers for delay loading | ||||
RegMemFun(this, &CWorld::DeleteMapReader, L"CWorld::DeleteMapReader", 5); | RegMemFun(this, &CWorld::DeleteMapReader, L"CWorld::DeleteMapReader", 5); | ||||
} | } | ||||
catch (PSERROR_File& err) | catch (PSERROR_File& err) | ||||
{ | { | ||||
SAFE_DELETE(m_MapReader); | SAFE_DELETE(m_MapReader); | ||||
LOGERROR("Failed to load map %s: %s", mapfilename.string8(), err.what()); | LOGERROR("Failed to load map %s: %s", mapfilename.string8(), err.what()); | ||||
throw PSERROR_Game_World_MapLoadFailed("Failed to load map.\nCheck application log for details."); | throw PSERROR_Game_World_MapLoadFailed("Failed to load map.\nCheck application log for details."); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
void CWorld::RegisterInitRMS(const CStrW& scriptFile, const ScriptContext& cx, JS::HandleValue settings, int playerID) | void CWorld::RegisterInitRMS(const CStrW& scriptFile, const ScriptContext& cx, JS::HandleValue settings, int playerID) | ||||
{ | { | ||||
// If scriptFile is empty, a blank map will be generated using settings (no RMS run) | // If scriptFile is empty, a blank map will be generated using settings (no RMS run) | ||||
CTriggerManager* pTriggerManager = NULL; | CTriggerManager* pTriggerManager = NULL; | ||||
m_MapReader->LoadRandomMap(scriptFile, cx, settings, m_Terrain, | m_MapReader->LoadRandomMap(scriptFile, cx, settings, m_Terrain, | ||||
CRenderer::IsInitialised() ? g_Renderer.GetWaterManager() : NULL, | |||||
CRenderer::IsInitialised() ? g_Renderer.GetSkyManager() : NULL, | CRenderer::IsInitialised() ? g_Renderer.GetSkyManager() : NULL, | ||||
&g_LightEnv, m_pGame->GetView(), | &g_LightEnv, m_pGame->GetView(), | ||||
m_pGame->GetView() ? m_pGame->GetView()->GetCinema() : NULL, | m_pGame->GetView() ? m_pGame->GetView()->GetCinema() : NULL, | ||||
pTriggerManager, CRenderer::IsInitialised() ? &g_Renderer.GetPostprocManager() : NULL, | pTriggerManager, CRenderer::IsInitialised() ? &g_Renderer.GetPostprocManager() : NULL, | ||||
m_pGame->GetSimulation2(), playerID); | m_pGame->GetSimulation2(), playerID); | ||||
// registers for delay loading | // registers for delay loading | ||||
RegMemFun(this, &CWorld::DeleteMapReader, L"CWorld::DeleteMapReader", 5); | RegMemFun(this, &CWorld::DeleteMapReader, L"CWorld::DeleteMapReader", 5); | ||||
} | } | ||||
Show All 17 Lines |
Wildfire Games · Phabricator
Could they be unique_ptr?