summaryrefslogtreecommitdiff
path: root/src/powder.c
diff options
context:
space:
mode:
authorsavask <savask@yandex.ru>2011-05-21 09:45:43 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-06-04 17:09:02 (GMT)
commita48e477fca5d53813892d6fcc454b4b7c4a91020 (patch)
treee66eb05fe790ed009408f738b6907fde31e2fe3e /src/powder.c
parent98115038c74e2a9650fd723e7ecbe4edec96aa3f (diff)
downloadpowder-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/powder.c')
-rw-r--r--src/powder.c24
1 files changed, 19 insertions, 5 deletions
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)