summaryrefslogtreecommitdiff
path: root/src/elements/aray.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/elements/aray.c')
-rw-r--r--src/elements/aray.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/elements/aray.c b/src/elements/aray.c
index e3d142f..136158a 100644
--- a/src/elements/aray.c
+++ b/src/elements/aray.c
@@ -1,19 +1,20 @@
#include <powder.h>
int update_ARAY(UPDATE_FUNC_ARGS) {
- int r, nxx, nyy, docontinue, nxi, nyi;
+ int r, nxx, nyy, docontinue, nxi, nyi, rx, ry, nr;
if (parts[i].life==0) {
int colored =0;
- for (nx=-1; nx<2; nx++) {
- for (ny=-1; ny<2; ny++) {
- if (x+nx>=0 && y+ny>0 && x+nx<XRES && y+ny<YRES && (nx || ny)) {
- r = pmap[y+ny][x+nx];
+ 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];
if ((r>>8)>=NPART || !r)
continue;
if ((r&0xFF)==PT_SPRK) {
int destroy = (parts[r>>8].ctype==PT_PSCN)?1:0;
int nostop = (parts[r>>8].ctype==PT_INST)?1:0;
- for (docontinue = 1, nxx = 0, nyy = 0, nxi = nx*-1, nyi = ny*-1; docontinue; nyy+=nyi, nxx+=nxi) {
+ for (docontinue = 1, nxx = 0, nyy = 0, nxi = rx*-1, nyi = ry*-1; docontinue; nyy+=nyi, nxx+=nxi) {
if (!(x+nxi+nxx<XRES && y+nyi+nyy<YRES && x+nxi+nxx >= 0 && y+nyi+nyy >= 0)) {
break;
}
@@ -29,22 +30,21 @@ int update_ARAY(UPDATE_FUNC_ARGS) {
parts[nr].ctype = colored;
}
} else if (!destroy) {
- if (parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==0) {
+ if ((r&0xFF)==PT_BRAY&&parts[r>>8].tmp==0) {
if (nyy!=0 || nxx!=0) {
- parts[r>>8].type = PT_BRAY;
parts[r>>8].life = 1020;
parts[r>>8].tmp = 1;
if (!parts[r>>8].ctype)
parts[r>>8].ctype = colored;
}
docontinue = 0;
- } else if (parts[r>>8].type==PT_BRAY&&parts[r>>8].tmp==1) {
+ } else if ((r&0xFF)==PT_BRAY&&parts[r>>8].tmp==1) {
parts[r>>8].life = 1020;
//docontinue = 1;
}
- else if (parts[r>>8].type==PT_FILT) {
+ else if ((r&0xFF)==PT_FILT) {
colored = parts[r>>8].ctype;
- } else if (parts[r>>8].type!=PT_INWR && parts[r>>8].type!=PT_ARAY && parts[r>>8].type!=PT_WIFI) {
+ } else if ((r&0xFF)!=PT_INWR && (r&0xFF)!=PT_ARAY && (r&0xFF)!=PT_WIFI) {
if (nyy!=0 || nxx!=0) {
create_part(-1, x+nxi+nxx, y+nyi+nyy, PT_SPRK);
}
@@ -69,8 +69,6 @@ int update_ARAY(UPDATE_FUNC_ARGS) {
}
//parts[i].life = 4;
}
- }
- }
}
return 0;
}