Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/ps/World.cpp
/* Copyright (C) 2017 Wildfire Games. | /* Copyright (C) 2020 Wildfire Games. | ||||
* This file is part of 0 A.D. | * This file is part of 0 A.D. | ||||
* | * | ||||
* 0 A.D. is free software: you can redistribute it and/or modify | * 0 A.D. is free software: you can redistribute it and/or modify | ||||
* it under the terms of the GNU General Public License as published by | * it under the terms of the GNU General Public License as published by | ||||
* the Free Software Foundation, either version 2 of the License, or | * the Free Software Foundation, either version 2 of the License, or | ||||
* (at your option) any later version. | * (at your option) any later version. | ||||
* | * | ||||
* 0 A.D. is distributed in the hope that it will be useful, | * 0 A.D. is distributed in the hope that it will be useful, | ||||
▲ Show 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | CWorld::CWorld(CGame *pGame): | ||||
m_UnitManager(new CUnitManager()), | m_UnitManager(new CUnitManager()), | ||||
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, JSRuntime* rt, 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, rt, settings, m_Terrain, | m_MapReader->LoadMap(mapfilename, cx, settings, m_Terrain, | ||||
CRenderer::IsInitialised() ? g_Renderer.GetWaterManager() : NULL, | 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, JSRuntime* rt, 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, rt, settings, m_Terrain, | m_MapReader->LoadRandomMap(scriptFile, cx, settings, m_Terrain, | ||||
CRenderer::IsInitialised() ? g_Renderer.GetWaterManager() : NULL, | 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 18 Lines |
Wildfire Games · Phabricator