diff options
| author | jacksonmj <jacksonmj@jacksonmj.none> | 2011-01-29 10:45:27 (GMT) |
|---|---|---|
| committer | jacksonmj <jacksonmj@jacksonmj.none> | 2011-01-29 10:50:43 (GMT) |
| commit | 9938378c0d7eed11dc3cf2db67dfd32d0c31dfd7 (patch) | |
| tree | d75a70b7ea481142563ac6d4d9799aee65c2e1e8 /src | |
| parent | fe033ce859b1d5db91fa840e0353403ab19b0d3a (diff) | |
| parent | 4b5337c03a0a64a12e1d66829c14af73f1ff0398 (diff) | |
| download | powder-9938378c0d7eed11dc3cf2db67dfd32d0c31dfd7.zip powder-9938378c0d7eed11dc3cf2db67dfd32d0c31dfd7.tar.gz | |
Merge remote branch 'cracker64' into dev
Conflicts:
includes/element.h
includes/powder.h
src/elements/firw.c
src/elements/legacy.c
src/elements/phot.c
src/elements/sprk.c
src/graphics.c
src/main.c
src/powder.c
Diffstat (limited to 'src')
| -rw-r--r-- | src/elements/elementmisc.c (renamed from src/elements/misc.c) | 0 | ||||
| -rw-r--r-- | src/elements/firw.c | 3 | ||||
| -rw-r--r-- | src/elements/legacy.c | 2 | ||||
| -rw-r--r-- | src/elements/phot.c | 2 | ||||
| -rw-r--r-- | src/elements/sprk.c | 3 | ||||
| -rw-r--r-- | src/graphics.c | 43 | ||||
| -rw-r--r-- | src/powder.c | 38 |
7 files changed, 77 insertions, 14 deletions
diff --git a/src/elements/misc.c b/src/elements/elementmisc.c index a284b3a..a284b3a 100644 --- a/src/elements/misc.c +++ b/src/elements/elementmisc.c diff --git a/src/elements/firw.c b/src/elements/firw.c index ae1f56d..c41400e 100644 --- a/src/elements/firw.c +++ b/src/elements/firw.c @@ -35,12 +35,13 @@ int update_FIRW(UPDATE_FUNC_ARGS) { } else if (parts[i].tmp==2) { int col = rand()%200+4; + int tmul; for (rx=-2; rx<3; rx++) for (ry=-2; ry<3; ry++) if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry)) { r = pmap[y+ry][x+rx]; - int tmul = rand()%7; + tmul = rand()%7; create_part(-1, x+rx, y+ry, PT_FIRW); r = pmap[y+ry][x+rx]; if ((r>>8)>=NPART || !r) diff --git a/src/elements/legacy.c b/src/elements/legacy.c index 1a345dd..0fd3d6b 100644 --- a/src/elements/legacy.c +++ b/src/elements/legacy.c @@ -2,9 +2,9 @@ // Interactions which only occur when legacy_enable is on int update_legacy_all(UPDATE_FUNC_ARGS) { - if (!legacy_enable) return 0; int r, rx, ry, rt; int t = parts[i].type; + if (!legacy_enable) return 0; if (t==PT_WTRV) { for (rx=-2; rx<3; rx++) for (ry=-2; ry<3; ry++) diff --git a/src/elements/phot.c b/src/elements/phot.c index 7b7afc6..11585f9 100644 --- a/src/elements/phot.c +++ b/src/elements/phot.c @@ -1,9 +1,9 @@ #include <element.h> int update_PHOT(UPDATE_FUNC_ARGS) { - if (1>rand()%10) update_PYRO(UPDATE_FUNC_SUBCALL_ARGS); int r, rt, rx, ry; float rr, rrr; + if (1>rand()%10) update_PYRO(UPDATE_FUNC_SUBCALL_ARGS); for (rx=-1; rx<2; rx++) for (ry=-1; ry<2; ry++) if (x+rx>=0 && y+ry>0 && x+rx<XRES && y+ry<YRES && (rx || ry)) { diff --git a/src/elements/sprk.c b/src/elements/sprk.c index 58692ee..ddac968 100644 --- a/src/elements/sprk.c +++ b/src/elements/sprk.c @@ -1,8 +1,9 @@ #include <element.h> int update_SPRK(UPDATE_FUNC_ARGS) { - update_PYRO(UPDATE_FUNC_SUBCALL_ARGS); int r, rx, ry, rt, conduct_sprk, nearp, pavg, ct = parts[i].ctype; + update_PYRO(UPDATE_FUNC_SUBCALL_ARGS); + if (parts[i].life<=0) { if (ct==PT_WATR||ct==PT_SLTW||ct==PT_PSCN||ct==PT_NSCN||ct==PT_ETRD||ct==PT_INWR) diff --git a/src/graphics.c b/src/graphics.c index 06cd6fb..b18a659 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1714,6 +1714,49 @@ void draw_parts(pixel *vid) blendpixel(vid, nx, ny, cr, cg, cb, 255); } + else if(t==PT_LOTE) + { + if(parts[i].tmp==2) + blendpixel(vid, nx, ny, 255, 128, 0, 255); + else if(parts[i].tmp==1) + blendpixel(vid, nx, ny, 255, 255, 0, 255); + else + blendpixel(vid, nx, ny, 255, 0, 0, 255); + } + else if(t==PT_FRG2) + { + if(parts[i].tmp==2) + blendpixel(vid, nx, ny, 0, 100, 50, 255); + else + blendpixel(vid, nx, ny, 0, 255, 90, 255); + } + else if(t==PT_STAR) + { + if(parts[i].tmp==4) + blendpixel(vid, nx, ny, 0, 0, 128, 255); + else if(parts[i].tmp==3) + blendpixel(vid, nx, ny, 0, 0, 150, 255); + else if(parts[i].tmp==2) + blendpixel(vid, nx, ny, 0, 0, 190, 255); + else if(parts[i].tmp==1) + blendpixel(vid, nx, ny, 0, 0, 230, 255); + else + blendpixel(vid, nx, ny, 0, 0, 70, 255); + } + else if(t==PT_FROG) + { + if(parts[i].tmp==2) + blendpixel(vid, nx, ny, 0, 100, 0, 255); + else + blendpixel(vid, nx, ny, 0, 255, 0, 255); + } + else if(t==PT_BRAN) + { + if(parts[i].tmp==1) + blendpixel(vid, nx, ny, 150, 150, 0, 255); + else + blendpixel(vid, nx, ny, 255, 255, 0, 255); + } else if (t==PT_DEUT) { diff --git a/src/powder.c b/src/powder.c index a065329..b2932d1 100644 --- a/src/powder.c +++ b/src/powder.c @@ -664,6 +664,12 @@ inline int create_part(int p, int x, int y, int t) parts[i].life = 50; parts[i].tmp = 50; } + if (ptypes[t].properties&PROP_LIFE) { + int r; + for(r = 0; r<NGOL; r++) + if(t==goltype[r]) + parts[i].tmp = grule[r+1][9] - 1; + } if (t==PT_DEUT) parts[i].life = 10; if (t==PT_BRAY) @@ -1297,23 +1303,30 @@ void update_particles_i(pixel *vid, int start, int inc) continue; } else - for ( golnum=1; golnum<NGOL; golnum++) + for ( golnum=1; golnum<=NGOL; golnum++) if (parts[r>>8].type==goltype[golnum-1]) { - gol[nx][ny] = golnum; - for ( nnx=-1; nnx<2; nnx++) - for ( nny=-1; nny<2; nny++)//it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check - { - gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][golnum] ++; - gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][0] ++; - } + if(parts[r>>8].tmp == grule[golnum][9]-1) { + gol[nx][ny] = golnum; + for ( nnx=-1; nnx<2; nnx++) + for ( nny=-1; nny<2; nny++)//it will count itself as its own neighbor, which is needed, but will have 1 extra for delete check + { + gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][golnum] ++; + gol2[((nx+nnx+XRES-3*CELL)%(XRES-2*CELL))+CELL][((ny+nny+YRES-3*CELL)%(YRES-2*CELL))+CELL][0] ++; + } + } else { + parts[r>>8].tmp --; + if(parts[r>>8].tmp<=0) + parts[r>>8].type = PT_NONE;//using kill_part makes it not work + } } } for (nx=CELL; nx<XRES-CELL; nx++) for (ny=CELL; ny<YRES-CELL; ny++) { + r = pmap[ny][nx]; neighbors = gol2[nx][ny][0]; - if (neighbors==0) + if(neighbors==0 || !(ptypes[r&0xFF].properties&PROP_LIFE || !r&0xFF) || (r>>8)>=NPART) continue; for ( golnum = 1; golnum<NGOL; golnum++) for ( goldelete = 0; goldelete<9; goldelete++) @@ -1324,7 +1337,12 @@ void update_particles_i(pixel *vid, int start, int inc) createdsomething = 1; } else if (neighbors-1==goldelete&&gol[nx][ny]==golnum&&(grule[golnum][goldelete]==0||grule[golnum][goldelete]==2))//subtract 1 because it counted itself - kill_part(pmap[ny][nx]>>8); + { + if(parts[r>>8].tmp==grule[golnum][9]-1) + parts[r>>8].tmp --; + } + if(parts[r>>8].tmp<=0) + parts[r>>8].type = PT_NONE;//using kill_part makes it not work } gol2[nx][ny][0] = 0; for ( z = 1; z<NGOL; z++) |
