diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 2a626062c..3031fb622 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -612,7 +612,7 @@ void GameController::ReloadSim() { if(gameModel->GetSave() && gameModel->GetSave()->GetGameSave()) { - gameModel->GetSimulation()->Load(gameModel->GetSave()->GetGameSave()); + gameModel->SetSave(gameModel->GetSave()); } } diff --git a/src/game/GameController.h b/src/game/GameController.h index e75cf491b..ecbe9b312 100644 --- a/src/game/GameController.h +++ b/src/game/GameController.h @@ -78,6 +78,7 @@ public: void SetActiveMenu(Menu * menu); void SetActiveTool(int toolSelection, Tool * tool); void SetColour(ui::Colour colour); + void SetToolStrength(float value); void OpenSearch(); void OpenLogin(); void OpenTags(); diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 2ae0713f8..5c9344d8d 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -281,13 +281,13 @@ SaveInfo * GameModel::GetSave() void GameModel::SetSave(SaveInfo * newSave) { - if(currentSave) + if(currentSave != newSave) delete currentSave; currentSave = newSave; if(currentSave && currentSave->GetGameSave()) { GameSave * saveData = currentSave->GetGameSave(); - SetPaused(saveData->paused); + SetPaused(saveData->paused & GetPaused()); sim->gravityMode = saveData->gravityMode; sim->air->airMode = saveData->airMode; sim->legacy_enable = saveData->legacyEnable; diff --git a/src/simulation/SaveRenderer.cpp b/src/simulation/SaveRenderer.cpp index 50df27854..cfa83c6d3 100644 --- a/src/simulation/SaveRenderer.cpp +++ b/src/simulation/SaveRenderer.cpp @@ -9,7 +9,6 @@ #include "Graphics.h" #include "Simulation.h" #include "Renderer.h" -#include "SaveLoader.h" SaveRenderer::SaveRenderer(){ diff --git a/src/simulation/tools/NGrv.cpp b/src/simulation/tools/NGrv.cpp new file mode 100644 index 000000000..7a097d555 --- /dev/null +++ b/src/simulation/tools/NGrv.cpp @@ -0,0 +1,18 @@ +#include "simulation/Tools.h" +#include "simulation/Simulation.h" +//#TPT-Directive ToolClass Tool_NGrv TOOL_NGRV 5 +Tool_NGrv::Tool_NGrv() +{ + Identifier = "DEFAULT_TOOL_NGRV"; + Name = "NGRV"; + Colour = PIXPACK(0xAACCFF); + Description = "Creates a short-lasting negative gravity well"; +} + +int Tool_NGrv::Perform(Simulation * sim, Particle * cpart, int x, int y, float strength) +{ + sim->gravmap[((y/CELL)*(XRES/CELL))+(x/CELL)] += 0.03f*strength; + return 1; +} + +Tool_NGrv::~Tool_NGrv() {} \ No newline at end of file diff --git a/src/simulation/tools/Vac.cpp b/src/simulation/tools/Vac.cpp new file mode 100644 index 000000000..1ac9c5078 --- /dev/null +++ b/src/simulation/tools/Vac.cpp @@ -0,0 +1,18 @@ +#include "simulation/Tools.h" +#include "simulation/Air.h" +//#TPT-Directive ToolClass Tool_Vac TOOL_VAC 2 +Tool_Vac::Tool_Vac() +{ + Identifier = "DEFAULT_TOOL_VAC"; + Name = "VAC"; + Colour = PIXPACK(0x000000); + Description = "Removes air pressure"; +} + +int Tool_Vac::Perform(Simulation * sim, Particle * cpart, int x, int y, float strength) +{ + sim->air->pv[y/CELL][x/CELL] -= 0.03f*strength; + return 1; +} + +Tool_Vac::~Tool_Vac() {}