summaryrefslogtreecommitdiff
path: root/src/game/GameController.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-01-30 00:40:28 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-01-30 00:40:28 (GMT)
commit259fc2bcf75d754af043a5d3fa39b6ee0c0b1dec (patch)
treef0fe2c14499345121371bba0ecc3fe21d17e0953 /src/game/GameController.cpp
parentfe329e9127ebcb8c89c505c4c120e175810d280c (diff)
downloadpowder-259fc2bcf75d754af043a5d3fa39b6ee0c0b1dec.zip
powder-259fc2bcf75d754af043a5d3fa39b6ee0c0b1dec.tar.gz
ASCII for key events, save and Textarea (no caret, yet)
Diffstat (limited to 'src/game/GameController.cpp')
-rw-r--r--src/game/GameController.cpp42
1 files changed, 40 insertions, 2 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 65556db..fd3572f 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -9,6 +9,7 @@
#include "render/RenderController.h"
#include "login/LoginController.h"
#include "interface/Point.h"
+#include "dialogues/ErrorMessage.h"
using namespace std;
@@ -50,10 +51,26 @@ public:
}
};
+class GameController::SSaveCallback: public ControllerCallback
+{
+ GameController * cc;
+public:
+ SSaveCallback(GameController * cc_) { cc = cc_; }
+ virtual void ControllerExit()
+ {
+ if(cc->ssave->GetSaveUploaded())
+ {
+ cc->gameModel->SetSave(new Save(*(cc->ssave->GetSave())));
+ }
+ //cc->gameModel->SetUser(cc->loginWindow->GetUser());
+ }
+};
+
GameController::GameController():
search(NULL),
renderOptions(NULL),
- loginWindow(NULL)
+ loginWindow(NULL),
+ ssave(NULL)
{
gameView = new GameView();
gameModel = new GameModel();
@@ -267,7 +284,28 @@ void GameController::OpenRenderOptions()
void GameController::OpenSaveWindow()
{
- //TODO: Implement
+ if(gameModel->GetUser().ID)
+ {
+ if(gameModel->GetSave())
+ {
+ Save tempSave(*gameModel->GetSave());
+ int tempSaveLength;
+ tempSave.SetData(gameModel->GetSimulation()->Save(tempSaveLength));
+ ssave = new SSaveController(new SSaveCallback(this), tempSave);
+ }
+ else
+ {
+ Save tempSave(0, 0, 0, 0, gameModel->GetUser().Username, "");
+ int tempSaveLength;
+ tempSave.SetData(gameModel->GetSimulation()->Save(tempSaveLength));
+ ssave = new SSaveController(new SSaveCallback(this), tempSave);
+ }
+ ui::Engine::Ref().ShowWindow(ssave->GetView());
+ }
+ else
+ {
+ new ErrorMessage("Error", "You need to login to upload saves.");
+ }
}
void GameController::Vote(int direction)