Changeset View
Changeset View
Standalone View
Standalone View
ps/trunk/source/ps/World.cpp
/* Copyright (C) 2022 Wildfire Games. | /* Copyright (C) 2023 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 All 15 Lines | |||||
#include "graphics/Terrain.h" | #include "graphics/Terrain.h" | ||||
#include "graphics/UnitManager.h" | #include "graphics/UnitManager.h" | ||||
#include "lib/timer.h" | #include "lib/timer.h" | ||||
#include "ps/CLogger.h" | #include "ps/CLogger.h" | ||||
#include "ps/CStr.h" | #include "ps/CStr.h" | ||||
#include "ps/Errors.h" | #include "ps/Errors.h" | ||||
#include "ps/Game.h" | #include "ps/Game.h" | ||||
#include "ps/Loader.h" | #include "ps/Loader.h" | ||||
#include "ps/LoaderThunks.h" | |||||
#include "ps/World.h" | #include "ps/World.h" | ||||
#include "renderer/Renderer.h" | #include "renderer/Renderer.h" | ||||
#include "renderer/SceneRenderer.h" | #include "renderer/SceneRenderer.h" | ||||
#include "simulation2/Simulation2.h" | #include "simulation2/Simulation2.h" | ||||
/** | /** | ||||
* Global light settings. | * Global light settings. | ||||
* It is not a member of CWorld because it is passed | * It is not a member of CWorld because it is passed | ||||
Show All 31 Lines | try | ||||
m_MapReader->LoadMap(mapfilename, cx, settings, m_Terrain, | m_MapReader->LoadMap(mapfilename, cx, settings, m_Terrain, | ||||
CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().GetWaterManager() : NULL, | CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().GetWaterManager() : NULL, | ||||
CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().GetSkyManager() : NULL, | CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().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); | LDR_Register([this](const double) | ||||
{ | |||||
return 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.GetSceneRenderer().GetWaterManager() : NULL, | CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().GetWaterManager() : NULL, | ||||
CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().GetSkyManager() : NULL, | CRenderer::IsInitialised() ? &g_Renderer.GetSceneRenderer().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); | LDR_Register([this](const double) | ||||
{ | |||||
return DeleteMapReader(); | |||||
}, L"CWorld::DeleteMapReader", 5); | |||||
} | } | ||||
int CWorld::DeleteMapReader() | int CWorld::DeleteMapReader() | ||||
{ | { | ||||
SAFE_DELETE(m_MapReader); | SAFE_DELETE(m_MapReader); | ||||
return 0; | return 0; | ||||
} | } | ||||
Show All 10 Lines |
Wildfire Games · Phabricator