summaryrefslogtreecommitdiff
path: root/src/game/GameController.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/GameController.cpp')
-rw-r--r--src/game/GameController.cpp62
1 files changed, 40 insertions, 22 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index eab5dcc..5cf7654 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -17,6 +17,8 @@
#include "update/UpdateActivity.h"
#include "Notification.h"
#include "filebrowser/FileBrowserActivity.h"
+#include "save/LocalSaveActivity.h"
+#include "save/ServerSaveActivity.h"
using namespace std;
@@ -76,22 +78,6 @@ 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 SaveInfo(*(cc->ssave->GetSave())));
-
- }
- //cc->gameModel->SetUser(cc->loginWindow->GetUser());
- }
-};
-
class GameController::TagsCallback: public ControllerCallback
{
GameController * cc;
@@ -122,7 +108,6 @@ GameController::GameController():
search(NULL),
renderOptions(NULL),
loginWindow(NULL),
- ssave(NULL),
console(NULL),
tagsWindow(NULL),
options(NULL),
@@ -537,7 +522,24 @@ void GameController::OpenSearch()
void GameController::OpenLocalSaveWindow()
{
-
+ Simulation * sim = gameModel->GetSimulation();
+ GameSave * gameSave = sim->Save();
+ gameSave->paused = gameModel->GetPaused();
+ gameSave->gravityMode = sim->gravityMode;
+ gameSave->airMode = sim->air->airMode;
+ gameSave->legacyEnable = sim->legacy_enable;
+ gameSave->waterEEnabled = sim->water_equal_test;
+ gameSave->gravityEnable = sim->grav->ngrav_enable;
+ if(!gameSave)
+ {
+ new ErrorMessage("Error", "Unable to build save.");
+ }
+ else
+ {
+ SaveFile tempSave("");
+ tempSave.SetGameSave(gameSave);
+ new LocalSaveActivity(tempSave);
+ }
}
void GameController::LoadSaveFile(SaveFile * file)
@@ -545,6 +547,12 @@ void GameController::LoadSaveFile(SaveFile * file)
gameModel->SetSaveFile(file);
}
+
+void GameController::LoadSave(SaveInfo * save)
+{
+ gameModel->SetSave(save);
+}
+
void GameController::OpenLocalBrowse()
{
class LocalSaveOpenCallback: public FileSelectedCallback
@@ -579,7 +587,7 @@ void GameController::OpenElementSearch()
continue;
toolList.insert(toolList.end(), menuToolList.begin(), menuToolList.end());
}
- ui::Engine::Ref().ShowWindow(new ElementSearchActivity(gameModel, toolList));
+ new ElementSearchActivity(gameModel, toolList);
}
void GameController::OpenTags()
@@ -630,6 +638,17 @@ void GameController::OpenRenderOptions()
void GameController::OpenSaveWindow()
{
+ class SaveUploadedCallback: public ServerSaveActivity::SaveUploadedCallback
+ {
+ GameController * c;
+ public:
+ SaveUploadedCallback(GameController * _c): c(_c) {}
+ virtual ~SaveUploadedCallback() {};
+ virtual void SaveUploaded(SaveInfo save)
+ {
+ c->LoadSave(&save);
+ }
+ };
if(gameModel->GetUser().ID)
{
Simulation * sim = gameModel->GetSimulation();
@@ -650,15 +669,14 @@ void GameController::OpenSaveWindow()
{
SaveInfo tempSave(*gameModel->GetSave());
tempSave.SetGameSave(gameSave);
- ssave = new SSaveController(new SSaveCallback(this), tempSave);
+ new ServerSaveActivity(tempSave, new SaveUploadedCallback(this));
}
else
{
SaveInfo tempSave(0, 0, 0, 0, gameModel->GetUser().Username, "");
tempSave.SetGameSave(gameSave);
- ssave = new SSaveController(new SSaveCallback(this), tempSave);
+ new ServerSaveActivity(tempSave, new SaveUploadedCallback(this));
}
- ui::Engine::Ref().ShowWindow(ssave->GetView());
}
}
else