diff --git a/src/weapons.c b/src/weapons.c
index b778a0ec96c484a448264ae979454c9a9e0b70a7..4a5a063d426b2e92e6695717ff50d0933f7032e9 100644 (file)
--- a/src/weapons.c
+++ b/src/weapons.c
static void throw(int,int,int,int,int,int,int,int);
-void WP_savegame(FILE* h) {
- int n;
-
- for(n=MAXWPN;--n;) if(wp[n].t) break;
- ++n;myfwrite(&n,1,4,h);myfwrite(wp,1,n*sizeof(wp[0]),h);
+void WP_savegame (FILE *h) {
+ int i, n;
+ for (n = MAXWPN - 1; n >= 0 && wp[n].t == 0; n--) {
+ // empty
+ }
+ n += 1;
+ myfwrite32(n, h);
+ for (i = 0; i < n; i++) {
+ myfwrite32(wp[i].o.x, h);
+ myfwrite32(wp[i].o.y, h);
+ myfwrite32(wp[i].o.xv, h);
+ myfwrite32(wp[i].o.yv, h);
+ myfwrite32(wp[i].o.vx, h);
+ myfwrite32(wp[i].o.vy, h);
+ myfwrite32(wp[i].o.r, h);
+ myfwrite32(wp[i].o.h, h);
+ myfwrite8(wp[i].t, h);
+ myfwrite8(wp[i].s, h);
+ myfwrite32(wp[i].own, h);
+ myfwrite16(wp[i].target, h);
+ }
}
-void WP_loadgame(FILE* h) {
- int n;
-
- myfread(&n,1,4,h);myfread(wp,1,n*sizeof(wp[0]),h);
+void WP_loadgame (FILE *h) {
+ int i, n;
+ myfread32(&n, h);
+ for (i = 0; i < n; i++) {
+ myfread32(&wp[i].o.x, h);
+ myfread32(&wp[i].o.y, h);
+ myfread32(&wp[i].o.xv, h);
+ myfread32(&wp[i].o.yv, h);
+ myfread32(&wp[i].o.vx, h);
+ myfread32(&wp[i].o.vy, h);
+ myfread32(&wp[i].o.r, h);
+ myfread32(&wp[i].o.h, h);
+ myfread8(&wp[i].t, h);
+ myfread8(&wp[i].s, h);
+ myfread32(&wp[i].own, h);
+ myfread16(&wp[i].target, h);
+ }
}
void WP_alloc(void) {