From 90924e23921f7ee7471d8ef7de4e337e1af78fec Mon Sep 17 00:00:00 2001 From: Martin Read Date: Wed, 25 Sep 2013 20:23:44 +0100 Subject: [PATCH] Saved game now contains terrain data instead of RNG state for level rebuild --- main.cc | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/main.cc b/main.cc index 81f9b2a..9199267 100644 --- a/main.cc +++ b/main.cc @@ -86,18 +86,9 @@ void save_game(void) { FILE *fp; fp = fopen("victrix-abyssi.sav", "wb"); - /* Write out the snapshot we took of the RNG before generating the - * current level. */ - fwrite(saved_state, sizeof saved_state, 1, fp); - /* Write out the map flags; if we decide to have at-generation - * flags as well as at-exploration flags, the at-generation flags - * will be stored in a separate array. */ + fwrite(lvl.terrain, 1, sizeof lvl.terrain, fp); fwrite(lvl.flags, 1, sizeof lvl.flags, fp); - /* Write out the permanent object data. This is hideously - * wasteful (and guarantees savefile breakage at version-up), but - * it makes handling flavours much easier... */ fwrite(permobjs, NUM_OF_PERMOBJS, sizeof (struct permobj), fp); - /* Write out the dynamic monster/object arrays. */ fwrite(monsters, MONSTERS_IN_PLAY, sizeof (struct mon), fp); fwrite(objects, OBJECTS_IN_PLAY, sizeof (struct obj), fp); /* Write out the depth */ @@ -120,8 +111,7 @@ void load_game(void) FILE *fp; system("gunzip victrix-abyssi.sav"); fp = fopen("victrix-abyssi.sav", "rb"); - fread(rng_state, sizeof rng_state, 1, fp); - build_level(); + fread(lvl.terrain, 1, sizeof lvl.terrain, fp); fread(lvl.flags, 1, sizeof lvl.flags, fp); fread(permobjs, NUM_OF_PERMOBJS, sizeof (struct permobj), fp); fread(monsters, MONSTERS_IN_PLAY, sizeof (struct mon), fp); @@ -184,7 +174,6 @@ int dice(int count, int sides) void new_game(void) { - rng_init(); u_init(); flavours_init(); make_new_level(); @@ -619,6 +608,7 @@ int main(void) display_init(); memset(lvl.objs, -1, sizeof lvl.objs); memset(lvl.mons, -1, sizeof lvl.mons); + rng_init(); /* Do we have a saved game? */ i = stat("victrix-abyssi.sav.gz", &s); if (!i) -- 2.11.0