diff --git a/src/game/GameController.cpp b/src/game/GameController.cpp index 5c8ed6f9a..7df654f3b 100644 --- a/src/game/GameController.cpp +++ b/src/game/GameController.cpp @@ -173,7 +173,12 @@ void GameController::DrawLine(int toolSelection, ui::Point point1, ui::Point poi void GameController::DrawFill(int toolSelection, ui::Point point) { - + Simulation * sim = gameModel->GetSimulation(); + Tool * activeTool = gameModel->GetActiveTool(toolSelection); + Brush * cBrush = gameModel->GetBrush(); + if(!activeTool || !cBrush) + return; + activeTool->DrawFill(sim, cBrush, point); } void GameController::DrawPoints(int toolSelection, queue & pointQueue) diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 9e4a6dd70..133655263 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -549,7 +549,7 @@ void GameView::OnTick(float dt) c->DrawPoints(toolIndex, pointQueue); } } - if(drawMode == DrawFill) + if(drawMode == DrawFill && isMouseDown) { c->DrawFill(toolIndex, currentMouse); } diff --git a/src/game/Tool.h b/src/game/Tool.h index bffa9676e..00b11844b 100644 --- a/src/game/Tool.h +++ b/src/game/Tool.h @@ -31,6 +31,7 @@ public: virtual void Draw(Simulation * sim, Brush * brush, ui::Point position) {} virtual void DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {} virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {} + virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position) {}; int colRed, colBlue, colGreen; }; @@ -51,6 +52,9 @@ public: virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) { sim->create_box(position1.X, position1.Y, position2.X, position2.Y, toolID, 0); } + virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position) { + sim->flood_parts(position.X, position.Y, toolID, -1, -1, 0); + } }; class GolTool: public Tool @@ -70,6 +74,9 @@ public: virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) { sim->create_box(position1.X, position1.Y, position2.X, position2.Y, PT_LIFE|(toolID<<8), 0); } + virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position) { + sim->flood_parts(position.X, position.Y, PT_LIFE|(toolID<<8), -1, -1, 0); + } }; #endif /* TOOL_H_ */