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