Author: cazfi Date: Thu May 22 00:29:49 2014 New Revision: 24920 URL: http://svn.gna.org/viewcvs/freeciv?rev=24920&view=rev Log: Added server setting 'revolentype' to control the way revolution length is determined.
See patch #4700 Modified: trunk/common/game.c trunk/common/game.h trunk/fc_version trunk/server/plrhand.c trunk/server/savecompat.c trunk/server/savegame.c trunk/server/settings.c Modified: trunk/common/game.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.c?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/common/game.c (original) +++ trunk/common/game.c Thu May 22 00:29:49 2014 @@ -393,6 +393,7 @@ game.server.pingtimeout = GAME_DEFAULT_PINGTIMEOUT; game.server.razechance = GAME_DEFAULT_RAZECHANCE; game.server.revealmap = GAME_DEFAULT_REVEALMAP; + game.server.revolentype = GAME_DEFAULT_REVOLENTYPE; game.server.revolution_length = GAME_DEFAULT_REVOLUTION_LENGTH; sz_strlcpy(game.server.rulesetdir, GAME_DEFAULT_RULESETDIR); game.server.save_compress_level = GAME_DEFAULT_COMPRESS_LEVEL; Modified: trunk/common/game.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/common/game.h (original) +++ trunk/common/game.h Thu May 22 00:29:49 2014 @@ -52,6 +52,11 @@ BARBS_NORMAL, BARBS_FREQUENT, BARBS_HORDES +}; + +enum revolen_type { + REVOLEN_FIXED = 0, + REVOLEN_RANDOM }; enum autosave_type { @@ -152,6 +157,7 @@ int ransom_gold; int razechance; unsigned revealmap; + enum revolen_type revolentype; int revolution_length; int save_compress_level; enum fz_method save_compress_type; @@ -593,9 +599,10 @@ #define GAME_DEFAULT_PLRCOLORMODE PLRCOL_PLR_ORDER -#define GAME_DEFAULT_REVOLUTION_LENGTH 0 -#define GAME_MIN_REVOLUTION_LENGTH 0 -#define GAME_MAX_REVOLUTION_LENGTH 10 +#define GAME_DEFAULT_REVOLENTYPE REVOLEN_RANDOM +#define GAME_DEFAULT_REVOLUTION_LENGTH 5 +#define GAME_MIN_REVOLUTION_LENGTH 1 +#define GAME_MAX_REVOLUTION_LENGTH 20 #define GAME_START_YEAR -4000 Modified: trunk/fc_version URL: http://svn.gna.org/viewcvs/freeciv/trunk/fc_version?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/fc_version (original) +++ trunk/fc_version Thu May 22 00:29:49 2014 @@ -52,7 +52,7 @@ # - Avoid adding a new mandatory capability to the development branch for # as long as possible. We want to maintain network compatibility with # the stable branch for as long as possible. -NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-2.6-2014.May.21" +NETWORK_CAPSTRING_MANDATORY="+Freeciv.Devel-2.6-2014.May.22" NETWORK_CAPSTRING_OPTIONAL="" FREECIV_DISTRIBUTOR="" Modified: trunk/server/plrhand.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/plrhand.c?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/server/plrhand.c (original) +++ trunk/server/plrhand.c Thu May 22 00:29:49 2014 @@ -392,10 +392,16 @@ || get_player_bonus(pplayer, EFT_NO_ANARCHY)) { /* AI players without the H_REVOLUTION handicap can skip anarchy */ turns = 0; - } else if (game.server.revolution_length == 0) { - turns = fc_rand(5) + 1; } else { - turns = game.server.revolution_length; + turns = GAME_DEFAULT_REVOLUTION_LENGTH; /* To avoid compiler warning */ + switch (game.server.revolentype) { + case REVOLEN_FIXED: + turns = game.server.revolution_length; + break; + case REVOLEN_RANDOM: + turns = fc_rand(game.server.revolution_length) + 1; + break; + } } pplayer->government = game.government_during_revolution; Modified: trunk/server/savecompat.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/savecompat.c?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/server/savecompat.c (original) +++ trunk/server/savecompat.c Thu May 22 00:29:49 2014 @@ -483,6 +483,21 @@ } /**************************************************************************** + Return string representation of revolentype +****************************************************************************/ +static char *revolentype_str(enum revolen_type type) +{ + switch (type) { + case REVOLEN_FIXED: + return "FIXED"; + case REVOLEN_RANDOM: + return "RANDOM"; + } + + return ""; +} + +/**************************************************************************** Translate savegame secfile data from 2.5.x to 2.6.0 format. ****************************************************************************/ static void compat_load_020600(struct loaddata *loading) @@ -500,6 +515,8 @@ char value_buffer[1024] = ""; char gamestart_buffer[1024] = ""; int i; + enum revolen_type rlt = GAME_DEFAULT_REVOLENTYPE; + enum revolen_type gsrlt = GAME_DEFAULT_REVOLENTYPE; bool gamestart_valid = secfile_lookup_bool_default(loading->file, FALSE, "settings.gamestart_valid"); @@ -546,18 +563,45 @@ if (value_start) { sz_strlcat(gamestart_buffer, "|ALLIED"); } + } else if (!fc_strcasecmp("revolen", name)) { + int value, value_start; + + (void) secfile_lookup_int(loading->file, &value, + "settings.set%d.value", i); + (void) secfile_lookup_int(loading->file, &value_start, + "settings.set%d.gamestart", i); + + /* 0 meant RANDOM 1-5 */ + if (value == 0) { + rlt = REVOLEN_RANDOM; + secfile_replace_int(loading->file, 5, "settings.set%d.value", i); + } else { + rlt = REVOLEN_FIXED; + } + if (value_start == 0) { + gsrlt = REVOLEN_RANDOM; + secfile_replace_int(loading->file, 5, "settings.set%d.gamestart", i); + } else { + gsrlt = REVOLEN_FIXED; + } } } - secfile_replace_int(loading->file, set_count + 1, "settings.set_count"); + secfile_replace_int(loading->file, set_count + 2, "settings.set_count"); secfile_insert_str(loading->file, "victories", "settings.set%d.name", set_count); secfile_insert_str(loading->file, value_buffer, "settings.set%d.value", set_count); + secfile_insert_str(loading->file, "revolentype", "settings.set%d.name", + set_count + 1); + secfile_insert_str(loading->file, revolentype_str(rlt), "settings.set%d.value", + set_count + 1); if (gamestart_valid) { secfile_insert_str(loading->file, gamestart_buffer, "settings.set%d.gamestart", set_count); + secfile_insert_str(loading->file, revolentype_str(gsrlt), "settings.set%d.gamestart", + set_count + 1); } } } Modified: trunk/server/savegame.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame.c?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/server/savegame.c (original) +++ trunk/server/savegame.c Thu May 22 00:29:49 2014 @@ -3535,6 +3535,14 @@ game.server.revolution_length = secfile_lookup_int_default(file, game.server.revolution_length, "game.revolen"); + if (game.server.revolution_length == 0) { + /* Value 0 meant RANDOM 1-5 */ + game.server.revolution_length = 5; + game.server.revolentype = REVOLEN_RANDOM; + } else { + game.server.revolentype = REVOLEN_FIXED; + } + game.server.occupychance = secfile_lookup_int_default(file, game.server.occupychance, "game.occupychance"); Modified: trunk/server/settings.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/settings.c?rev=24920&r1=24919&r2=24920&view=diff ============================================================================== --- trunk/server/settings.c (original) +++ trunk/server/settings.c Thu May 22 00:29:49 2014 @@ -373,6 +373,18 @@ } /**************************************************************************** + Revolution length type setting names accessor. +****************************************************************************/ +static const struct sset_val_name *revolentype_name(int revolentype) +{ + switch (revolentype) { + NAME_CASE(REVOLEN_FIXED, "FIXED", N_("Fixed to 'revolen' turns")); + NAME_CASE(REVOLEN_RANDOM, "RANDOM", N_("Randomly 1-'revolen' turns")); + } + return NULL; +} + +/**************************************************************************** Revealmap setting names accessor. ****************************************************************************/ static const struct sset_val_name *revealmap_name(int bit) @@ -1848,13 +1860,21 @@ GAME_MIN_ONSETBARBARIAN, GAME_MAX_ONSETBARBARIAN, GAME_DEFAULT_ONSETBARBARIAN) + GEN_ENUM("revolentype", game.server.revolentype, + SSET_RULES, SSET_SOCIOLOGY, SSET_RARE, SSET_TO_CLIENT, + N_("Way to determine revolution length"), + N_("Which method is used in determining how long period of anarchy " + "lasts when changing government. The actual value is set with " + "'revolen' setting."), + NULL, NULL, revolentype_name, GAME_DEFAULT_REVOLENTYPE) + GEN_INT("revolen", game.server.revolution_length, SSET_RULES_FLEXIBLE, SSET_SOCIOLOGY, SSET_RARE, SSET_TO_CLIENT, N_("Length in turns of revolution"), - N_("When changing governments, a period of anarchy lasting this " - "many turns will occur. " - "Setting this value to 0 will give a random " - "length of 1-5 turns."), NULL, NULL, + N_("When changing governments, a period of anarchy will occur. " + "Value of this setting, used the way 'revolentype' setting " + "dictates, defines the length of the anarchy."), + NULL, NULL, GAME_MIN_REVOLUTION_LENGTH, GAME_MAX_REVOLUTION_LENGTH, GAME_DEFAULT_REVOLUTION_LENGTH) _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits