X-Git-Url: http://deadsoftware.ru/gitweb?p=flatwaifu.git;a=blobdiff_plain;f=src%2Fmonster.c;h=b0d677f7f5fb0e76136378ba271e7fcb937e22e1;hp=98b909ebf803eea40342235b1c98770727e85c84;hb=da79be9b6a4134aa9cd19e6f5909fedb20d318cb;hpb=e5c2eddc151a59db4e611a77901732d7c15fde90 diff --git a/src/monster.c b/src/monster.c index 98b909e..b0d677f 100644 --- a/src/monster.c +++ b/src/monster.c @@ -137,27 +137,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(mn[i].ap, h); // 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); static int MN_hit(int n,int d,int o,int t); -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