diff options
| author | jacob1 <jfu614@gmail.com> | 2013-02-09 03:50:37 (GMT) |
|---|---|---|
| committer | jacob1 <jfu614@gmail.com> | 2013-02-09 03:50:37 (GMT) |
| commit | 685bde5c21b4c1cfb29fd0694a72bd48e3af52fe (patch) | |
| tree | db889b01e8ddd0c16c2da47406095e18d45cf42b /src | |
| parent | 1359045b14a455c5ee54a7b066e606a3b76368b0 (diff) | |
| download | powder-685bde5c21b4c1cfb29fd0694a72bd48e3af52fe.zip powder-685bde5c21b4c1cfb29fd0694a72bd48e3af52fe.tar.gz | |
blobby walls in blob view
Diffstat (limited to 'src')
| -rw-r--r-- | src/graphics/Renderer.cpp | 94 | ||||
| -rw-r--r-- | src/graphics/Renderer.h | 1 |
2 files changed, 95 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 diff --git a/src/graphics/Renderer.h b/src/graphics/Renderer.h index fa12a8c..2b6cc14 100644 --- a/src/graphics/Renderer.h +++ b/src/graphics/Renderer.h @@ -79,6 +79,7 @@ public: void RenderEnd(); void RenderZoom(); + void DrawBlob(int x, int y, unsigned char cr, unsigned char cg, unsigned char cb); void DrawWalls(); void DrawSigns(); void render_gravlensing(pixel * source); |
