diff options
| author | Simon 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) |
| commit | f7f51d5045a25a331b4cec3844f98584934d827e (patch) | |
| tree | e6adc518e039c03ec5840a3dfa8e1c54d4f86801 /src/game/SampleTool.cpp | |
| parent | 44c55fbd45bf895f3d7f1e6ed9497258c1bae86f (diff) | |
| download | powder-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.cpp | 28 |
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); + } } } } |
