summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-12 14:37:46 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-12 14:37:46 (GMT)
commit6f814528fcf09a5c2bda26a9054972ca13e4d874 (patch)
treec4c7d22f073b1b6049e8c8379c09b67153479ac7 /src
parentf6f83cc276a7a1b5d8d295440fd0adff7bacf59a (diff)
downloadpowder-6f814528fcf09a5c2bda26a9054972ca13e4d874.zip
powder-6f814528fcf09a5c2bda26a9054972ca13e4d874.tar.gz
Correct save reloading, add Vac and NGrav tools
Diffstat (limited to 'src')
-rw-r--r--src/game/GameController.cpp2
-rw-r--r--src/game/GameController.h1
-rw-r--r--src/game/GameModel.cpp4
-rw-r--r--src/simulation/SaveRenderer.cpp1
-rw-r--r--src/simulation/tools/NGrv.cpp18
-rw-r--r--src/simulation/tools/Vac.cpp18
6 files changed, 40 insertions, 4 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 2a62606..3031fb6 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 e75cf49..ecbe9b3 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 2ae0713..5c9344d 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 50df278..cfa83c6 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 0000000..7a097d5
--- /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 0000000..1ac9c50
--- /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() {}