diff options
| author | savask <savask@yandex.ru> | 2011-05-21 09:45:43 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2011-06-04 17:09:02 (GMT) |
| commit | a48e477fca5d53813892d6fcc454b4b7c4a91020 (patch) | |
| tree | e66eb05fe790ed009408f738b6907fde31e2fe3e /src | |
| parent | 98115038c74e2a9650fd723e7ecbe4edec96aa3f (diff) | |
| download | powder-a48e477fca5d53813892d6fcc454b4b7c4a91020.zip powder-a48e477fca5d53813892d6fcc454b4b7c4a91020.tar.gz | |
Moved detach(i) function to powder.c, made soap display connections when
it's double-joined, made portal in detach soap before teleportating
(works strangely)
Diffstat (limited to 'src')
| -rw-r--r-- | src/elements/prti.c | 4 | ||||
| -rw-r--r-- | src/elements/soap.c | 17 | ||||
| -rw-r--r-- | src/graphics.c | 2 | ||||
| -rw-r--r-- | src/powder.c | 24 |
4 files changed, 24 insertions, 23 deletions
diff --git a/src/elements/prti.c b/src/elements/prti.c index 7205844..f7599bf 100644 --- a/src/elements/prti.c +++ b/src/elements/prti.c @@ -33,6 +33,10 @@ int update_PRTI(UPDATE_FUNC_ARGS) { if (!r || (r&0xFF)==PT_PRTI || (r&0xFF)==PT_PRTO || (ptypes[r&0xFF].falldown== 0 && ptypes[r&0xFF].state != ST_GAS && (r&0xFF)!=PT_SPRK)) continue; } + + if ((r&0xFF) == PT_SOAP) + detach(r>>8); + for ( nnx=0; nnx<80; nnx++) if (!portalp[parts[i].tmp][count-1][nnx].type) { diff --git a/src/elements/soap.c b/src/elements/soap.c index 0496bd2..ce8ff3d 100644 --- a/src/elements/soap.c +++ b/src/elements/soap.c @@ -1,22 +1,5 @@ #include <element.h> -void detach(int i) -{ - if ((parts[i].ctype&2) == 2) - { - if ((parts[parts[i].tmp].ctype&4) == 4) - parts[parts[i].tmp].ctype ^= 4; - } - - if ((parts[i].ctype&4) == 4) - { - if ((parts[parts[i].tmp2].ctype&2) == 2) - parts[parts[i].tmp2].ctype ^= 2; - } - - parts[i].ctype = 0; -} - int update_SOAP(UPDATE_FUNC_ARGS) { int r, rx, ry; diff --git a/src/graphics.c b/src/graphics.c index a5593a2..0b8b8f8 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1583,7 +1583,7 @@ void draw_parts(pixel *vid) if (t==PT_SOAP) { - if (((parts[i].ctype&1) == 1) && ((parts[i].ctype&2) == 2)) + if ((parts[i].ctype&7) == 7) draw_line(vid, nx, ny, (int)(parts[parts[i].tmp].x+0.5f), (int)(parts[parts[i].tmp].y+0.5f), 245, 245, 220, XRES+BARSIZE); } diff --git a/src/powder.c b/src/powder.c index 19a6d70..b8bfe85 100644 --- a/src/powder.c +++ b/src/powder.c @@ -548,6 +548,24 @@ int get_normal_interp(int pt, float x0, float y0, float dx, float dy, float *nx, return get_normal(pt, x, y, dx, dy, nx, ny); } +//For soap only +void detach(int i) +{ + if ((parts[i].ctype&2) == 2) + { + if ((parts[parts[i].tmp].ctype&4) == 4) + parts[parts[i].tmp].ctype ^= 4; + } + + if ((parts[i].ctype&4) == 4) + { + if ((parts[parts[i].tmp2].ctype&2) == 2) + parts[parts[i].tmp2].ctype ^= 2; + } + + parts[i].ctype = 0; +} + void kill_part(int i)//kills particle number i { int x, y; @@ -574,11 +592,7 @@ void kill_part(int i)//kills particle number i } if (parts[i].type == PT_SOAP) { - if ((parts[i].ctype&2) == 2) - parts[parts[i].tmp].ctype ^= 4; - - if ((parts[i].ctype&4) == 4) - parts[parts[i].tmp2].ctype ^= 2; + detach(i); } if (x>=0 && y>=0 && x<XRES && y<YRES) { if ((pmap[y][x]>>8)==i) |
