summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorSimon 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)
commit7c53ca7799832920066c23cfad2f1d7fa82233c7 (patch)
treea29fab25e584fb7f0d3705f13ac0a97abaae122a /src/game
parent28d4aecb6c31ac1e450c1f073a0db13437d9d5d1 (diff)
downloadpowder-7c53ca7799832920066c23cfad2f1d7fa82233c7.zip
powder-7c53ca7799832920066c23cfad2f1d7fa82233c7.tar.gz
Voting, fix save browser
Diffstat (limited to 'src/game')
-rw-r--r--src/game/GameController.cpp8
-rw-r--r--src/game/GameModel.cpp26
-rw-r--r--src/game/GameModel.h1
-rw-r--r--src/game/GameView.cpp25
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;
}
}