DEADSOFTWARE

fix some warnings
[flatwaifu.git] / src / player.c
index fd1080a4a49a52e34b738f06af873b8ded08d86e..762049316c31de67fdbb5432de03d3d4a13547e7 100644 (file)
@@ -35,6 +35,7 @@
 #include "switch.h"
 #include "player.h"
 #include "misc.h"
+#include "my.h"
 
 extern int hit_xv,hit_yv;
 
@@ -76,16 +77,112 @@ struct {
 } _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;}