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 | |
| 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')
| -rw-r--r-- | src/game/GameController.cpp | 48 | ||||
| -rw-r--r-- | src/game/GameController.h | 2 | ||||
| -rw-r--r-- | src/game/GameModel.cpp | 1 | ||||
| -rw-r--r-- | src/game/GameView.cpp | 1 | ||||
| -rw-r--r-- | src/game/Tool.h | 1 |
5 files changed, 50 insertions, 3 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()); } diff --git a/src/game/GameController.h b/src/game/GameController.h index 4f076fd..28edd86 100644 --- a/src/game/GameController.h +++ b/src/game/GameController.h @@ -26,6 +26,8 @@ private: LoginController * loginWindow; public: class LoginCallback; + class SearchCallback; + class RenderCallback; GameController(); ~GameController(); GameView * GetView(); diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 33eb143..3085b09 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -122,6 +122,7 @@ Save * GameModel::GetSave() void GameModel::SetSave(Save * newSave) { currentSave = newSave; + sim->Load(currentSave->GetData(), currentSave->GetDataLength()); notifySaveChanged(); } diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 4695227..163c2f7 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -327,6 +327,7 @@ void GameView::NotifySaveChanged(GameModel * sender) { if(sender->GetSave()) { + saveSimulationButton->SetText(sender->GetSave()->name); reloadButton->Enabled = true; if(sender->GetSave()->GetID()) //Online saves have an ID, local saves have an ID of 0 and a filename { diff --git a/src/game/Tool.h b/src/game/Tool.h index 4777e6d..1cf8ce4 100644 --- a/src/game/Tool.h +++ b/src/game/Tool.h @@ -46,7 +46,6 @@ public: sim->create_parts(position.X, position.Y, 1, 1, toolID, 0, brush); } virtual void DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) { - std::cout << position1.X << toolID << brush << std::endl; sim->create_line(position1.X, position1.Y, position2.X, position2.Y, 1, 1, toolID, 0, brush); } virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {} |
