summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBryan Hoyle <starfoxprime@gmail.com>2011-08-16 19:22:11 (GMT)
committer Bryan Hoyle <starfoxprime@gmail.com>2011-08-16 19:22:11 (GMT)
commit0cbf66a4954c3e5e76af5c6bf391e84332fa14bf (patch)
tree1b1ddb5e29881ae811ffd62f401731a9c1fd469d /src
parent53d2c2d42ff95131351b055af0af5372549062e4 (diff)
downloadpowder-0cbf66a4954c3e5e76af5c6bf391e84332fa14bf.zip
powder-0cbf66a4954c3e5e76af5c6bf391e84332fa14bf.tar.gz
GBMB now has cool flicker graphics.
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c61
1 files changed, 51 insertions, 10 deletions
diff --git a/src/graphics.c b/src/graphics.c
index ca92f53..0a30327 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -3249,18 +3249,59 @@ void draw_parts(pixel *vid)
}
else if (t==PT_GBMB)
{
- x = nx/CELL;
- y = ny/CELL;
- if (parts[i].tmp==1) {
- fire_r[y][x] = (int)((float)parts[i].life/60.0 * 25);
- fire_g[y][x] = (int)((float)parts[i].life/60.0 * 50);
- fire_b[y][x] = (int)((float)parts[i].life/60.0 * 255);
+ if (parts[i].tmp==0) {
+ cr = PIXR(ptypes[t].pcolors);
+ cg = PIXG(ptypes[t].pcolors);
+ cb = PIXB(ptypes[t].pcolors);
+ if (cmode != CM_CRACK) {
+ int newx = 0;
+ float flicker = rand()%20;
+ float gradv = flicker + fabs(parts[i].vx)*17 + fabs(parts[i].vy)*17;
+ blendpixel(vid, nx, ny, cr, cg, cb, (gradv*4)>255?255:(gradv*4) );
+ blendpixel(vid, nx+1, ny, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
+ blendpixel(vid, nx-1, ny, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
+ blendpixel(vid, nx, ny+1, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
+ blendpixel(vid, nx, ny-1, cr, cg, cb, (gradv*2)>255?255:(gradv*2) );
+ if (gradv>255) gradv=255;
+ blendpixel(vid, nx+1, ny-1, cr, cg, cb, gradv);
+ blendpixel(vid, nx-1, ny-1, cr, cg, cb, gradv);
+ blendpixel(vid, nx+1, ny+1, cr, cg, cb, gradv);
+ blendpixel(vid, nx-1, ny+1, cr, cg, cb, gradv);
+ for (newx = 1; gradv>0.5; newx++) {
+ addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
+ addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
+
+ addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
+ addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
+ gradv = gradv/1.2f;
+ }
+ } else {
+ blendpixel(vid, nx, ny, cr, cg, cb, 255);
}
- else
- {
- blendpixel(vid, nx, ny, 25,50,255, 255);
+ }
+ else if (parts[i].tmp==1) {
+ cr = PIXR(ptypes[t].pcolors);
+ cg = PIXG(ptypes[t].pcolors);
+ cb = PIXB(ptypes[t].pcolors);
+ if (cmode != CM_CRACK) {
+ int newx = 0;
+ float flicker = rand()%20;
+ float gradv = 4*parts[i].life + flicker;
+ for (newx = 0; gradv>0.5; newx++) {
+ addpixel(vid, nx+newx, ny, cr, cg, cb, gradv);
+ addpixel(vid, nx-newx, ny, cr, cg, cb, gradv);
+
+ addpixel(vid, nx, ny+newx, cr, cg, cb, gradv);
+ addpixel(vid, nx, ny-newx, cr, cg, cb, gradv);
+ gradv = gradv/1.5f;
+ }
+ } else {
+ blendpixel(vid, nx, ny, cr, cg, cb, 255);
}
-
+ }
+ else {
+ blendpixel(vid, nx, ny, 255, 255, 255, 255);
+ }
}
else if (ptypes[t].properties&PROP_HOT_GLOW && parts[i].temp>(ptransitions[t].thv-800.0f))