summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorStanislaw Skowronek <skylark@disorder.sko>2013-11-13 13:54:46 (GMT)
committer Stanislaw Skowronek <skylark@disorder.sko>2013-11-13 13:54:46 (GMT)
commit54769d13eb1b4216b7c6d18e08c3797bf3a48e8a (patch)
treeb9044f60fc982a75e00eda291be1aa3baaca1656 /src/gui
parentf32929128e1d93517f24253ed58801acc32ce814 (diff)
downloadpowder-54769d13eb1b4216b7c6d18e08c3797bf3a48e8a.zip
powder-54769d13eb1b4216b7c6d18e08c3797bf3a48e8a.tar.gz
Initial check-in of movable solids. Save/Load/Undo do not work and may crash.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/game/GameController.cpp10
-rw-r--r--src/gui/game/GameController.h1
-rw-r--r--src/gui/game/GameView.cpp1
-rw-r--r--src/gui/game/Tool.cpp7
-rw-r--r--src/gui/game/Tool.h1
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);