Index: source/simulation2/Simulation2.cpp =================================================================== --- source/simulation2/Simulation2.cpp +++ source/simulation2/Simulation2.cpp @@ -54,12 +54,11 @@ { public: CSimulation2Impl(CUnitManager* unitManager, ScriptContext& cx, CTerrain* terrain) : + m_SimContext{terrain, unitManager}, m_ComponentManager{m_SimContext, cx}, m_MapSettings{cx.GetGeneralJSContext()}, m_InitAttributes{cx.GetGeneralJSContext()} { - m_SimContext.m_UnitManager = unitManager; - m_SimContext.m_Terrain = terrain; m_ComponentManager.LoadComponentTypes(); RegisterFileReloadFunc(ReloadChangedFileCB, this); @@ -406,8 +405,7 @@ m_SecondaryTerrain = std::make_unique(); - m_SecondaryContext = std::make_unique(); - m_SecondaryContext->m_Terrain = m_SecondaryTerrain.get(); + m_SecondaryContext = std::make_unique(m_SecondaryTerrain.get()); m_SecondaryComponentManager = std::make_unique(*m_SecondaryContext, scriptInterface.GetContext()); m_SecondaryComponentManager->LoadComponentTypes(); Index: source/simulation2/system/SimContext.h =================================================================== --- source/simulation2/system/SimContext.h +++ source/simulation2/system/SimContext.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2016 Wildfire Games. +/* Copyright (C) 2024 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -32,7 +32,7 @@ class CSimContext { public: - CSimContext(); + CSimContext(CTerrain* terrain = nullptr, CUnitManager* unitManager = nullptr); ~CSimContext(); CComponentManager& GetComponentManager() const; @@ -55,13 +55,11 @@ int GetCurrentDisplayedPlayer() const; private: - CComponentManager* m_ComponentManager; + CComponentManager* m_ComponentManager{nullptr}; CUnitManager* m_UnitManager; CTerrain* m_Terrain; CEntityHandle m_SystemEntity; - - friend class CSimulation2Impl; }; #endif // INCLUDED_SIMCONTEXT Index: source/simulation2/system/SimContext.cpp =================================================================== --- source/simulation2/system/SimContext.cpp +++ source/simulation2/system/SimContext.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2016 Wildfire Games. +/* Copyright (C) 2024 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -23,8 +23,9 @@ #include "ps/Game.h" -CSimContext::CSimContext() : - m_ComponentManager(NULL), m_UnitManager(NULL), m_Terrain(NULL) +CSimContext::CSimContext(CTerrain* terrain /*= nullptr*/, CUnitManager* unitManager /*= nullptr*/) : + m_UnitManager{unitManager}, + m_Terrain{terrain} { }