diff options
| author | Simon 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) |
| commit | e2c9882692fabcd22a7d022ebd21fd3b36ad84b0 (patch) | |
| tree | 0afb6c4c35985625484d87adcdda40004910a3ff /src/elements/figh.c | |
| parent | 4742c1bcd9103e93751b67a831403a66dc411804 (diff) | |
| parent | 60de1cf5754d8132a7bf5b6868df34babe66397b (diff) | |
| download | powder-e2c9882692fabcd22a7d022ebd21fd3b36ad84b0.zip powder-e2c9882692fabcd22a7d022ebd21fd3b36ad84b0.tar.gz | |
Merge latest FIGH additions
Diffstat (limited to 'src/elements/figh.c')
| -rw-r--r-- | src/elements/figh.c | 91 |
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; +} |
