diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-28 19:56:13 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-01-28 19:56:13 (GMT) |
| commit | 7c53ca7799832920066c23cfad2f1d7fa82233c7 (patch) | |
| tree | a29fab25e584fb7f0d3705f13ac0a97abaae122a /src/game | |
| parent | 28d4aecb6c31ac1e450c1f073a0db13437d9d5d1 (diff) | |
| download | powder-7c53ca7799832920066c23cfad2f1d7fa82233c7.zip powder-7c53ca7799832920066c23cfad2f1d7fa82233c7.tar.gz | |
Voting, fix save browser
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/GameController.cpp | 8 | ||||
| -rw-r--r-- | src/game/GameModel.cpp | 26 | ||||
| -rw-r--r-- | src/game/GameModel.h | 1 | ||||
| -rw-r--r-- | src/game/GameView.cpp | 25 |
4 files changed, 40 insertions, 20 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index f0c575d..1e41542 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -33,10 +33,6 @@ public: { if(cc->search->GetLoadedSave()) { - if(cc->gameModel->GetSave()) - { - delete cc->gameModel->GetSave(); - } cc->gameModel->SetSave(new Save(*(cc->search->GetLoadedSave()))); } } @@ -279,7 +275,8 @@ void GameController::OpenSaveWindow() void GameController::Vote(int direction) { - //TODO: Implement + if(gameModel->GetSave() && gameModel->GetUser().ID && gameModel->GetSave()->GetID() && gameModel->GetSave()->GetVote()==0) + gameModel->SetVote(direction); } void GameController::ChangeBrush() @@ -289,6 +286,7 @@ void GameController::ChangeBrush() void GameController::ClearSim() { + gameModel->SetSave(NULL); gameModel->ClearSimulation(); } diff --git a/src/game/GameModel.cpp b/src/game/GameModel.cpp index 456d9c4..34cae1d 100644 --- a/src/game/GameModel.cpp +++ b/src/game/GameModel.cpp @@ -6,14 +6,15 @@ #include "interface/Point.h" #include "Brush.h" #include "EllipseBrush.h" +#include "client/Client.h" GameModel::GameModel(): activeTool(NULL), sim(NULL), ren(NULL), - currentSave(NULL), currentBrush(0), - currentUser(0, "") + currentUser(0, ""), + currentSave(NULL) { sim = new Simulation(); ren = new Renderer(ui::Engine::Ref().g, sim); @@ -66,6 +67,19 @@ GameModel::~GameModel() delete activeTool; } +void GameModel::SetVote(int direction) +{ + if(currentSave) + { + RequestStatus status = Client::Ref().ExecVote(currentSave->GetID(), direction); + if(status == RequestOkay) + { + currentSave->vote = direction; + notifySaveChanged(); + } + } +} + Brush * GameModel::GetBrush() { return brushList[currentBrush]; @@ -140,8 +154,13 @@ Save * GameModel::GetSave() void GameModel::SetSave(Save * newSave) { + if(currentSave) + delete currentSave; currentSave = newSave; - sim->Load(currentSave->GetData(), currentSave->GetDataLength()); + if(currentSave) + { + sim->Load(currentSave->GetData(), currentSave->GetDataLength()); + } notifySaveChanged(); } @@ -218,6 +237,7 @@ int GameModel::GetZoomFactor() void GameModel::SetUser(User user) { currentUser = user; + Client::Ref().SetAuthUser(user); notifyUserChanged(); } diff --git a/src/game/GameModel.h b/src/game/GameModel.h index 3c26bf3..39c7f4a 100644 --- a/src/game/GameModel.h +++ b/src/game/GameModel.h @@ -47,6 +47,7 @@ public: GameModel(); ~GameModel(); + void SetVote(int direction); Save * GetSave(); Brush * GetBrush(); void SetSave(Save * newSave); diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 3b1cd26..9a2eb2d 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -327,6 +327,7 @@ void GameView::NotifyUserChanged(GameModel * sender) { loginButton->SetText(sender->GetUser().Username); } + NotifySaveChanged(sender); } @@ -339,26 +340,26 @@ 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 - { - upVoteButton->Enabled = true; - downVoteButton->Enabled = true; - tagSimulationButton->Enabled = true; - } + upVoteButton->Enabled = (sender->GetSave()->GetID() && sender->GetUser().ID && sender->GetSave()->GetVote()==0); + if(sender->GetSave()->GetID() && sender->GetUser().ID && sender->GetSave()->GetVote()==1) + upVoteButton->SetBackgroundColour(ui::Colour(0, 200, 40)); else - { - upVoteButton->Enabled = false; - downVoteButton->Enabled = false; - tagSimulationButton->Enabled = false; - } + upVoteButton->SetBackgroundColour(ui::Colour(0, 0, 0)); + downVoteButton->Enabled = upVoteButton->Enabled; + if(sender->GetSave()->GetID() && sender->GetUser().ID && sender->GetSave()->GetVote()==-1) + downVoteButton->SetBackgroundColour(ui::Colour(200, 40, 40)); + else + downVoteButton->SetBackgroundColour(ui::Colour(0, 0, 0)); + tagSimulationButton->Enabled = (sender->GetSave()->GetID() && sender->GetUser().ID); } else { reloadButton->Enabled = false; upVoteButton->Enabled = false; + upVoteButton->SetBackgroundColour(ui::Colour(0, 0, 0)); downVoteButton->Enabled = false; + upVoteButton->SetBackgroundColour(ui::Colour(0, 0, 0)); tagSimulationButton->Enabled = false; } } |
