mirror of
https://github.com/The-Powder-Toy/The-Powder-Toy.git
synced 2025-08-10 18:34:21 +02:00
Flood fill
This commit is contained in:
@@ -173,7 +173,12 @@ void GameController::DrawLine(int toolSelection, ui::Point point1, ui::Point poi
|
|||||||
|
|
||||||
void GameController::DrawFill(int toolSelection, ui::Point point)
|
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<ui::Point*> & pointQueue)
|
void GameController::DrawPoints(int toolSelection, queue<ui::Point*> & pointQueue)
|
||||||
|
@@ -549,7 +549,7 @@ void GameView::OnTick(float dt)
|
|||||||
c->DrawPoints(toolIndex, pointQueue);
|
c->DrawPoints(toolIndex, pointQueue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(drawMode == DrawFill)
|
if(drawMode == DrawFill && isMouseDown)
|
||||||
{
|
{
|
||||||
c->DrawFill(toolIndex, currentMouse);
|
c->DrawFill(toolIndex, currentMouse);
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,7 @@ public:
|
|||||||
virtual void Draw(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) {}
|
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 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;
|
int colRed, colBlue, colGreen;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -51,6 +52,9 @@ public:
|
|||||||
virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
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);
|
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
|
class GolTool: public Tool
|
||||||
@@ -70,6 +74,9 @@ public:
|
|||||||
virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
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);
|
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_ */
|
#endif /* TOOL_H_ */
|
||||||
|
Reference in New Issue
Block a user