diff options
| author | Simon <simon@hardwired.org.uk> | 2011-01-27 20:32:34 (GMT) |
|---|---|---|
| committer | Simon <simon@hardwired.org.uk> | 2011-01-27 20:32:34 (GMT) |
| commit | e9ae32b0ccba9d19dd872da547db1ff23b34a431 (patch) | |
| tree | 3746dfe9e06940d3ff6c649696cd3a689012ca7b /src/elements/prto.c | |
| parent | aedb16efb9601a6699201484064f13b61ba30b5c (diff) | |
| parent | 58a700fbb00e8ad82f239a0ea80d0e92fcb9eaf9 (diff) | |
| download | powder-e9ae32b0ccba9d19dd872da547db1ff23b34a431.zip powder-e9ae32b0ccba9d19dd872da547db1ff23b34a431.tar.gz | |
Merge with jacksonmj, Warning: potential for lot of bugs
Diffstat (limited to 'src/elements/prto.c')
| -rw-r--r-- | src/elements/prto.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/elements/prto.c b/src/elements/prto.c new file mode 100644 index 0000000..4889e89 --- /dev/null +++ b/src/elements/prto.c @@ -0,0 +1,53 @@ +#include <powder.h> + +int update_PRTO(UPDATE_FUNC_ARGS) { + int r, nnx, rx, ry, np; + int count = 0; + parts[i].tmp = (int)((parts[i].temp-73.15f)/100+1); + 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)) + { + r = pmap[y+ry][x+rx]; + count ++; + if ((r>>8)>=NPART || r) + continue; + if (!r) + { + for ( nnx =0 ; nnx<80; nnx++) + { + int randomness = count + rand()%3-1; + if (randomness<1) + randomness=1; + if (randomness>8) + randomness=8; + if (portal[parts[i].tmp][randomness-1][nnx]==PT_SPRK)// TODO: make it look better + { + create_part(-1,x+1,y,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x+1,y+1,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x+1,y-1,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x,y-1,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x,y+1,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x-1,y+1,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x-1,y,portal[parts[i].tmp][randomness-1][nnx]); + create_part(-1,x-1,y-1,portal[parts[i].tmp][randomness-1][nnx]); + portal[parts[i].tmp][randomness-1][nnx] = 0; + portaltemp[parts[i].tmp][randomness-1][nnx] = 0; + break; + } + else if (portal[parts[i].tmp][randomness-1][nnx]) + { + np = create_part(-1,x+rx,y+ry,portal[parts[i].tmp][randomness-1][nnx]); + if (np<0) continue; + parts[np].temp = portaltemp[parts[i].tmp][randomness-1][nnx]; + parts[np].ctype = portalctype[parts[i].tmp][randomness-1][nnx]; + portal[parts[i].tmp][randomness-1][nnx] = 0; + portaltemp[parts[i].tmp][randomness-1][nnx] = 0; + portalctype[parts[i].tmp][randomness-1][nnx] = 0; + break; + } + } + } + } + return 0; +} |
