From f7f51d5045a25a331b4cec3844f98584934d827e Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Thu, 13 Sep 2012 16:41:35 +0100 Subject: Make sample tool sample different life types. Fixes #184 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 elementTools = lifeMenu->GetToolList(); + + for(std::vector::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); + } } } } -- cgit v0.9.2-21-gd62e