summaryrefslogtreecommitdiff
path: root/src/game/SampleTool.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-09-13 15:41:35 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-09-13 15:41:35 (GMT)
commitf7f51d5045a25a331b4cec3844f98584934d827e (patch)
treee6adc518e039c03ec5840a3dfa8e1c54d4f86801 /src/game/SampleTool.cpp
parent44c55fbd45bf895f3d7f1e6ed9497258c1bae86f (diff)
downloadpowder-f7f51d5045a25a331b4cec3844f98584934d827e.zip
powder-f7f51d5045a25a331b4cec3844f98584934d827e.tar.gz
Make sample tool sample different life types. Fixes #184
Diffstat (limited to 'src/game/SampleTool.cpp')
-rw-r--r--src/game/SampleTool.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/game/SampleTool.cpp b/src/game/SampleTool.cpp
index a9c3290..296167b 100644
--- a/src/game/SampleTool.cpp
+++ b/src/game/SampleTool.cpp
@@ -30,16 +30,38 @@ void SampleTool::Draw(Simulation * sim, Brush * brush, ui::Point position)
else
{
int particleType = 0;
+ int particleCtype = 0;
if(sim->pmap[position.Y][position.X])
+ {
particleType = sim->parts[sim->pmap[position.Y][position.X]>>8].type;
+ particleCtype = sim->parts[sim->pmap[position.Y][position.X]>>8].ctype;
+ }
else if(sim->photons[position.Y][position.X])
+ {
particleType = sim->parts[sim->photons[position.Y][position.X]>>8].type;
+ particleCtype = sim->parts[sim->pmap[position.Y][position.X]>>8].ctype;
+ }
if(particleType)
{
- Tool * elementTool = gameModel->GetElementTool(particleType);
- if(elementTool)
- gameModel->SetActiveTool(0, elementTool);
+ if(particleType == PT_LIFE)
+ {
+ Menu * lifeMenu = gameModel->GetMenuList()[SC_LIFE];
+ std::vector<Tool*> elementTools = lifeMenu->GetToolList();
+
+ for(std::vector<Tool*>::iterator iter = elementTools.begin(), end = elementTools.end(); iter != end; ++iter)
+ {
+ Tool * elementTool = *iter;
+ if(elementTool && elementTool->GetToolID() == particleCtype)
+ gameModel->SetActiveTool(0, elementTool);
+ }
+ }
+ else
+ {
+ Tool * elementTool = gameModel->GetElementTool(particleType);
+ if(elementTool)
+ gameModel->SetActiveTool(0, elementTool);
+ }
}
}
}