X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fmonster.c;h=749ef785039ace9fa4aeb0b7a73faceccbc95834;hb=c46b82f5794be555af272740e67ead316b9b1f90;hp=ed7604e99f89dcc3f708f19e33675c3f3261e3f7;hpb=a2115940e7643dcb1b87286f3d19fe95f7b79bd3;p=flatwaifu.git diff --git a/src/monster.c b/src/monster.c index ed7604e..749ef78 100644 --- a/src/monster.c +++ b/src/monster.c @@ -21,12 +21,10 @@ */ #include "glob.h" -//#include #include #include #include "vga.h" #include "files.h" -#include "error.h" #include "view.h" #include "bmap.h" #include "dots.h" @@ -38,6 +36,7 @@ #include "misc.h" #include "fx.h" #include "smoke.h" +#include "my.h" #define MANCOLOR 0xD0 @@ -139,25 +138,82 @@ static mnsz_t mnsz[MN_TN+1]={ 8, 26, 400, 70, 8,10, 30, 50 // man }; -void MN_savegame(FILE* h) { - int n; - - for(n=MAXMN;--n;) if(mn[n].t) break; - ++n;myfwrite(&n,1,4,h); - myfwrite(mn,1,n*sizeof(mn[0]),h); - myfwrite(&mnum,1,4,h);myfwrite(&gsndt,1,4,h); +void MN_savegame (FILE *h) { + int i, n; + for (n = MAXMN - 1; n >= 0 && mn[n].t == 0; n--) { + // empty + } + n += 1; + myfwrite32(n, h); + for (i = 0; i < n; i++) { + myfwrite32(mn[i].o.x, h); + myfwrite32(mn[i].o.y, h); + myfwrite32(mn[i].o.xv, h); + myfwrite32(mn[i].o.yv, h); + myfwrite32(mn[i].o.vx, h); + myfwrite32(mn[i].o.vy, h); + myfwrite32(mn[i].o.r, h); + myfwrite32(mn[i].o.h, h); + myfwrite8(mn[i].t, h); + myfwrite8(mn[i].d, h); + myfwrite8(mn[i].st, h); + myfwrite8(mn[i].ftime, h); + myfwrite32(mn[i].fobj, h); + myfwrite32(mn[i].s, h); + myfwrite32(0, h); // mn[i].ap useless, changed after load + myfwrite32(mn[i].aim, h); + myfwrite32(mn[i].life, h); + myfwrite32(mn[i].pain, h); + myfwrite32(mn[i].ac, h); + myfwrite32(mn[i].tx, h); + myfwrite32(mn[i].ty, h); + myfwrite32(mn[i].ammo, h); + myfwrite16(mn[i].atm, h); + } + myfwrite32(mnum, h); + myfwrite32(gsndt, h); } static void setst(int,int); -void MN_loadgame(FILE* h) { - int n,c; - - myfread(&n,1,4,h); - myfread(mn,1,n*sizeof(mn[0]),h); - myfread(&mnum,1,4,h);myfread(&gsndt,1,4,h); - for(n=0;n