diff --git a/src/player.c b/src/player.c
index 06bf44e85210d3f7a14c66a05fd86a60b5da1e96..762049316c31de67fdbb5432de03d3d4a13547e7 100644 (file)
--- a/src/player.c
+++ b/src/player.c
#include "glob.h"
#include <stdlib.h>
#include <string.h>
#include "glob.h"
#include <stdlib.h>
#include <string.h>
-#include "files.h"
-#include "memory.h"
#include "vga.h"
#include "vga.h"
-#include "error.h"
#include "keyb.h"
#include "view.h"
#include "dots.h"
#include "keyb.h"
#include "view.h"
#include "dots.h"
#include "switch.h"
#include "player.h"
#include "misc.h"
#include "switch.h"
#include "player.h"
#include "misc.h"
+#include "my.h"
extern int hit_xv,hit_yv;
extern int hit_xv,hit_yv;
} _keys;
#pragma pack()
} _keys;
#pragma pack()
-void PL_savegame(FILE* h) {
- myfwrite(&pl1,1,sizeof(pl1)-sizeof(_keys),h);//myfwrite(&pl1,1,sizeof(pl1),h);
- if(_2pl) myfwrite(&pl2,1,sizeof(pl2)-sizeof(_keys),h);//myfwrite(&pl2,1,sizeof(pl2),h);
- myfwrite(&PL_JUMP,1,4,h);myfwrite(&PL_RUN,1,4,h);myfwrite(&p_immortal,1,1,h);
+void PL_save_player (player_t *p, FILE *h) {
+ myfwrite32(p->o.x, h);
+ myfwrite32(p->o.y, h);
+ myfwrite32(p->o.xv, h);
+ myfwrite32(p->o.yv, h);
+ myfwrite32(p->o.vx, h);
+ myfwrite32(p->o.vy, h);
+ myfwrite32(p->o.r, h);
+ myfwrite32(p->o.h, h);
+ myfwrite32(p->looky, h);
+ myfwrite32(p->st, h);
+ myfwrite32(p->s, h);
+ myfwrite32(p->life, h);
+ myfwrite32(p->armor, h);
+ myfwrite32(p->hit, h);
+ myfwrite32(p->hito, h);
+ myfwrite32(p->pain, h);
+ myfwrite32(p->air, h);
+ myfwrite32(p->invl, h);
+ myfwrite32(p->suit, h);
+ myfwrite8(p->d, h);
+ myfwrite32(p->frag, h);
+ myfwrite32(p->ammo, h);
+ myfwrite32(p->shel, h);
+ myfwrite32(p->rock, h);
+ myfwrite32(p->cell, h);
+ myfwrite32(p->fuel, h);
+ myfwrite32(p->kills, h);
+ myfwrite32(p->secrets, h);
+ myfwrite8(p->fire, h);
+ myfwrite8(p->cwpn, h);
+ myfwrite8(p->csnd, h);
+ myfwrite8(p->amul, h);
+ myfwrite16(p->wpns, h);
+ myfwrite8(p->wpn, h);
+ myfwrite8(p->f, h);
+ myfwrite8(p->drawst, h);
+ myfwrite8(p->color, h);
+ myfwrite32(p->id, h);
+ myfwrite8(p->keys, h);
+ myfwrite8(p->lives, h);
+ // k* not saved
}
}
-void PL_loadgame(FILE* h) {
- myfread(&pl1,1,sizeof(pl1)-sizeof(_keys),h);//myfread(&pl1,1,sizeof(pl1),h);
- if(_2pl) myfread(&pl2,1,sizeof(pl2)-sizeof(_keys),h);//myfread(&pl2,1,sizeof(pl2),h);
- myfread(&PL_JUMP,1,4,h);myfread(&PL_RUN,1,4,h);myfread(&p_immortal,1,1,h);
+void PL_savegame (FILE *h) {
+ PL_save_player(&pl1, h);
+ if (_2pl) {
+ PL_save_player(&pl2, h);
+ }
+ myfwrite32(PL_JUMP, h);
+ myfwrite32(PL_RUN, h);
+ myfwrite8(p_immortal, h);
+}
+
+void PL_load_player (player_t *p, FILE *h) {
+ p->o.x = myfread32(h);
+ p->o.y = myfread32(h);
+ p->o.xv = myfread32(h);
+ p->o.yv = myfread32(h);
+ p->o.vx = myfread32(h);
+ p->o.vy = myfread32(h);
+ p->o.r = myfread32(h);
+ p->o.h = myfread32(h);
+ p->looky = myfread32(h);
+ p->st = myfread32(h);
+ p->s = myfread32(h);
+ p->life = myfread32(h);
+ p->armor = myfread32(h);
+ p->hit = myfread32(h);
+ p->hito = myfread32(h);
+ p->pain = myfread32(h);
+ p->air = myfread32(h);
+ p->invl = myfread32(h);
+ p->suit = myfread32(h);
+ p->d = myfread8(h);
+ p->frag = myfread32(h);
+ p->ammo = myfread32(h);
+ p->shel = myfread32(h);
+ p->rock = myfread32(h);
+ p->cell = myfread32(h);
+ p->fuel = myfread32(h);
+ p->kills = myfread32(h);
+ p->secrets = myfread32(h);
+ p->fire = myfread8(h);
+ p->cwpn = myfread8(h);
+ p->csnd = myfread8(h);
+ p->amul = myfread8(h);
+ p->wpns = myfread16(h);
+ p->wpn = myfread8(h);
+ p->f = myfread8(h);
+ p->drawst = myfread8(h);
+ p->color = myfread8(h);
+ p->id = myfread32(h);
+ p->keys = myfread8(h);
+ p->lives = myfread8(h);
+ // k* not saved
+}
+
+void PL_loadgame (FILE *h) {
+ PL_load_player(&pl1, h);
+ if (_2pl) {
+ PL_load_player(&pl2, h);
+ }
+ PL_JUMP = myfread32(h);
+ PL_RUN = myfread32(h);
+ p_immortal = myfread8(h);
}
static int nonz(int a) {return (a)?a:1;}
}
static int nonz(int a) {return (a)?a:1;}