diff --git a/src/monster.c b/src/monster.c
index ed7604e99f89dcc3f708f19e33675c3f3261e3f7..749ef785039ace9fa4aeb0b7a73faceccbc95834 100644 (file)
--- a/src/monster.c
+++ b/src/monster.c
*/
#include "glob.h"
*/
#include "glob.h"
-//#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "vga.h"
#include "files.h"
#include <stdlib.h>
#include <string.h>
#include "vga.h"
#include "files.h"
-#include "error.h"
#include "view.h"
#include "bmap.h"
#include "dots.h"
#include "view.h"
#include "bmap.h"
#include "dots.h"
#include "misc.h"
#include "fx.h"
#include "smoke.h"
#include "misc.h"
#include "fx.h"
#include "smoke.h"
+#include "my.h"
#define MANCOLOR 0xD0
#define MANCOLOR 0xD0
8, 26, 400, 70, 8,10, 30, 50 // man
};
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);
}
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<MAXMN;++n) if(mn[n].t) {
- c=mn[n].ac;setst(n,mn[n].st);mn[n].ac=c;
+static int MN_hit(int n,int d,int o,int t);
+
+void MN_loadgame (FILE *h) {
+ int i, n, c;
+ n = myfread32(h);
+ for (i = 0; i < n; i++) {
+ mn[i].o.x = myfread32(h);
+ mn[i].o.y = myfread32(h);
+ mn[i].o.xv = myfread32(h);
+ mn[i].o.yv = myfread32(h);
+ mn[i].o.vx = myfread32(h);
+ mn[i].o.vy = myfread32(h);
+ mn[i].o.r = myfread32(h);
+ mn[i].o.h = myfread32(h);
+ mn[i].t = myfread8(h);
+ mn[i].d = myfread8(h);
+ mn[i].st = myfread8(h);
+ mn[i].ftime = myfread8(h);
+ mn[i].fobj = myfread32(h);
+ mn[i].s = myfread32(h);
+ mn[i].ap = NULL; myfread32(h); // useless, changed after loading
+ mn[i].aim = myfread32(h);
+ mn[i].life = myfread32(h);
+ mn[i].pain = myfread32(h);
+ mn[i].ac = myfread32(h);
+ mn[i].tx = myfread32(h);
+ mn[i].ty = myfread32(h);
+ mn[i].ammo = myfread32(h);
+ mn[i].atm = myfread16(h);
+ }
+ mnum = myfread32(h);
+ gsndt = myfread32(h);
+ for (n = 0; n < MAXMN; ++n) {
+ if (mn[n].t) {
+ c = mn[n].ac;
+ setst(n, mn[n].st);
+ mn[n].ac = c;
+ }
}
}
}
}