summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/GameView.cpp1
-rw-r--r--src/game/SampleTool.cpp29
-rw-r--r--src/graphics/Renderer.cpp11
-rw-r--r--src/graphics/Renderer.h2
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();