diff options
| author | Simon <simon@hardwired.org.uk> | 2011-01-01 12:43:44 (GMT) |
|---|---|---|
| committer | Simon <simon@hardwired.org.uk> | 2011-01-01 12:43:44 (GMT) |
| commit | c3eb6e11f9c6561da25ac37e33d95bdf042f2353 (patch) | |
| tree | 31f5bade39bcf8bf3307839df9b0a0afa11ba893 /src | |
| parent | 6340ff2ac90afb74be62b1999befc8c2455d4c33 (diff) | |
| parent | 5b86cd5c217efa50df96a2ad36ee137646387655 (diff) | |
| download | powder-c3eb6e11f9c6561da25ac37e33d95bdf042f2353.zip powder-c3eb6e11f9c6561da25ac37e33d95bdf042f2353.tar.gz | |
Merge branch 'master' of git://github.com/cracker64/The-Powder-Toy
Diffstat (limited to 'src')
| -rw-r--r-- | src/graphics.c | 46 | ||||
| -rw-r--r-- | src/powder.c | 5 |
2 files changed, 38 insertions, 13 deletions
diff --git a/src/graphics.c b/src/graphics.c index 4b08977..002d9f7 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1521,14 +1521,38 @@ void draw_parts(pixel *vid) } else if(t==PT_QRTZ || t==PT_PQRT) { - int q = parts[i].tmp; - cr = q * 16 + PIXR(ptypes[t].pcolors); - cg = q * 16 + PIXG(ptypes[t].pcolors); - cb = q * 16 + PIXB(ptypes[t].pcolors); - cr = cr>255?255:cr; - cg = cg>255?255:cg; - cb = cb>255?255:cb; - blendpixel(vid, nx, ny, cr, cg, cb, 255); + int z = parts[i].tmp; + if(parts[i].temp>(pstates[t].ltemp-800.0f)) + { + float frequency = 3.1415/(2*pstates[t].ltemp-(pstates[t].ltemp-800.0f)); + int q = (parts[i].temp>pstates[t].ltemp)?pstates[t].ltemp-(pstates[t].ltemp-800.0f):parts[i].temp-(pstates[t].ltemp-800.0f); + cr = sin(frequency*q) * 226 + (z * 16 + PIXR(ptypes[t].pcolors)); + cg = sin(frequency*q*4.55 +3.14) * 34 + (z * 16 + PIXR(ptypes[t].pcolors)); + cb = sin(frequency*q*2.22 +3.14) * 64 + (z * 16 + PIXR(ptypes[t].pcolors)); + if(cr>=255) + cr = 255; + if(cg>=255) + cg = 255; + if(cb>=255) + cb = 255; + if(cr<=0) + cr = 0; + if(cg<=0) + cg = 0; + if(cb<=0) + cb = 0; + blendpixel(vid, nx, ny, cr, cg, cb, 255); + } + else + { + cr = z * 16 + PIXR(ptypes[t].pcolors); + cg = z * 16 + PIXG(ptypes[t].pcolors); + cb = z * 16 + PIXB(ptypes[t].pcolors); + cr = cr>255?255:cr; + cg = cg>255?255:cg; + cb = cb>255?255:cb; + blendpixel(vid, nx, ny, cr, cg, cb, 255); + } } else if(t==PT_SPNG) { @@ -2528,10 +2552,10 @@ void draw_parts(pixel *vid) } } - else if(ptypes[t].properties&PROP_HOT_GLOW && parts[i].temp>473.0f) + else if(ptypes[t].properties&PROP_HOT_GLOW && parts[i].temp>(pstates[t].ltemp-800.0f)) { - float frequency = 3.1415/(2*pstates[t].ltemp-473.0); - int q = (parts[i].temp>pstates[t].ltemp)?pstates[t].ltemp-473:parts[i].temp-473; + float frequency = 3.1415/(2*pstates[t].ltemp-(pstates[t].ltemp-800.0f)); + int q = (parts[i].temp>pstates[t].ltemp)?pstates[t].ltemp-(pstates[t].ltemp-800.0f):parts[i].temp-(pstates[t].ltemp-800.0f); cr = sin(frequency*q) * 226 + PIXR(ptypes[t].pcolors); cg = sin(frequency*q*4.55 +3.14) * 34 + PIXG(ptypes[t].pcolors); cb = sin(frequency*q*2.22 +3.14) * 64 + PIXB(ptypes[t].pcolors); diff --git a/src/powder.c b/src/powder.c index ea45839..f61d6d5 100644 --- a/src/powder.c +++ b/src/powder.c @@ -4882,7 +4882,7 @@ killed: } } } - else if(parts[i].ctype>77&&parts[i].ctype<77+NGOL) { + else if(ptypes[parts[i].ctype].properties&PROP_LIFE) { for(nx=-1; nx<2; nx++) { for(ny=-1; ny<2; ny++) { create_part(-1, x+nx, y+ny, parts[i].ctype); @@ -6071,7 +6071,8 @@ int create_parts(int x, int y, int rx, int ry, int c) } if(rx==0&&ry==0)//workaround for 1pixel brush/floodfill crashing. todo: find a better fix later. { - create_part(-2, x, y, c); + if(create_part(-2, x, y, c)==-1) + f = 1; } else for(j=-ry; j<=ry; j++) |
