summaryrefslogtreecommitdiff
path: root/src/game/GameModel.cpp
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/GameModel.cpp
parent28d4aecb6c31ac1e450c1f073a0db13437d9d5d1 (diff)
downloadpowder-7c53ca7799832920066c23cfad2f1d7fa82233c7.zip
powder-7c53ca7799832920066c23cfad2f1d7fa82233c7.tar.gz
Voting, fix save browser
Diffstat (limited to 'src/game/GameModel.cpp')
-rw-r--r--src/game/GameModel.cpp26
1 files changed, 23 insertions, 3 deletions
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();
}