summaryrefslogtreecommitdiff
path: root/src/graphics/Renderer.cpp
diff options
context:
space:
mode:
authorjacob1 <jfu614@gmail.com>2013-02-09 03:50:37 (GMT)
committer jacob1 <jfu614@gmail.com>2013-02-09 03:50:37 (GMT)
commit685bde5c21b4c1cfb29fd0694a72bd48e3af52fe (patch)
treedb889b01e8ddd0c16c2da47406095e18d45cf42b /src/graphics/Renderer.cpp
parent1359045b14a455c5ee54a7b066e606a3b76368b0 (diff)
downloadpowder-685bde5c21b4c1cfb29fd0694a72bd48e3af52fe.zip
powder-685bde5c21b4c1cfb29fd0694a72bd48e3af52fe.tar.gz
blobby walls in blob view
Diffstat (limited to 'src/graphics/Renderer.cpp')
-rw-r--r--src/graphics/Renderer.cpp94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/graphics/Renderer.cpp b/src/graphics/Renderer.cpp
index e60f0f3..23ebcf0 100644
--- a/src/graphics/Renderer.cpp
+++ b/src/graphics/Renderer.cpp
@@ -645,6 +645,19 @@ VideoBuffer * Renderer::WallIcon(int wallID, int width, int height)
return newTexture;
}
+void Renderer::DrawBlob(int x, int y, unsigned char cr, unsigned char cg, unsigned char cb)
+{
+ blendpixel(x+1, y, cr, cg, cb, 112);
+ blendpixel(x-1, y, cr, cg, cb, 112);
+ blendpixel(x, y+1, cr, cg, cb, 112);
+ blendpixel(x, y-1, cr, cg, cb, 112);
+
+ blendpixel(x+1, y-1, cr, cg, cb, 64);
+ blendpixel(x-1, y-1, cr, cg, cb, 64);
+ blendpixel(x+1, y+1, cr, cg, cb, 64);
+ blendpixel(x-1, y+1, cr, cg, cb, 64);
+}
+
void Renderer::DrawWalls()
{
#ifdef OGLR
@@ -796,6 +809,87 @@ void Renderer::DrawWalls()
}
drawtext(x*CELL, y*CELL-2, "\x8D", 255, 255, 255, 128);
}
+
+ // when in blob view, draw some blobs
+ if (render_mode & PMODE_BLOB)
+ {
+ if (wtypes[wt].drawstyle==1)
+ {
+ for (j=0; j<CELL; j+=2)
+ for (i=(j>>1)&1; i<CELL; i+=2)
+ drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
+ }
+ else if (wtypes[wt].drawstyle==2)
+ {
+ for (j=0; j<CELL; j+=2)
+ for (i=0; i<CELL; i+=2)
+ drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
+ }
+ else if (wtypes[wt].drawstyle==3)
+ {
+ for (j=0; j<CELL; j++)
+ for (i=0; i<CELL; i++)
+ drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
+ }
+ else if (wtypes[wt].drawstyle==4)
+ {
+ for (j=0; j<CELL; j++)
+ for (i=0; i<CELL; i++)
+ if(i == j)
+ drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
+ else if (i == j+1 || (i == 0 && j == CELL-1))
+ drawblob((x*CELL+i), (y*CELL+j), PIXR(gc), PIXG(gc), PIXB(gc));
+ else
+ drawblob((x*CELL+i), (y*CELL+j), 0x20, 0x20, 0x20);
+ }
+ if (bmap[y][x]==WL_EWALL)
+ {
+ if (emap[y][x])
+ {
+ for (j=0; j<CELL; j++)
+ for (i=0; i<CELL; i++)
+ if (i&j&1)
+ drawblob((x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80);
+ }
+ else
+ {
+ for (j=0; j<CELL; j++)
+ for (i=0; i<CELL; i++)
+ if (!(i&j&1))
+ drawblob((x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80);
+ }
+ }
+ else if (bmap[y][x]==WL_WALLELEC)
+ {
+ for (j=0; j<CELL; j++)
+ for (i=0; i<CELL; i++)
+ {
+ if (!((y*CELL+j)%2) && !((x*CELL+i)%2))
+ drawblob((x*CELL+i), (y*CELL+j), PIXR(pc), PIXG(pc), PIXB(pc));
+ else
+ drawblob((x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80);
+ }
+ }
+ else if (bmap[y][x]==WL_EHOLE)
+ {
+ if (emap[y][x])
+ {
+ for (j=0; j<CELL; j++)
+ for (i=0; i<CELL; i++)
+ drawblob((x*CELL+i), (y*CELL+j), 0x24, 0x24, 0x24);
+ for (j=0; j<CELL; j+=2)
+ for (i=0; i<CELL; i+=2)
+ vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x000000);
+ }
+ else
+ {
+ for (j=0; j<CELL; j+=2)
+ for (i=0; i<CELL; i+=2)
+ drawblob((x*CELL+i), (y*CELL+j), 0x24, 0x24, 0x24);
+ }
+ }
+ }
+
if (wtypes[wt].eglow && emap[y][x])
{
// glow if electrified