summaryrefslogtreecommitdiff
path: root/src/elements/pcln.c
diff options
context:
space:
mode:
authorjacksonmj <jacksonmj@jacksonmj.none>2011-01-07 14:13:13 (GMT)
committer jacksonmj <jacksonmj@jacksonmj.none>2011-01-07 14:14:35 (GMT)
commit1ab4d328a64c096aecc618dd4d15359cb620bd51 (patch)
tree827a7d7882526fe8e6b76986e340100542c04d77 /src/elements/pcln.c
parented8c0031f4899ea4d1bf0b1ad15620bef735dbae (diff)
downloadpowder-1ab4d328a64c096aecc618dd4d15359cb620bd51.zip
powder-1ab4d328a64c096aecc618dd4d15359cb620bd51.tar.gz
Start function pointers
Diffstat (limited to 'src/elements/pcln.c')
-rw-r--r--src/elements/pcln.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/elements/pcln.c b/src/elements/pcln.c
new file mode 100644
index 0000000..38af102
--- /dev/null
+++ b/src/elements/pcln.c
@@ -0,0 +1,42 @@
+#include <powder.h>
+
+int update_PCLN(UPDATE_FUNC_ARGS) {
+ if (!parts[i].ctype)
+ 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 &&
+ pmap[y+ny][x+nx] &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_CLNE &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_PCLN &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_BCLN &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_SPRK &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_NSCN &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_PSCN &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_STKM &&
+ (pmap[y+ny][x+nx]&0xFF)!=PT_STKM2 &&
+ (pmap[y+ny][x+nx]&0xFF)!=0xFF)
+ parts[i].ctype = pmap[y+ny][x+nx]&0xFF;
+ if (parts[i].ctype && parts[i].life==10) {
+ if (parts[i].ctype==PT_PHOT) {
+ for (nx=-1; nx<2; nx++) {
+ for (ny=-1; ny<2; ny++) {
+ int r = create_part(-1, x+nx, y+ny, parts[i].ctype);
+ if (r!=-1) {
+ parts[r].vx = nx*3;
+ parts[r].vy = ny*3;
+ }
+ }
+ }
+ }
+ else if (ptypes[parts[i].ctype].properties&PROP_LIFE) {
+ for (nx=-1; nx<2; nx++) {
+ for (ny=-1; ny<2; ny++) {
+ create_part(-1, x+nx, y+ny, parts[i].ctype);
+ }
+ }
+ } else {
+ create_part(-1, x+rand()%3-1, y+rand()%3-1, parts[i].ctype);
+ }
+ }
+}