Saved game now contains terrain data instead of RNG state for level rebuild
authorMartin Read <martin@blackswordsonics.com>
Wed, 25 Sep 2013 19:23:44 +0000 (20:23 +0100)
committerMartin Read <martin@blackswordsonics.com>
Wed, 25 Sep 2013 19:23:44 +0000 (20:23 +0100)
main.cc

diff --git a/main.cc b/main.cc
index 81f9b2a..9199267 100644 (file)
--- 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)