Author: cazfi Date: Mon May 15 00:56:02 2017 New Revision: 35580 URL: http://svn.gna.org/viewcvs/freeciv?rev=35580&view=rev Log: Reload current ruleset when loading !ruleset_locked scenario
See hrm Bug #659453 Modified: trunk/client/client_main.c trunk/common/game.c trunk/common/game.h trunk/server/savegame3.c trunk/server/srv_main.c trunk/server/srv_main.h trunk/server/stdinhand.c trunk/tools/civmanual.c trunk/tools/ruledit/ruledit.cpp trunk/tools/ruleup.c Modified: trunk/client/client_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/client_main.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/client/client_main.c (original) +++ trunk/client/client_main.c Mon May 15 00:56:02 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: trunk/common/game.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/common/game.c (original) +++ trunk/common/game.c Mon May 15 00:56:02 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(&wld.map, is_server()); team_slots_init(); @@ -482,7 +484,7 @@ { if (is_server()) { game_free(); - game_init(); + game_init(FALSE); } else { /* Reset the players infos. */ players_iterate(pplayer) { Modified: trunk/common/game.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/common/game.h (original) +++ trunk/common/game.h Mon May 15 00:56:02 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: trunk/server/savegame3.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/server/savegame3.c (original) +++ trunk/server/savegame3.c Mon May 15 00:56:02 2017 @@ -1316,10 +1316,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: trunk/server/srv_main.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/srv_main.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/server/srv_main.c (original) +++ trunk/server/srv_main.c Mon May 15 00:56:02 2017 @@ -2746,7 +2746,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, @@ -3110,7 +3110,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; @@ -3121,7 +3121,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(); @@ -3232,7 +3232,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: trunk/server/srv_main.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/srv_main.h?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/server/srv_main.h (original) +++ trunk/server/srv_main.h Mon May 15 00:56:02 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: trunk/server/stdinhand.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/stdinhand.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/server/stdinhand.c (original) +++ trunk/server/stdinhand.c Mon May 15 00:56:02 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: trunk/tools/civmanual.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/civmanual.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/tools/civmanual.c (original) +++ trunk/tools/civmanual.c Mon May 15 00:56:02 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: trunk/tools/ruledit/ruledit.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruledit/ruledit.cpp?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/tools/ruledit/ruledit.cpp (original) +++ trunk/tools/ruledit/ruledit.cpp Mon May 15 00:56:02 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: trunk/tools/ruleup.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruleup.c?rev=35580&r1=35579&r2=35580&view=diff ============================================================================== --- trunk/tools/ruleup.c (original) +++ trunk/tools/ruleup.c Mon May 15 00:56:02 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