diff options
| author | Stanislaw Skowronek <skylark@disorder.sko> | 2013-11-13 13:54:46 (GMT) |
|---|---|---|
| committer | Stanislaw Skowronek <skylark@disorder.sko> | 2013-11-13 13:54:46 (GMT) |
| commit | 54769d13eb1b4216b7c6d18e08c3797bf3a48e8a (patch) | |
| tree | b9044f60fc982a75e00eda291be1aa3baaca1656 /src/gui | |
| parent | f32929128e1d93517f24253ed58801acc32ce814 (diff) | |
| download | powder-54769d13eb1b4216b7c6d18e08c3797bf3a48e8a.zip powder-54769d13eb1b4216b7c6d18e08c3797bf3a48e8a.tar.gz | |
Initial check-in of movable solids. Save/Load/Undo do not work and may crash.
Diffstat (limited to 'src/gui')
| -rw-r--r-- | src/gui/game/GameController.cpp | 10 | ||||
| -rw-r--r-- | src/gui/game/GameController.h | 1 | ||||
| -rw-r--r-- | src/gui/game/GameView.cpp | 1 | ||||
| -rw-r--r-- | src/gui/game/Tool.cpp | 7 | ||||
| -rw-r--r-- | src/gui/game/Tool.h | 1 |
5 files changed, 19 insertions, 1 deletions
diff --git a/src/gui/game/GameController.cpp b/src/gui/game/GameController.cpp index 17660ec..a30abd6 100644 --- a/src/gui/game/GameController.cpp +++ b/src/gui/game/GameController.cpp @@ -517,6 +517,16 @@ void GameController::ToolClick(int toolSelection, ui::Point point) activeTool->Click(sim, cBrush, point); } +void GameController::ToolStart(int toolSelection, ui::Point point) +{ + Simulation * sim = gameModel->GetSimulation(); + Tool * activeTool = gameModel->GetActiveTool(toolSelection); + Brush * cBrush = gameModel->GetBrush(); + if(!activeTool || !cBrush) + return; + activeTool->Start(sim, cBrush, point); +} + std::string GameController::StampRegion(ui::Point point1, ui::Point point2) { GameSave * newSave; diff --git a/src/gui/game/GameController.h b/src/gui/game/GameController.h index 9fe3624..9e1dc1f 100644 --- a/src/gui/game/GameController.h +++ b/src/gui/game/GameController.h @@ -80,6 +80,7 @@ public: void SetZoomPosition(ui::Point position); void AdjustBrushSize(int direction, bool logarithmic = false, bool xAxis = false, bool yAxis = false); void AdjustZoomSize(int direction, bool logarithmic = false); + void ToolStart(int toolSelection, ui::Point point); void ToolClick(int toolSelection, ui::Point point); void DrawPoints(int toolSelection, queue<ui::Point> & pointQueue); void DrawRect(int toolSelection, ui::Point point1, ui::Point point2); diff --git a/src/gui/game/GameView.cpp b/src/gui/game/GameView.cpp index 3dc677b..923d6e6 100644 --- a/src/gui/game/GameView.cpp +++ b/src/gui/game/GameView.cpp @@ -1063,6 +1063,7 @@ void GameView::OnMouseDown(int x, int y, unsigned button) isMouseDown = true; if(!pointQueue.size()) c->HistorySnapshot(); + c->ToolStart(toolIndex, c->PointTranslate(ui::Point(x, y))); if(drawMode == DrawRect || drawMode == DrawLine) { drawPoint1 = c->PointTranslate(ui::Point(x, y)); diff --git a/src/gui/game/Tool.cpp b/src/gui/game/Tool.cpp index b0def6c..476d067 100644 --- a/src/gui/game/Tool.cpp +++ b/src/gui/game/Tool.cpp @@ -37,7 +37,12 @@ string Tool::GetName() { return toolName; } string Tool::GetDescription() { return toolDescription; } Tool::~Tool() {} -void Tool::Click(Simulation * sim, Brush * brush, ui::Point position) { } +void Tool::Start(Simulation * sim, Brush * brush, ui::Point position) { + sim->ToolStart(position.X, position.Y, toolID); +} +void Tool::Click(Simulation * sim, Brush * brush, ui::Point position) { + sim->ToolClick(position.X, position.Y, toolID); +} void Tool::Draw(Simulation * sim, Brush * brush, ui::Point position) { sim->ToolBrush(position.X, position.Y, toolID, brush, strength); } diff --git a/src/gui/game/Tool.h b/src/gui/game/Tool.h index 7ee105f..0c40893 100644 --- a/src/gui/game/Tool.h +++ b/src/gui/game/Tool.h @@ -33,6 +33,7 @@ public: VideoBuffer * GetTexture(int width, int height); void SetTextureGen(VideoBuffer * (*textureGen)(int, int, int)); virtual ~Tool(); + virtual void Start(Simulation * sim, Brush * brush, ui::Point position); virtual void Click(Simulation * sim, Brush * brush, ui::Point position); virtual void Draw(Simulation * sim, Brush * brush, ui::Point position); virtual void DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2, bool dragging = false); |
