summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-03-22 13:50:43 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-03-22 13:50:43 (GMT)
commit23873eae719a1c0a1227a4e108a158a9ec625462 (patch)
treed397224fa7a0d01de2f18d2449c3b5d4fcaa6638 /src/game
parent7e3d45bbfb701a5eca3e93b589680d8651ada016 (diff)
downloadpowder-23873eae719a1c0a1227a4e108a158a9ec625462.zip
powder-23873eae719a1c0a1227a4e108a158a9ec625462.tar.gz
More work on Tags - display tags in Tag window and Tag button
Diffstat (limited to 'src/game')
-rw-r--r--src/game/GameController.cpp29
-rw-r--r--src/game/GameController.h1
-rw-r--r--src/game/GameView.cpp15
3 files changed, 43 insertions, 2 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index 25f02e9..80f45ff 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -66,6 +66,17 @@ public:
}
};
+class GameController::TagsCallback: public ControllerCallback
+{
+ GameController * cc;
+public:
+ TagsCallback(GameController * cc_) { cc = cc_; }
+ virtual void ControllerExit()
+ {
+ cc->gameModel->SetSave(new Save(*(cc->tagsWindow->GetSave())));
+ }
+};
+
GameController::GameController():
search(NULL),
renderOptions(NULL),
@@ -338,8 +349,22 @@ void GameController::OpenLogin()
void GameController::OpenTags()
{
- tagsWindow = new TagsController(NULL);
- ui::Engine::Ref().ShowWindow(tagsWindow->GetView());
+ if(gameModel->GetUser().ID)
+ {
+ if(gameModel->GetSave() && gameModel->GetSave()->GetID())
+ {
+ tagsWindow = new TagsController(new TagsCallback(this), gameModel->GetSave());
+ ui::Engine::Ref().ShowWindow(tagsWindow->GetView());
+ }
+ else
+ {
+ new ErrorMessage("Error", "No save open");
+ }
+ }
+ else
+ {
+ new ErrorMessage("Error", "You need to login to edit tags.");
+ }
}
void GameController::OpenDisplayOptions()
diff --git a/src/game/GameController.h b/src/game/GameController.h
index 7944dc7..d405051 100644
--- a/src/game/GameController.h
+++ b/src/game/GameController.h
@@ -40,6 +40,7 @@ public:
class SearchCallback;
class RenderCallback;
class SSaveCallback;
+ class TagsCallback;
GameController();
~GameController();
GameView * GetView();
diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp
index 82293e4..1fa039c 100644
--- a/src/game/GameView.cpp
+++ b/src/game/GameView.cpp
@@ -1,3 +1,5 @@
+#include <sstream>
+
#include "Config.h"
#include "GameView.h"
#include "interface/Window.h"
@@ -426,6 +428,18 @@ void GameView::NotifySaveChanged(GameModel * sender)
else
downVoteButton->SetBackgroundColour(ui::Colour(0, 0, 0));
tagSimulationButton->Enabled = (sender->GetSave()->GetID() && sender->GetUser().ID);
+ if(sender->GetSave()->GetID())
+ {
+ std::stringstream tagsStream;
+ std::vector<string> tags = sender->GetSave()->GetTags();
+ for(int i = 0; i < tags.size(); i++)
+ {
+ tagsStream << sender->GetSave()->GetTags()[i];
+ if(i < tags.size()-1)
+ tagsStream << " ";
+ }
+ tagSimulationButton->SetText(tagsStream.str());
+ }
}
else
{
@@ -436,6 +450,7 @@ void GameView::NotifySaveChanged(GameModel * sender)
downVoteButton->Enabled = false;
upVoteButton->SetBackgroundColour(ui::Colour(0, 0, 0));
tagSimulationButton->Enabled = false;
+ tagSimulationButton->SetText("");
}
}