summaryrefslogtreecommitdiff
path: root/src/elements/figh.c
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2011-10-26 16:10:21 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2011-10-26 16:10:21 (GMT)
commite2c9882692fabcd22a7d022ebd21fd3b36ad84b0 (patch)
tree0afb6c4c35985625484d87adcdda40004910a3ff /src/elements/figh.c
parent4742c1bcd9103e93751b67a831403a66dc411804 (diff)
parent60de1cf5754d8132a7bf5b6868df34babe66397b (diff)
downloadpowder-e2c9882692fabcd22a7d022ebd21fd3b36ad84b0.zip
powder-e2c9882692fabcd22a7d022ebd21fd3b36ad84b0.tar.gz
Merge latest FIGH additions
Diffstat (limited to 'src/elements/figh.c')
-rw-r--r--src/elements/figh.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/elements/figh.c b/src/elements/figh.c
new file mode 100644
index 0000000..99f39b1
--- /dev/null
+++ b/src/elements/figh.c
@@ -0,0 +1,91 @@
+#include <element.h>
+
+int update_FIGH(UPDATE_FUNC_ARGS)
+{
+ playerst* figh = &fighters[(unsigned char)parts[i].tmp];
+
+ float tarx, tary;
+
+ parts[i].tmp2 = 0; //0 - stay in place, 1 - seek a stick man
+
+ //Set target cords
+ if (player.spwn)
+ {
+ if (player2.spwn)
+ if ((pow(player.legs[2]-x, 2) + pow(player.legs[3]-y, 2))<=
+ (pow(player2.legs[2]-x, 2) + pow(player2.legs[3]-y, 2)))
+ {
+ tarx = player.legs[2];
+ tary = player.legs[3];
+ }
+ else
+ {
+ tarx = player2.legs[2];
+ tary = player2.legs[3];
+ }
+ else
+ {
+ tarx = player.legs[2];
+ tary = player.legs[3];
+ }
+
+ parts[i].tmp2 = 1;
+ }
+ else
+ if (player2.spwn)
+ {
+ tarx = player2.legs[2];
+ tary = player2.legs[3];
+
+ parts[i].tmp2 = 1;
+ }
+
+ switch (parts[i].tmp2)
+ {
+ case 1:
+ if ((pow(tarx-x, 2) + pow(tary-y, 2))<600)
+ {
+ if (figh->elem == PT_FIRE || figh->elem == PT_LIGH)
+ figh->comm = (int)figh->comm | 0x08;
+ }
+ else
+ if (tarx<x)
+ {
+ figh->comm = 0x01;
+ if (!eval_move(PT_DUST, figh->legs[4]-4, figh->legs[5]-1, NULL) || !eval_move(PT_DUST, figh->legs[12]-4, figh->legs[13]-1, NULL))
+ figh->comm = (int)figh->comm | 0x04;
+ }
+ else
+ {
+ figh->comm = 0x02;
+ if (!eval_move(PT_DUST, figh->legs[4]+4, figh->legs[5]-1, NULL) || !eval_move(PT_DUST, figh->legs[12]+4, figh->legs[13]-1, NULL))
+ figh->comm = (int)figh->comm | 0x04;
+ }
+ break;
+ default:
+ figh->comm = 0;
+ break;
+ }
+
+ figh->pcomm = figh->comm;
+
+ run_stickman(figh, UPDATE_FUNC_SUBCALL_ARGS);
+ return 0;
+}
+
+int graphics_FIGH(GRAPHICS_FUNC_ARGS)
+{
+ playerst * cplayer = &fighters[(unsigned char)cpart->tmp];
+ *pixel_mode = PSPEC_STICKMAN;
+ if (cplayer->elem<PT_NUM)
+ {
+ *colr = PIXR(ptypes[cplayer->elem].pcolors);
+ *colg = PIXG(ptypes[cplayer->elem].pcolors);
+ *colb = PIXB(ptypes[cplayer->elem].pcolors);
+ }
+ else
+ {
+ *colr = *colg = *colb = 255;
+ }
+ return 1;
+}