diff options
| author | Simon 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) |
| commit | 050ad82155344d9ff0db551386c804154bceb560 (patch) | |
| tree | 34e938679d13c1b5e7676bc213236bbf399f581f /src/game/GameController.cpp | |
| parent | c408e035faf88f968ea208d48ced4b7c3c9dc32d (diff) | |
| download | powder-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.cpp | 41 |
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(); |
