X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fweapons.c;h=c05f45692bb59d3299126f179286b207f2e1ab2d;hb=c46b82f5794be555af272740e67ead316b9b1f90;hp=b778a0ec96c484a448264ae979454c9a9e0b70a7;hpb=82abbc606cc5e3d9c26e2ab6d36e093ed86ae1bf;p=flatwaifu.git diff --git a/src/weapons.c b/src/weapons.c index b778a0e..c05f456 100644 --- a/src/weapons.c +++ b/src/weapons.c @@ -28,6 +28,7 @@ #include "smoke.h" #include "weapons.h" #include "misc.h" +#include "my.h" extern int hit_xv,hit_yv; @@ -51,17 +52,46 @@ static weapon_t wp[MAXWPN]; static void throw(int,int,int,int,int,int,int,int); -void WP_savegame(FILE* h) { - int n; - - for(n=MAXWPN;--n;) if(wp[n].t) break; - ++n;myfwrite(&n,1,4,h);myfwrite(wp,1,n*sizeof(wp[0]),h); +void WP_savegame (FILE *h) { + int i, n; + for (n = MAXWPN - 1; n >= 0 && wp[n].t == 0; n--) { + // empty + } + n += 1; + myfwrite32(n, h); + for (i = 0; i < n; i++) { + myfwrite32(wp[i].o.x, h); + myfwrite32(wp[i].o.y, h); + myfwrite32(wp[i].o.xv, h); + myfwrite32(wp[i].o.yv, h); + myfwrite32(wp[i].o.vx, h); + myfwrite32(wp[i].o.vy, h); + myfwrite32(wp[i].o.r, h); + myfwrite32(wp[i].o.h, h); + myfwrite8(wp[i].t, h); + myfwrite8(wp[i].s, h); + myfwrite32(wp[i].own, h); + myfwrite16(wp[i].target, h); + } } -void WP_loadgame(FILE* h) { - int n; - - myfread(&n,1,4,h);myfread(wp,1,n*sizeof(wp[0]),h); +void WP_loadgame (FILE *h) { + int i, n; + n = myfread32(h); + for (i = 0; i < n; i++) { + wp[i].o.x = myfread32(h); + wp[i].o.y = myfread32(h); + wp[i].o.xv = myfread32(h); + wp[i].o.yv = myfread32(h); + wp[i].o.vx = myfread32(h); + wp[i].o.vy = myfread32(h); + wp[i].o.r = myfread32(h); + wp[i].o.h = myfread32(h); + wp[i].t = myfread8(h); + wp[i].s = myfread8(h); + wp[i].own = myfread32(h); + wp[i].target = myfread16(h); + } } void WP_alloc(void) {