summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCracker64 <cracker642@gmail.com>2011-03-26 04:17:03 (GMT)
committer Simon <simon@hardwired.org.uk>2011-03-29 17:23:34 (GMT)
commited244f42cb4ceb11af936781e336367cfc8ed0e7 (patch)
tree8402d1f7182e4242c56959df0477a9bd63f0846a /src
parent812798d70dc5c95e34e4e896d2b10d979b2d6d2e (diff)
downloadpowder-ed244f42cb4ceb11af936781e336367cfc8ed0e7.zip
powder-ed244f42cb4ceb11af936781e336367cfc8ed0e7.tar.gz
WIND works with line tool, BOMB shine affected by velocity and flickers
Diffstat (limited to 'src')
-rw-r--r--src/graphics.c29
-rw-r--r--src/main.c10
2 files changed, 26 insertions, 13 deletions
diff --git a/src/graphics.c b/src/graphics.c
index 917d267..d6c1b90 100644
--- a/src/graphics.c
+++ b/src/graphics.c
@@ -2646,23 +2646,25 @@ void draw_parts(pixel *vid)
cb = PIXB(ptypes[t].pcolors);
if (cmode != CM_CRACK) {
int newx = 0;
- float gradv = 100;
- blendpixel(vid, nx+1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx-1, ny, cr, cg, cb, 223);
- blendpixel(vid, nx, ny+1, cr, cg, cb, 223);
- blendpixel(vid, nx, ny-1, cr, cg, cb, 223);
-
- blendpixel(vid, nx+1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny-1, cr, cg, cb, 112);
- blendpixel(vid, nx+1, ny+1, cr, cg, cb, 112);
- blendpixel(vid, nx-1, ny+1, cr, cg, cb, 112);
- for (newx = 0; gradv>0.5; newx++) {
+ 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.1f;
+ gradv = gradv/1.2f;
}
} else {
blendpixel(vid, nx, ny, cr, cg, cb, 255);
@@ -2674,7 +2676,8 @@ void draw_parts(pixel *vid)
cb = PIXB(ptypes[t].pcolors);
if (cmode != CM_CRACK) {
int newx = 0;
- float gradv = 4*parts[i].life;
+ 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);
diff --git a/src/main.c b/src/main.c
index 55908f3..16dac00 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3364,6 +3364,16 @@ int main(int argc, char *argv[])
bmap[j][i] = WL_FAN;
}
}
+ if (c == PT_WIND)
+ {
+ for (j=-bsy; j<=bsy; j++)
+ for (i=-bsx; i<=bsx; i++)
+ if (x+i>0 && y+j>0 && x+i<XRES && y+j<YRES && ((CURRENT_BRUSH==CIRCLE_BRUSH && (pow(i,2))/(pow(bsx,2))+(pow(j,2))/(pow(bsy,2))<=1)||(CURRENT_BRUSH==SQUARE_BRUSH&&i*j<=bsy*bsx)))
+ {
+ vx[(ly+j)/CELL][(lx+i)/CELL] += (x-lx)*0.002f;
+ vy[(ly+j)/CELL][(lx+i)/CELL] += (y-ly)*0.002f;
+ }
+ }
}
else if (lm == 2)
{