diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-26 01:13:33 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-26 01:13:33 (GMT) |
| commit | 9e1be78bc21d1fb76a19ce12ef36193aea6e2b93 (patch) | |
| tree | 081b67d551bb44fecbf6deb99b6c44ea9789614c /src/game/GameController.cpp | |
| parent | b2d3257ae944a3ea3b57dc8ee4171b1b2f85483e (diff) | |
| download | powder-9e1be78bc21d1fb76a19ce12ef36193aea6e2b93.zip powder-9e1be78bc21d1fb76a19ce12ef36193aea6e2b93.tar.gz | |
I've got to a point where I can no longer be bothered to think of a proper commit comment
Diffstat (limited to 'src/game/GameController.cpp')
| -rw-r--r-- | src/game/GameController.cpp | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 5399cf8..e8efe0b 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -4,6 +4,7 @@ #include "Config.h" #include "GameController.h" #include "GameModel.h" +#include "search/Save.h" #include "search/SearchController.h" #include "render/RenderController.h" #include "login/LoginController.h" @@ -22,6 +23,37 @@ public: } }; + +class GameController::SearchCallback: public ControllerCallback +{ + GameController * cc; +public: + SearchCallback(GameController * cc_) { cc = cc_; } + virtual void ControllerExit() + { + if(cc->search->GetLoadedSave()) + { + if(cc->gameModel->GetSave()) + { + delete cc->gameModel->GetSave(); + } + cc->gameModel->SetSave(new Save(*(cc->search->GetLoadedSave()))); + } + } +}; + + +class GameController::RenderCallback: public ControllerCallback +{ + GameController * cc; +public: + RenderCallback(GameController * cc_) { cc = cc_; } + virtual void ControllerExit() + { + //cc->gameModel->SetUser(cc->loginWindow->GetUser()); + } +}; + GameController::GameController(): search(NULL), renderOptions(NULL), @@ -117,6 +149,18 @@ void GameController::DrawPoints(queue<ui::Point*> & pointQueue) void GameController::Update() { //gameModel->GetSimulation()->update_particles(); + if(renderOptions && renderOptions->HasExited) + { + delete renderOptions; + renderOptions = NULL; + } + + if(search && search->HasExited) + { + delete search; + search = NULL; + } + if(loginWindow && loginWindow->HasExited) { delete loginWindow; @@ -146,7 +190,7 @@ void GameController::SetActiveTool(Tool * tool) void GameController::OpenSearch() { - search = new SearchController(); + search = new SearchController(new SearchCallback(this)); ui::Engine::Ref().ShowWindow(search->GetView()); } @@ -168,7 +212,7 @@ void GameController::OpenDisplayOptions() void GameController::OpenRenderOptions() { - renderOptions = new RenderController(gameModel->GetRenderer()); + renderOptions = new RenderController(gameModel->GetRenderer(), new RenderCallback(this)); ui::Engine::Ref().ShowWindow(renderOptions->GetView()); } |
