Author: cazfi
Date: Mon May 15 00:56:12 2017
New Revision: 35581

URL: http://svn.gna.org/viewcvs/freeciv?rev=35581&view=rev
Log:
Reload current ruleset when loading !ruleset_locked scenario

See hrm Bug #659453

Modified:
    branches/S3_0/client/client_main.c
    branches/S3_0/common/game.c
    branches/S3_0/common/game.h
    branches/S3_0/server/savegame3.c
    branches/S3_0/server/srv_main.c
    branches/S3_0/server/srv_main.h
    branches/S3_0/server/stdinhand.c
    branches/S3_0/tools/civmanual.c
    branches/S3_0/tools/ruledit/ruledit.cpp
    branches/S3_0/tools/ruleup.c

Modified: branches/S3_0/client/client_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/client/client_main.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/client/client_main.c  (original)
+++ branches/S3_0/client/client_main.c  Mon May 15 00:56:12 2017
@@ -249,7 +249,7 @@
   client.conn.playing = NULL;
   client.conn.observer = FALSE;
 
-  game_init();
+  game_init(FALSE);
   attribute_init();
   agents_init();
   control_init();

Modified: branches/S3_0/common/game.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/common/game.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/common/game.c (original)
+++ branches/S3_0/common/game.c Mon May 15 00:56:12 2017
@@ -59,7 +59,7 @@
 
 bool am_i_server = FALSE;
 
-static void game_defaults(void);
+static void game_defaults(bool keep_ruleset_value);
 
 /**************************************************************************
   Is program type server?
@@ -227,7 +227,7 @@
 /****************************************************************************
   Set default game values.
 ****************************************************************************/
-static void game_defaults(void)
+static void game_defaults(bool keep_ruleset_value)
 {
   int i;
 
@@ -394,7 +394,9 @@
     game.server.razechance        = GAME_DEFAULT_RAZECHANCE;
     game.server.revealmap         = GAME_DEFAULT_REVEALMAP;
     game.server.revolution_length = GAME_DEFAULT_REVOLUTION_LENGTH;
-    sz_strlcpy(game.server.rulesetdir, GAME_DEFAULT_RULESETDIR);
+    if (!keep_ruleset_value) {
+      sz_strlcpy(game.server.rulesetdir, GAME_DEFAULT_RULESETDIR);
+    }
     game.server.save_compress_level = GAME_DEFAULT_COMPRESS_LEVEL;
     game.server.save_compress_type = GAME_DEFAULT_COMPRESS_TYPE;
     sz_strlcpy(game.server.save_name, GAME_DEFAULT_SAVE_NAME);
@@ -432,9 +434,9 @@
 
   The variables are listed in alphabetical order.
 ****************************************************************************/
-void game_init(void)
-{
-  game_defaults();
+void game_init(bool keep_ruleset_value)
+{
+  game_defaults(keep_ruleset_value);
   player_slots_init();
   map_init();
   team_slots_init();
@@ -481,7 +483,7 @@
 {
   if (is_server()) {
     game_free();
-    game_init();
+    game_init(FALSE);
   } else {
     /* Reset the players infos. */
     players_iterate(pplayer) {

Modified: branches/S3_0/common/game.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/common/game.h?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/common/game.h (original)
+++ branches/S3_0/common/game.h Mon May 15 00:56:12 2017
@@ -291,7 +291,7 @@
   i_am_server(); /* No difference between a tool and server at the moment */
 }
 
-void game_init(void);
+void game_init(bool keep_ruleset_value);
 void game_map_init(void);
 void game_free(void);
 void game_reset(void);

Modified: branches/S3_0/server/savegame3.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/savegame3.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/server/savegame3.c    (original)
+++ branches/S3_0/server/savegame3.c    Mon May 15 00:56:12 2017
@@ -1310,10 +1310,11 @@
        * are special scenarios. */
       sz_strlcpy(game.server.rulesetdir, GAME_DEFAULT_RULESETDIR);
     }
-    if (!load_rulesets(NULL, FALSE, TRUE, FALSE)) {
-      /* Failed to load correct ruleset */
-      sg_failure_ret(FALSE, "Failed to load ruleset");
-    }
+  }
+
+  if (!load_rulesets(NULL, FALSE, TRUE, FALSE)) {
+    /* Failed to load correct ruleset */
+    sg_failure_ret(FALSE, "Failed to load ruleset");
   }
 
   /* This is in the savegame only if the game has been started before 
savegame3.c time,

Modified: branches/S3_0/server/srv_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/srv_main.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/server/srv_main.c     (original)
+++ branches/S3_0/server/srv_main.c     Mon May 15 00:56:12 2017
@@ -2745,7 +2745,7 @@
   voting_init();
   ai_timer_init();
 
-  server_game_init();
+  server_game_init(FALSE);
   mapimg_init(mapimg_server_tile_known, mapimg_server_tile_terrain,
               mapimg_server_tile_owner, mapimg_server_tile_city,
               mapimg_server_tile_unit, mapimg_server_plrcolor_count,
@@ -3109,7 +3109,7 @@
 /**************************************************************************
   Initialize game data for the server (corresponds to server_game_free).
 **************************************************************************/
-void server_game_init(void)
+void server_game_init(bool keep_ruleset_value)
 {
   /* was redundantly in game_load() */
   server.playable_nations = 0;
@@ -3120,7 +3120,7 @@
   identity_number_reserve(IDENTITY_NUMBER_ZERO);
 
   event_cache_init();
-  game_init();
+  game_init(keep_ruleset_value);
   /* game_init() set game.server.plr_colors to NULL. So we need to
    * initialize the colors after. */
   playercolor_init();
@@ -3231,7 +3231,7 @@
 
     /* Reset server */
     server_game_free();
-    server_game_init();
+    server_game_init(FALSE);
     mapimg_reset();
     load_rulesets(NULL, FALSE, TRUE, FALSE);
     game.info.is_new_game = TRUE;

Modified: branches/S3_0/server/srv_main.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/srv_main.h?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/server/srv_main.h     (original)
+++ branches/S3_0/server/srv_main.h     Mon May 15 00:56:12 2017
@@ -114,7 +114,7 @@
 void identity_number_release(int id);
 void identity_number_reserve(int id);
 int identity_number(void);
-void server_game_init(void);
+void server_game_init(bool keep_ruleset_value);
 void server_game_free(void);
 const char *aifill(int amount);
 

Modified: branches/S3_0/server/stdinhand.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/server/stdinhand.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/server/stdinhand.c    (original)
+++ branches/S3_0/server/stdinhand.c    Mon May 15 00:56:12 2017
@@ -3726,7 +3726,10 @@
 
   /* Now free all game data. */
   server_game_free();
-  server_game_init();
+
+  /* Keep old ruleset value. Scenario file will either use the old value,
+   * or to initialize new value itself. */
+  server_game_init(TRUE);
 
   loadtimer = timer_new(TIMER_CPU, TIMER_ACTIVE);
   timer_start(loadtimer);

Modified: branches/S3_0/tools/civmanual.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/tools/civmanual.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/tools/civmanual.c     (original)
+++ branches/S3_0/tools/civmanual.c     Mon May 15 00:56:12 2017
@@ -794,7 +794,7 @@
   fc_interface_init_tool();
 
   /* Initialize game with default values */
-  game_init();
+  game_init(FALSE);
 
   /* Set ruleset user requested in to use */
   if (ruleset != NULL) {

Modified: branches/S3_0/tools/ruledit/ruledit.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/tools/ruledit/ruledit.cpp?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/tools/ruledit/ruledit.cpp     (original)
+++ branches/S3_0/tools/ruledit/ruledit.cpp     Mon May 15 00:56:12 2017
@@ -97,7 +97,7 @@
     /* Reset aifill to zero */
     game.info.aifill = 0;
 
-    game_init();
+    game_init(FALSE);
     i_am_tool();
 
     if (comments_load()) {

Modified: branches/S3_0/tools/ruleup.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S3_0/tools/ruleup.c?rev=35581&r1=35580&r2=35581&view=diff
==============================================================================
--- branches/S3_0/tools/ruleup.c        (original)
+++ branches/S3_0/tools/ruleup.c        Mon May 15 00:56:12 2017
@@ -126,7 +126,7 @@
 
   settings_init(FALSE);
 
-  game_init();
+  game_init(FALSE);
   i_am_tool();
 
   rup_parse_cmdline(argc, argv);


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

Reply via email to