summaryrefslogtreecommitdiff
path: root/src/powder.c
diff options
context:
space:
mode:
authorSimon 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)
commit16f014b06ae69c17f6ea2c817e2830023880bbdf (patch)
treec79383f120e76e50d22a510bcf6fcce966420520 /src/powder.c
parentd0f236d6b9e7c3de6998b8394b0dfb9241f727cf (diff)
downloadpowder-16f014b06ae69c17f6ea2c817e2830023880bbdf.zip
powder-16f014b06ae69c17f6ea2c817e2830023880bbdf.tar.gz
Move wall drawing to graphics.c
Diffstat (limited to 'src/powder.c')
-rw-r--r--src/powder.c477
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)