diff options
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); |
