WIND tool
This commit is contained in:
parent
45fecfe72c
commit
9b1fb64e16
@ -295,7 +295,7 @@ void GameController::DrawPoints(int toolSelection, queue<ui::Point*> & pointQueu
|
|||||||
pointQueue.pop();
|
pointQueue.pop();
|
||||||
if(!first)
|
if(!first)
|
||||||
{
|
{
|
||||||
activeTool->DrawLine(sim, cBrush, fPoint, sPoint);
|
activeTool->DrawLine(sim, cBrush, sPoint, fPoint, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -93,6 +93,7 @@ GameModel::GameModel():
|
|||||||
//Add special sign and prop tools
|
//Add special sign and prop tools
|
||||||
menuList[SC_TOOL]->AddTool(new SignTool());
|
menuList[SC_TOOL]->AddTool(new SignTool());
|
||||||
menuList[SC_TOOL]->AddTool(new PropertyTool());
|
menuList[SC_TOOL]->AddTool(new PropertyTool());
|
||||||
|
menuList[SC_TOOL]->AddTool(new WindTool(0, "WIND", "Create air movement", 64, 64, 64));
|
||||||
|
|
||||||
//Build menu for simtools
|
//Build menu for simtools
|
||||||
for(int i = 0; i < sim->tools.size(); i++)
|
for(int i = 0; i < sim->tools.size(); i++)
|
||||||
|
@ -37,7 +37,7 @@ void Tool::Click(Simulation * sim, Brush * brush, ui::Point position) { }
|
|||||||
void Tool::Draw(Simulation * sim, Brush * brush, ui::Point position) {
|
void Tool::Draw(Simulation * sim, Brush * brush, ui::Point position) {
|
||||||
sim->ToolBrush(position.X, position.Y, toolID, brush);
|
sim->ToolBrush(position.X, position.Y, toolID, brush);
|
||||||
}
|
}
|
||||||
void Tool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void Tool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2, bool dragging) {
|
||||||
sim->ToolLine(position1.X, position1.Y, position2.X, position2.Y, toolID, brush);
|
sim->ToolLine(position1.X, position1.Y, position2.X, position2.Y, toolID, brush);
|
||||||
}
|
}
|
||||||
void Tool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void Tool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
||||||
@ -53,7 +53,7 @@ ElementTool::~ElementTool() {}
|
|||||||
void ElementTool::Draw(Simulation * sim, Brush * brush, ui::Point position){
|
void ElementTool::Draw(Simulation * sim, Brush * brush, ui::Point position){
|
||||||
sim->CreateParts(position.X, position.Y, toolID, brush);
|
sim->CreateParts(position.X, position.Y, toolID, brush);
|
||||||
}
|
}
|
||||||
void ElementTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void ElementTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2, bool dragging) {
|
||||||
sim->CreateLine(position1.X, position1.Y, position2.X, position2.Y, toolID, brush);
|
sim->CreateLine(position1.X, position1.Y, position2.X, position2.Y, toolID, brush);
|
||||||
}
|
}
|
||||||
void ElementTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void ElementTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
||||||
@ -72,7 +72,7 @@ WallTool::~WallTool() {}
|
|||||||
void WallTool::Draw(Simulation * sim, Brush * brush, ui::Point position){
|
void WallTool::Draw(Simulation * sim, Brush * brush, ui::Point position){
|
||||||
sim->CreateWalls(position.X, position.Y, 1, 1, toolID, 0, brush);
|
sim->CreateWalls(position.X, position.Y, 1, 1, toolID, 0, brush);
|
||||||
}
|
}
|
||||||
void WallTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void WallTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2, bool dragging) {
|
||||||
sim->CreateWallLine(position1.X, position1.Y, position2.X, position2.Y, 1, 1, toolID, 0, brush);
|
sim->CreateWallLine(position1.X, position1.Y, position2.X, position2.Y, 1, 1, toolID, 0, brush);
|
||||||
}
|
}
|
||||||
void WallTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void WallTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
||||||
@ -91,7 +91,7 @@ GolTool::~GolTool() {}
|
|||||||
void GolTool::Draw(Simulation * sim, Brush * brush, ui::Point position){
|
void GolTool::Draw(Simulation * sim, Brush * brush, ui::Point position){
|
||||||
sim->CreateParts(position.X, position.Y, PT_LIFE|(toolID<<8), brush);
|
sim->CreateParts(position.X, position.Y, PT_LIFE|(toolID<<8), brush);
|
||||||
}
|
}
|
||||||
void GolTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void GolTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2, bool dragging) {
|
||||||
sim->CreateLine(position1.X, position1.Y, position2.X, position2.Y, PT_LIFE|(toolID<<8), brush);
|
sim->CreateLine(position1.X, position1.Y, position2.X, position2.Y, PT_LIFE|(toolID<<8), brush);
|
||||||
}
|
}
|
||||||
void GolTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
void GolTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {
|
||||||
@ -101,6 +101,46 @@ void GolTool::DrawFill(Simulation * sim, Brush * brush, ui::Point position) {
|
|||||||
sim->FloodParts(position.X, position.Y, PT_LIFE|(toolID<<8), -1, -1, 0);
|
sim->FloodParts(position.X, position.Y, PT_LIFE|(toolID<<8), -1, -1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WindTool::WindTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int)):
|
||||||
|
Tool(id, name, description, r, g, b, textureGen)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
WindTool::~WindTool() {}
|
||||||
|
void WindTool::Draw(Simulation * sim, Brush * brush, ui::Point position)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void WindTool::DrawLine(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2, bool dragging)
|
||||||
|
{
|
||||||
|
int radiusX, radiusY, sizeX, sizeY;
|
||||||
|
|
||||||
|
float strength = dragging?0.01f:0.002f;
|
||||||
|
|
||||||
|
radiusX = brush->GetRadius().X;
|
||||||
|
radiusY = brush->GetRadius().Y;
|
||||||
|
|
||||||
|
sizeX = brush->GetSize().X;
|
||||||
|
sizeY = brush->GetSize().Y;
|
||||||
|
|
||||||
|
unsigned char *bitmap = brush->GetBitmap();
|
||||||
|
|
||||||
|
for(int y = 0; y < sizeY; y++)
|
||||||
|
{
|
||||||
|
for(int x = 0; x < sizeX; x++)
|
||||||
|
{
|
||||||
|
if(bitmap[(y*sizeX)+x] && (position1.X+(x-radiusX) >= 0 && position1.Y+(y-radiusY) >= 0 && position1.X+(x-radiusX) < XRES && position1.Y+(y-radiusY) < YRES))
|
||||||
|
{
|
||||||
|
sim->vx[(position1.Y+(y-radiusY))/CELL][(position1.X+(x-radiusX))/CELL] += (position2.X-position1.X)*strength;
|
||||||
|
sim->vy[(position1.Y+(y-radiusY))/CELL][(position1.X+(x-radiusX))/CELL] += (position2.Y-position1.Y)*strength;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void WindTool::DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2) {}
|
||||||
|
|
||||||
|
void WindTool::DrawFill(Simulation * sim, Brush * brush, ui::Point position) {}
|
||||||
|
|
||||||
|
|
||||||
void Element_LIGH_Tool::Draw(Simulation * sim, Brush * brush, ui::Point position)
|
void Element_LIGH_Tool::Draw(Simulation * sim, Brush * brush, ui::Point position)
|
||||||
{
|
{
|
||||||
int p = sim->create_part(-2, position.X, position.Y, toolID);
|
int p = sim->create_part(-2, position.X, position.Y, toolID);
|
||||||
|
@ -33,7 +33,7 @@ public:
|
|||||||
virtual ~Tool();
|
virtual ~Tool();
|
||||||
virtual void Click(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 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, bool dragging = false);
|
||||||
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);
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position);
|
||||||
int colRed, colBlue, colGreen;
|
int colRed, colBlue, colGreen;
|
||||||
@ -50,7 +50,7 @@ public:
|
|||||||
virtual ~SignTool() {}
|
virtual ~SignTool() {}
|
||||||
virtual void Click(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 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, bool dragging = false) { }
|
||||||
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) { }
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position) { }
|
||||||
};
|
};
|
||||||
@ -65,7 +65,7 @@ public:
|
|||||||
virtual ~PropertyTool() {}
|
virtual ~PropertyTool() {}
|
||||||
virtual void Click(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 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, bool dragging = false) { }
|
||||||
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) { }
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position) { }
|
||||||
};
|
};
|
||||||
@ -80,7 +80,7 @@ public:
|
|||||||
virtual ~Element_LIGH_Tool() {}
|
virtual ~Element_LIGH_Tool() {}
|
||||||
virtual void Draw(Simulation * sim, Brush * brush, ui::Point position);
|
virtual void Draw(Simulation * sim, Brush * brush, ui::Point position);
|
||||||
virtual void Click(Simulation * sim, Brush * brush, ui::Point position) { }
|
virtual void Click(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, bool dragging = false) { }
|
||||||
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) { }
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position) { }
|
||||||
};
|
};
|
||||||
@ -91,7 +91,7 @@ public:
|
|||||||
ElementTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
ElementTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
||||||
virtual ~ElementTool();
|
virtual ~ElementTool();
|
||||||
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, bool dragging = false);
|
||||||
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);
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position);
|
||||||
};
|
};
|
||||||
@ -102,7 +102,7 @@ public:
|
|||||||
WallTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
WallTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
||||||
virtual ~WallTool();
|
virtual ~WallTool();
|
||||||
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, bool dragging = false);
|
||||||
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);
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position);
|
||||||
};
|
};
|
||||||
@ -113,7 +113,18 @@ public:
|
|||||||
GolTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
GolTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
||||||
virtual ~GolTool();
|
virtual ~GolTool();
|
||||||
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, bool dragging = false);
|
||||||
|
virtual void DrawRect(Simulation * sim, Brush * brush, ui::Point position1, ui::Point position2);
|
||||||
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position);
|
||||||
|
};
|
||||||
|
|
||||||
|
class WindTool: public Tool
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
WindTool(int id, string name, string description, int r, int g, int b, VideoBuffer * (*textureGen)(int, int, int) = NULL);
|
||||||
|
virtual ~WindTool();
|
||||||
|
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);
|
||||||
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);
|
virtual void DrawFill(Simulation * sim, Brush * brush, ui::Point position);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user