Author: cazfi
Date: Mon Jul  4 10:51:46 2016
New Revision: 33157

URL: http://svn.gna.org/viewcvs/freeciv?rev=33157&view=rev
Log:
Store phase_mode by name to savegame3.c saves

See patch #7369

Modified:
    trunk/server/savecompat.c
    trunk/server/savegame3.c

Modified: trunk/server/savecompat.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savecompat.c?rev=33157&r1=33156&r2=33157&view=diff
==============================================================================
--- trunk/server/savecompat.c   (original)
+++ trunk/server/savecompat.c   Mon Jul  4 10:51:46 2016
@@ -1346,6 +1346,7 @@
 #ifdef FREECIV_DEV_SAVE_COMPAT_3_0
   bool randsaved;
   size_t diplstate_type_size;
+  struct entry *convert_entry;
   int num_settings;
 #endif /* FREECIV_DEV_SAVE_COMPAT_3_0 */
 
@@ -1636,6 +1637,26 @@
                        "settings.set%d.gamestart", num_settings);
     num_settings++;
   }
+
+  convert_entry = secfile_entry_lookup(loading->file, "game.phase_mode");
+  if (convert_entry != NULL && entry_type(convert_entry) == ENTRY_INT) {
+    int nval;
+
+    entry_int_get(convert_entry, &nval);
+
+    secfile_replace_str(loading->file, phase_mode_type_name(nval),
+                        "game.phase_mode");
+  }
+  convert_entry = secfile_entry_lookup(loading->file, 
"game.phase_mode_stored");
+  if (convert_entry != NULL && entry_type(convert_entry) == ENTRY_INT) {
+    int nval;
+
+    entry_int_get(convert_entry, &nval);
+
+    secfile_replace_str(loading->file, phase_mode_type_name(nval),
+                        "game.phase_mode_stored");
+  }
+  
 
   secfile_replace_int(loading->file, num_settings, "settings.set_count");
 

Modified: trunk/server/savegame3.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=33157&r1=33156&r2=33157&view=diff
==============================================================================
--- trunk/server/savegame3.c    (original)
+++ trunk/server/savegame3.c    Mon Jul  4 10:51:46 2016
@@ -1859,12 +1859,29 @@
     game.info.skill_level
       = ai_level_convert(GAME_HARDCODED_DEFAULT_SKILL_LEVEL);
   }
-  game.info.phase_mode
-    = secfile_lookup_int_default(loading->file, GAME_DEFAULT_PHASE_MODE,
-                                 "game.phase_mode");
-  game.server.phase_mode_stored
-    = secfile_lookup_int_default(loading->file, GAME_DEFAULT_PHASE_MODE,
-                                 "game.phase_mode_stored");
+  str  = secfile_lookup_str_default(loading->file, NULL,
+                                    "game.phase_mode");
+  if (str != NULL) {
+    game.info.phase_mode = phase_mode_type_by_name(str, fc_strcasecmp);
+    if (!phase_mode_type_is_valid(game.info.phase_mode)) {
+      log_error("Illegal phase mode \"%s\"", str);
+      game.info.phase_mode = GAME_DEFAULT_PHASE_MODE;
+    }
+  } else {
+    log_error("Phase mode missing");
+  }
+
+  str  = secfile_lookup_str_default(loading->file, NULL,
+                                    "game.phase_mode_stored");
+  if (str != NULL) {
+    game.server.phase_mode_stored = phase_mode_type_by_name(str, 
fc_strcasecmp);
+    if (!phase_mode_type_is_valid(game.server.phase_mode_stored)) {
+      log_error("Illegal stored phase mode \"%s\"", str);
+      game.server.phase_mode_stored = GAME_DEFAULT_PHASE_MODE;
+    }
+  } else {
+    log_error("Stored phase mode missing");
+  }
   game.info.phase
     = secfile_lookup_int_default(loading->file, 0,
                                  "game.phase");
@@ -1992,9 +2009,11 @@
 
   secfile_insert_str(saving->file, ai_level_name(game.info.skill_level),
                      "game.level");
-  secfile_insert_int(saving->file, game.info.phase_mode,
+  secfile_insert_str(saving->file,
+                     phase_mode_type_name(game.info.phase_mode),
                      "game.phase_mode");
-  secfile_insert_int(saving->file, game.server.phase_mode_stored,
+  secfile_insert_str(saving->file,
+                     phase_mode_type_name(game.server.phase_mode_stored),
                      "game.phase_mode_stored");
   secfile_insert_int(saving->file, game.info.phase,
                      "game.phase");


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to