diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2011-05-14 12:28:02 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2011-05-14 12:28:02 (GMT) |
| commit | 16f014b06ae69c17f6ea2c817e2830023880bbdf (patch) | |
| tree | c79383f120e76e50d22a510bcf6fcce966420520 /src/powder.c | |
| parent | d0f236d6b9e7c3de6998b8394b0dfb9241f727cf (diff) | |
| download | powder-16f014b06ae69c17f6ea2c817e2830023880bbdf.zip powder-16f014b06ae69c17f6ea2c817e2830023880bbdf.tar.gz | |
Move wall drawing to graphics.c
Diffstat (limited to 'src/powder.c')
| -rw-r--r-- | src/powder.c | 477 |
1 files changed, 9 insertions, 468 deletions
diff --git a/src/powder.c b/src/powder.c index f31e115..2264f09 100644 --- a/src/powder.c +++ b/src/powder.c @@ -2118,481 +2118,22 @@ void update_particles(pixel *vid)//doesn't update the particles themselves, but } } pfree=l; - if (cmode==CM_BLOB)//draw walls in BLOB mode differently, this should be moved elsewhere - { - for (y=0; y<YRES/CELL; y++) - { - for (x=0; x<XRES/CELL; x++) - { - if (bmap[y][x]==WL_WALL) - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - { - pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); - - } - if (bmap[y][x]==WL_DESTROYALL) - for (j=0; j<CELL; j+=2) - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); - } - if (bmap[y][x]==WL_ALLOWLIQUID) - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xC0C0C0); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0xC0, 0xC0, 0xC0); - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_FAN) - for (j=0; j<CELL; j+=2) - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x8080FF); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0xFF); - } - if (bmap[y][x]==WL_DETECT) - { - for (j=0; j<CELL; j+=2) - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xFF8080); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0xFF, 0x80, 0x80); - } - if (emap[y][x]) - { - cr = 255; - cg = 32; - cb = 8; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_EWALL) - { - if (emap[y][x]) - { - cr = cg = cb = 128; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - if (i&j&1) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); - } - } - else - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - if (!(i&j&1)) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); - } - } - } - if (bmap[y][x]==WL_WALLELEC) - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - { - pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xC0C0C0); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0xC0, 0xC0, 0xC0); - } - else - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x80, 0x80, 0x80); - } - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_ALLOWALLELEC) - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - { - //pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xFFFF22); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0xFF, 0xFF, 0x22); - } - - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_ALLOWGAS) - { - for (j=0; j<CELL; j+=2) - { - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x579777); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x57, 0x97, 0x77); - } - } - } - if (bmap[y][x]==WL_ALLOWAIR) - { - for (j=0; j<CELL; j+=2) - { - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x3C3C3C); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x3C, 0x3C, 0x3C); - } - } - } - if (bmap[y][x]==WL_ALLOWSOLID) - { - for (j=0; j<CELL; j+=2) - { - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x575757); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x57, 0x57, 0x57); - } - } - } - if (bmap[y][x]==WL_EHOLE) - { - if (emap[y][x]) - { - for (j=0; j<CELL; j++) - { - for (i=(j)&1; i<CELL; i++) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x24, 0x24, 0x24); - } - } - for (j=0; j<CELL; j+=2) - { - for (i=(j)&1; 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=(j)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424); - drawblob(vid, (x*CELL+i), (y*CELL+j), 0x24, 0x24, 0x24); - } - } - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (emap[y][x] && (!sys_pause||framerender)) - emap[y][x] --; - } - } - } - else //draw walls in other modes, this should be elsewhere + for (y=0; y<YRES/CELL; y++) { - for (y=0; y<YRES/CELL; y++) + for (x=0; x<XRES/CELL; x++) { - for (x=0; x<XRES/CELL; x++) - { - if (bmap[y][x]==WL_WALL) - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - { - pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - } - if (bmap[y][x]==WL_DESTROYALL) - for (j=0; j<CELL; j+=2) - for (i=(j>>1)&1; i<CELL; i+=2) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - if (bmap[y][x]==WL_ALLOWLIQUID) - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xC0C0C0); - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_FAN) - for (j=0; j<CELL; j+=2) - for (i=(j>>1)&1; i<CELL; i+=2) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x8080FF); - if (bmap[y][x]==WL_DETECT) - { - for (j=0; j<CELL; j+=2) - for (i=(j>>1)&1; i<CELL; i+=2) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xFF8080); - if (emap[y][x]) - { - cr = 255; - cg = 32; - cb = 8; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_EWALL) - { - if (emap[y][x]) - { - cr = cg = cb = 128; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - if (i&j&1) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - } - else - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - if (!(i&j&1)) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - } - } - if (bmap[y][x]==WL_WALLELEC) - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - { - pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xC0C0C0); - else - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x808080); - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_ALLOWALLELEC) - { - for (j=0; j<CELL; j++) - for (i=0; i<CELL; i++) - { - //pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; - if (!((y*CELL+j)%2) && !((x*CELL+i)%2)) - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0xFFFF22); - - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (bmap[y][x]==WL_ALLOWAIR) - { - for (j=0; j<CELL; j+=2) - { - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x3C3C3C); - } - } - } - if (bmap[y][x]==WL_ALLOWGAS) - { - for (j=0; j<CELL; j+=2) - { - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x579777); - } - } - } - if (bmap[y][x]==WL_ALLOWSOLID) - { - for (j=0; j<CELL; j+=2) - { - for (i=(j>>1)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x575757); - } - } - } - if (bmap[y][x]==WL_EHOLE) - { - if (emap[y][x]) - { - for (j=0; j<CELL; j++) - { - for (i=(j)&1; i<CELL; i++) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424); - } - } - for (j=0; j<CELL; j+=2) - { - for (i=(j)&1; 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=(j)&1; i<CELL; i+=2) - { - vid[(y*CELL+j)*(XRES+BARSIZE)+(x*CELL+i)] = PIXPACK(0x242424); - } - } - } - if (emap[y][x]) - { - cr = cg = cb = 16; - cr += fire_r[y][x]; - if (cr > 255) cr = 255; - fire_r[y][x] = cr; - cg += fire_g[y][x]; - if (cg > 255) cg = 255; - fire_g[y][x] = cg; - cb += fire_b[y][x]; - if (cb > 255) cb = 255; - fire_b[y][x] = cb; - } - } - if (emap[y][x] && (!sys_pause||framerender)) - emap[y][x] --; - } + if (bmap[y][x]==WL_WALL || bmap[y][x]==WL_WALLELEC || (bmap[y][x]==WL_EWALL&&!emap[y][x])) + for (j=0; j<CELL; j++) + for (i=0; i<CELL; i++) + pmap[y*CELL+j][x*CELL+i] = 0x7FFFFFFF; + if (emap[y][x] && (!sys_pause||framerender)) + emap[y][x] --; } } update_particles_i(vid, 0, 1); + // this should probably be elsewhere for (y=0; y<YRES/CELL; y++) for (x=0; x<XRES/CELL; x++) if (bmap[y][x]==WL_STREAM) |
