diff options
| author | Simon 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) |
| commit | 23873eae719a1c0a1227a4e108a158a9ec625462 (patch) | |
| tree | d397224fa7a0d01de2f18d2449c3b5d4fcaa6638 /src/game | |
| parent | 7e3d45bbfb701a5eca3e93b589680d8651ada016 (diff) | |
| download | powder-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.cpp | 29 | ||||
| -rw-r--r-- | src/game/GameController.h | 1 | ||||
| -rw-r--r-- | src/game/GameView.cpp | 15 |
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(""); } } |
