diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-25 12:36:53 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-25 12:36:53 (GMT) |
| commit | 1c443ceb573c28a7e5beea50e94db88246ecac0e (patch) | |
| tree | 0c3546abb72c7c65f1eb621970406c7931573dbe /src | |
| parent | 52ec84198bcab2aa177ced1a9eba3343a097522a (diff) | |
| download | powder-1c443ceb573c28a7e5beea50e94db88246ecac0e.zip powder-1c443ceb573c28a7e5beea50e94db88246ecac0e.tar.gz | |
Sample tool samples decoration colour when deco menu is visible. fixes #146
Diffstat (limited to 'src')
| -rw-r--r-- | src/game/GameView.cpp | 1 | ||||
| -rw-r--r-- | src/game/SampleTool.cpp | 29 | ||||
| -rw-r--r-- | src/graphics/Renderer.cpp | 11 | ||||
| -rw-r--r-- | src/graphics/Renderer.h | 2 |
4 files changed, 33 insertions, 10 deletions
diff --git a/src/game/GameView.cpp b/src/game/GameView.cpp index 74a1db5..8334f39 100644 --- a/src/game/GameView.cpp +++ b/src/game/GameView.cpp @@ -171,6 +171,7 @@ GameView::GameView(): toolTipPosition(-1, -1), shiftBehaviour(false), ctrlBehaviour(false), + altBehaviour(false), showHud(true), showDebug(false), introText(2048), diff --git a/src/game/SampleTool.cpp b/src/game/SampleTool.cpp index a8880b3..a9c3290 100644 --- a/src/game/SampleTool.cpp +++ b/src/game/SampleTool.cpp @@ -2,6 +2,7 @@ #include "graphics/Graphics.h" #include "Tool.h" #include "GameModel.h" +#include "interface/Colour.h" VideoBuffer * SampleTool::GetIcon(int toolID, int width, int height) { @@ -21,16 +22,24 @@ VideoBuffer * SampleTool::GetIcon(int toolID, int width, int height) void SampleTool::Draw(Simulation * sim, Brush * brush, ui::Point position) { - int particleType = 0; - if(sim->pmap[position.Y][position.X]) - particleType = sim->parts[sim->pmap[position.Y][position.X]>>8].type; - else if(sim->photons[position.Y][position.X]) - particleType = sim->parts[sim->photons[position.Y][position.X]>>8].type; - - if(particleType) + if(gameModel->GetColourSelectorVisibility()) + { + pixel colour = gameModel->GetRenderer()->GetPixel(position.X, position.Y); + gameModel->SetColourSelectorColour(ui::Colour(PIXR(colour), PIXG(colour), PIXB(colour), 255)); + } + else { - Tool * elementTool = gameModel->GetElementTool(particleType); - if(elementTool) - gameModel->SetActiveTool(0, elementTool); + int particleType = 0; + if(sim->pmap[position.Y][position.X]) + particleType = sim->parts[sim->pmap[position.Y][position.X]>>8].type; + else if(sim->photons[position.Y][position.X]) + particleType = sim->parts[sim->photons[position.Y][position.X]>>8].type; + + if(particleType) + { + Tool * elementTool = gameModel->GetElementTool(particleType); + if(elementTool) + gameModel->SetActiveTool(0, elementTool); + } } } diff --git a/src/graphics/Renderer.cpp b/src/graphics/Renderer.cpp index f07d548..d5eb43a 100644 --- a/src/graphics/Renderer.cpp +++ b/src/graphics/Renderer.cpp @@ -2272,6 +2272,17 @@ void Renderer::drawblob(int x, int y, unsigned char cr, unsigned char cg, unsign blendpixel(x-1, y+1, cr, cg, cb, 64); } +pixel Renderer::GetPixel(int x, int y) +{ + if (x<0 || y<0 || x>=VIDXRES || y>=VIDYRES) + return 0; +#ifdef OGLR + return 0; +#else + return vid[(y*VIDXRES)+x]; +#endif +} + Renderer::Renderer(Graphics * g, Simulation * sim): sim(NULL), g(NULL), diff --git a/src/graphics/Renderer.h b/src/graphics/Renderer.h index 7c84280..9c216ed 100644 --- a/src/graphics/Renderer.h +++ b/src/graphics/Renderer.h @@ -115,6 +115,8 @@ public: VideoBuffer DumpFrame(); void drawblob(int x, int y, unsigned char cr, unsigned char cg, unsigned char cb); + + pixel GetPixel(int x, int y); //... //Display mode modifiers void CompileDisplayMode(); |
