Author: jtn
Date: Thu Aug 20 01:41:27 2015
New Revision: 29603

URL: http://svn.gna.org/viewcvs/freeciv?rev=29603&view=rev
Log:
When loading savegame, recalculate city illness only after loading all
trade partners. This ensures the client's display of illness is up to date.

See gna bug #23786.

Modified:
    branches/S2_6/server/savegame.c
    branches/S2_6/server/savegame2.c

Modified: branches/S2_6/server/savegame.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/savegame.c?rev=29603&r1=29602&r2=29603&view=diff
==============================================================================
--- branches/S2_6/server/savegame.c     (original)
+++ branches/S2_6/server/savegame.c     Thu Aug 20 01:41:27 2015
@@ -2331,12 +2331,6 @@
     pcity->turn_plague =
       secfile_lookup_int_default(file, 0, "player%d.c%d.turn_plague",
                                  plrno,i);
-    if (game.info.illness_on) {
-      /* recalculate city illness */
-      pcity->server.illness
-        = city_illness_calc(pcity, NULL, NULL, &(pcity->illness_trade), NULL);
-    }
-
     fc_assert_exit_msg(secfile_lookup_int(file, &pcity->anarchy,
                                           "player%d.c%d.anarchy", plrno, i),
                        "%s", secfile_error());
@@ -3970,6 +3964,16 @@
       } unit_list_iterate_end;
       /* Load transporter status. */
       player_load_units_transporter(pplayer, file);
+      /* Update cached city illness. This can depend on trade routes,
+       * so can't be calculated until all players have been loaded. */
+      if (game.info.illness_on) {
+        city_list_iterate(pplayer->cities, pcity) {
+          pcity->server.illness
+            = city_illness_calc(pcity, NULL, NULL,
+                                &(pcity->illness_trade), NULL);
+        } city_list_iterate_end;
+      }
+
     } players_iterate_end;
 
     /* Free worked tiles map */

Modified: branches/S2_6/server/savegame2.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/savegame2.c?rev=29603&r1=29602&r2=29603&view=diff
==============================================================================
--- branches/S2_6/server/savegame2.c    (original)
+++ branches/S2_6/server/savegame2.c    Thu Aug 20 01:41:27 2015
@@ -3682,6 +3682,16 @@
     } players_iterate_alive_end;
   } players_iterate_alive_end;
 
+  /* Update cached city illness. This can depend on trade routes,
+   * so can't be calculated until all players have been loaded. */
+  if (game.info.illness_on) {
+    cities_iterate(pcity) {
+      pcity->server.illness
+        = city_illness_calc(pcity, NULL, NULL,
+                            &(pcity->illness_trade), NULL);
+    } cities_iterate_end;
+  }
+
   /* Update all city information.  This must come after all cities are
    * loaded (in player_load) but before player (dumb) cities are loaded
    * in player_load_vision(). */
@@ -4612,11 +4622,6 @@
 
   pcity->turn_plague =
     secfile_lookup_int_default(loading->file, 0, "%s.turn_plague", citystr);
-  if (game.info.illness_on) {
-    /* recalculate city illness */
-    pcity->server.illness = city_illness_calc(pcity, NULL, NULL,
-                                              &(pcity->illness_trade), NULL);
-  }
 
   sg_warn_ret_val(secfile_lookup_int(loading->file, &pcity->anarchy,
                                     "%s.anarchy", citystr),


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

Reply via email to