Flood fill

This commit is contained in:
Simon Robertshaw 2012-02-02 12:09:11 +00:00
parent 6641f1d541
commit 8024caec55
3 changed files with 14 additions and 2 deletions

View File

@ -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<ui::Point*> & pointQueue)

View File

@ -549,7 +549,7 @@ void GameView::OnTick(float dt)
c->DrawPoints(toolIndex, pointQueue);
}
}
if(drawMode == DrawFill)
if(drawMode == DrawFill && isMouseDown)
{
c->DrawFill(toolIndex, currentMouse);
}

View File

@ -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_ */