summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-09-30 15:19:44 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-09-30 15:19:44 (GMT)
commit90ebd3e54c376b7baa80d9d739f3ace62f6991cd (patch)
tree088fda9399f50b6f172e36ae5ffe6c89c0f338ab /src/game
parentd6f832b4f572bbb79a33590da71c2d8975b15728 (diff)
downloadpowder-90ebd3e54c376b7baa80d9d739f3ace62f6991cd.zip
powder-90ebd3e54c376b7baa80d9d739f3ace62f6991cd.tar.gz
Better hanling of edgeMode and "New Sim" button
Diffstat (limited to 'src/game')
-rw-r--r--src/game/GameController.cpp2
-rw-r--r--src/game/GameModel.cpp35
-rw-r--r--src/game/GameModel.h5
3 files changed, 37 insertions, 5 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 19933cb..0ed9cf0 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -1023,7 +1023,7 @@ void GameController::OpenStamps()
void GameController::OpenOptions()
{
- options = new OptionsController(gameModel->GetSimulation(), new OptionsCallback(this));
+ options = new OptionsController(gameModel, new OptionsCallback(this));
ui::Engine::Ref().ShowWindow(options->GetView());
}
diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp
index 55f8e9c..15dfad1 100644
--- a/src/game/GameModel.cpp
+++ b/src/game/GameModel.cpp
@@ -29,7 +29,8 @@ GameModel::GameModel():
colour(255, 0, 0, 255),
toolStrength(1.0f),
activeColourPreset(-1),
- activeMenu(NULL)
+ activeMenu(NULL),
+ edgeMode(0)
{
sim = new Simulation();
ren = new Renderer(ui::Engine::Ref().g, sim);
@@ -75,7 +76,8 @@ GameModel::GameModel():
}
//Load config into simulation
- sim->SetEdgeMode(Client::Ref().GetPrefInteger("Simulation.EdgeMode", 0));
+ edgeMode = Client::Ref().GetPrefInteger("Simulation.EdgeMode", 0);
+ sim->SetEdgeMode(edgeMode);
//Load last user
if(Client::Ref().GetAuthUser().ID)
@@ -350,6 +352,17 @@ Tool * GameModel::GetToolFromIdentifier(std::string identifier)
return NULL;
}
+void GameModel::SetEdgeMode(int edgeMode)
+{
+ this->edgeMode = edgeMode;
+ sim->SetEdgeMode(edgeMode);
+}
+
+int GameModel::GetEdgeMode()
+{
+ return this->edgeMode;
+}
+
std::deque<Snapshot*> GameModel::GetHistory()
{
return history;
@@ -512,8 +525,8 @@ void GameModel::SetSave(SaveInfo * newSave)
sim->grav->start_grav_async();
else
sim->grav->stop_grav_async();
- sim->clear_sim();
sim->SetEdgeMode(0);
+ sim->clear_sim();
ren->ClearAccumulation();
sim->Load(saveData);
}
@@ -541,8 +554,8 @@ void GameModel::SetSaveFile(SaveFile * newSave)
{
sim->grav->stop_grav_async();
}
- sim->clear_sim();
sim->SetEdgeMode(0);
+ sim->clear_sim();
ren->ClearAccumulation();
sim->Load(saveData);
}
@@ -733,6 +746,20 @@ void GameModel::ClearSimulation()
{
sim->clear_sim();
ren->ClearAccumulation();
+
+ //Load defaults
+ SetPaused(false);
+ sim->gravityMode = 0;
+ sim->air->airMode = 0;
+ sim->legacy_enable = false;
+ sim->water_equal_test = false;
+ sim->grav->stop_grav_async();
+ sim->SetEdgeMode(edgeMode);
+ sim->clear_sim();
+ ren->ClearAccumulation();
+
+ notifySaveChanged();
+ UpdateQuickOptions();
}
void GameModel::SetStamp(GameSave * save)
diff --git a/src/game/GameModel.h b/src/game/GameModel.h
index 10b4b1c..2ca8c2c 100644
--- a/src/game/GameModel.h
+++ b/src/game/GameModel.h
@@ -68,6 +68,8 @@ private:
bool colourSelector;
ui::Colour colour;
+ int edgeMode;
+
std::string infoTip;
std::string toolTip;
//bool zoomEnabled;
@@ -100,6 +102,9 @@ public:
Tool * GetToolFromIdentifier(std::string identifier);
+ void SetEdgeMode(int edgeMode);
+ int GetEdgeMode();
+
void SetActiveColourPreset(int preset);
int GetActiveColourPreset();