diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index f9639e407..8979d2b90 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -83,12 +83,11 @@ GameController::GameController(): HasDone(false) { gameView = new GameView(); - gameModel = new GameModel(); + gameModel = new GameModel(gameView); // mvc is a joke gameModel->BuildQuickOptionMenu(this); gameView->AttachController(this); gameModel->AddObserver(gameView); - gameModel->view = gameView; // mvc is a joke gameView->SetDebugHUD(GlobalPrefs::Ref().Get("Renderer.DebugMode", false)); diff --git a/src/gui/game/GameModel.cpp b/src/gui/game/GameModel.cpp index 0540390b8..c0c8cb547 100644 --- a/src/gui/game/GameModel.cpp +++ b/src/gui/game/GameModel.cpp @@ -50,7 +50,7 @@ HistoryEntry::~HistoryEntry() // so the default dtor for ~HistoryEntry cannot be generated. } -GameModel::GameModel(): +GameModel::GameModel(GameView *newView): activeMenu(SC_POWDERS), currentBrush(0), currentUser(0, ""), @@ -61,7 +61,8 @@ GameModel::GameModel(): colour(255, 0, 0, 255), edgeMode(EDGE_VOID), ambientAirTemp(R_TEMP + 273.15f), - decoSpace(DECOSPACE_SRGB) + decoSpace(DECOSPACE_SRGB), + view(newView) { sim = new Simulation(); sim->useLuaCallbacks = true; diff --git a/src/gui/game/GameModel.h b/src/gui/game/GameModel.h index e940dce9b..b7bf36b20 100644 --- a/src/gui/game/GameModel.h +++ b/src/gui/game/GameModel.h @@ -133,8 +133,10 @@ private: std::optional queuedVote; bool threadedRendering = false; + GameView *view; + public: - GameModel(); + GameModel(GameView *newView); ~GameModel(); void Tick(); @@ -302,5 +304,8 @@ public: void BeforeSim(); void AfterSim(); - GameView *view = nullptr; + GameView *GetView() const + { + return view; + } }; diff --git a/src/gui/game/tool/SampleTool.cpp b/src/gui/game/tool/SampleTool.cpp index bb38eaeac..00c1d4733 100644 --- a/src/gui/game/tool/SampleTool.cpp +++ b/src/gui/game/tool/SampleTool.cpp @@ -23,7 +23,7 @@ void SampleTool::Draw(Simulation * sim, Brush const &brush, ui::Point position) { if(gameModel.GetColourSelectorVisibility()) { - pixel colour = gameModel.view->GetPixelUnderMouse(); + pixel colour = gameModel.GetView()->GetPixelUnderMouse(); gameModel.SetColourSelectorColour(RGB::Unpack(colour).WithAlpha(0xFF)); } else diff --git a/src/lua/LuaSimulation.cpp b/src/lua/LuaSimulation.cpp index 65d640d11..035ec8561 100644 --- a/src/lua/LuaSimulation.cpp +++ b/src/lua/LuaSimulation.cpp @@ -831,7 +831,7 @@ static int floodDeco(lua_State *L) auto *lsi = GetLSI(); // hilariously broken, intersects with console and all Lua graphics - auto &rendererFrame = lsi->gameModel->view->GetRendererFrame(); + auto &rendererFrame = lsi->gameModel->GetView()->GetRendererFrame(); auto loc = RGB::Unpack(rendererFrame[{ x, y }]); lsi->sim->ApplyDecorationFill(rendererFrame, x, y, r, g, b, a, loc.Red, loc.Green, loc.Blue); return 0;