summaryrefslogtreecommitdiff
path: root/src/game/GameController.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-09 18:42:07 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-09 18:42:07 (GMT)
commit050ad82155344d9ff0db551386c804154bceb560 (patch)
tree34e938679d13c1b5e7676bc213236bbf399f581f /src/game/GameController.cpp
parentc408e035faf88f968ea208d48ced4b7c3c9dc32d (diff)
downloadpowder-050ad82155344d9ff0db551386c804154bceb560.zip
powder-050ad82155344d9ff0db551386c804154bceb560.tar.gz
Unify stamp and clipboard placement code, GameSave translation and transoformation working (not particularly well)
Diffstat (limited to 'src/game/GameController.cpp')
-rw-r--r--src/game/GameController.cpp41
1 files changed, 29 insertions, 12 deletions
diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp
index e0e8673..7c70797 100644
--- a/src/game/GameController.cpp
+++ b/src/game/GameController.cpp
@@ -107,6 +107,7 @@ public:
if(cc->localBrowser->GetSave())
{
cc->gameModel->SetStamp(cc->localBrowser->GetSave()->GetGameSave());
+ cc->LoadStamp();
}
else
cc->gameModel->SetStamp(NULL);
@@ -168,20 +169,11 @@ GameView * GameController::GetView()
return gameView;
}
-void GameController::PlaceStamp(ui::Point position)
+void GameController::PlaceSave(ui::Point position)
{
- if(gameModel->GetStamp())
+ if(gameModel->GetPlaceSave())
{
- gameModel->GetSimulation()->Load(position.X, position.Y, gameModel->GetStamp());
- gameModel->SetPaused(gameModel->GetPaused());
- }
-}
-
-void GameController::PlaceClipboard(ui::Point position)
-{
- if(gameModel->GetClipboard())
- {
- gameModel->GetSimulation()->Load(position.X, position.Y, gameModel->GetClipboard());
+ gameModel->GetSimulation()->Load(position.X, position.Y, gameModel->GetPlaceSave());
gameModel->SetPaused(gameModel->GetPaused());
}
}
@@ -309,6 +301,31 @@ void GameController::DrawPoints(int toolSelection, queue<ui::Point*> & pointQueu
}
}
+void GameController::LoadClipboard()
+{
+ gameModel->SetPlaceSave(gameModel->GetClipboard());
+}
+
+void GameController::LoadStamp()
+{
+ gameModel->SetPlaceSave(gameModel->GetStamp());
+}
+
+void GameController::TranslateSave(ui::Point point)
+{
+ matrix2d transform = m2d_identity;
+ vector2d translate = v2d_new(point.X, point.Y);
+ gameModel->GetPlaceSave()->Transform(transform, translate);
+ gameModel->SetPlaceSave(gameModel->GetPlaceSave());
+}
+
+void GameController::TransformSave(matrix2d transform)
+{
+ vector2d translate = v2d_zero;
+ gameModel->GetPlaceSave()->Transform(transform, translate);
+ gameModel->SetPlaceSave(gameModel->GetPlaceSave());
+}
+
void GameController::ToolClick(int toolSelection, ui::Point point)
{
Simulation * sim = gameModel->GetSimulation();