Author: cazfi Date: Thu Apr 2 22:13:54 2015 New Revision: 28694 URL: http://svn.gna.org/viewcvs/freeciv?rev=28694&view=rev Log: Added server setting setscoreloglevel
Patch by Dumbo <dumbo> See patch #5727 Modified: trunk/common/game.c trunk/common/game.h trunk/server/report.c trunk/server/settings.c Modified: trunk/common/game.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.c?rev=28694&r1=28693&r2=28694&view=diff ============================================================================== --- trunk/common/game.c (original) +++ trunk/common/game.c Thu Apr 2 22:13:54 2015 @@ -412,6 +412,7 @@ game.server.save_options.save_starts = TRUE; game.server.savepalace = GAME_DEFAULT_SAVEPALACE; game.server.scorelog = GAME_DEFAULT_SCORELOG; + game.server.scoreloglevel = GAME_DEFAULT_SCORELOGLEVEL; game.server.scoreturn = GAME_DEFAULT_SCORETURN; game.server.seed = GAME_DEFAULT_SEED; sz_strlcpy(game.server.start_units, GAME_DEFAULT_START_UNITS); Modified: trunk/common/game.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=28694&r1=28693&r2=28694&view=diff ============================================================================== --- trunk/common/game.h (original) +++ trunk/common/game.h Thu Apr 2 22:13:54 2015 @@ -60,6 +60,11 @@ AS_QUITIDLE, AS_INTERRUPT, AS_TIMER +}; + +enum scorelog_level { + SL_ALL = 0, + SL_HUMANS }; struct user_flag @@ -196,6 +201,7 @@ char connectmsg[MAX_LEN_MSG]; char save_name[MAX_LEN_NAME]; bool scorelog; + enum scorelog_level scoreloglevel; char scorefile[MAX_LEN_NAME]; int scoreturn; /* next make_history_report() */ int seed; @@ -471,6 +477,7 @@ #define GAME_DEFAULT_REVEALMAP REVEAL_MAP_NONE #define GAME_DEFAULT_SCORELOG FALSE +#define GAME_DEFAULT_SCORELOGLEVEL SL_ALL #define GAME_DEFAULT_SCOREFILE "freeciv-score.log" #define GAME_DEFAULT_SCORETURN 20 Modified: trunk/server/report.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/report.c?rev=28694&r1=28693&r2=28694&view=diff ============================================================================== --- trunk/server/report.c (original) +++ trunk/server/report.c Thu Apr 2 22:13:54 2015 @@ -146,6 +146,7 @@ static const char *culture_to_text(int value); #define GOOD_PLAYER(p) ((p)->is_alive && !is_barbarian(p)) +#define AI_PLAYER(p) ((p)->ai_controlled) /* * Describes a row. @@ -1450,30 +1451,47 @@ players_iterate(pplayer) { struct plrdata_slot *plrdata = score_log->plrdata + player_index(pplayer); if (plrdata->name == NULL && GOOD_PLAYER(pplayer)) { - fprintf(score_log->fp, "addplayer %d %d %s\n", game.info.turn, + switch (game.server.scoreloglevel) { + case SL_HUMANS: + if (AI_PLAYER(pplayer)) { + break; + } + case SL_ALL: + fprintf(score_log->fp, "addplayer %d %d %s\n", game.info.turn, player_number(pplayer), player_name(pplayer)); - plrdata_slot_init(plrdata, player_name(pplayer)); + plrdata_slot_init(plrdata, player_name(pplayer)); + } } } players_iterate_end; players_iterate(pplayer) { struct plrdata_slot *plrdata = score_log->plrdata + player_index(pplayer); - if (GOOD_PLAYER(pplayer) - && strcmp(plrdata->name, player_name(pplayer)) != 0) { - log_debug("player names does not match '%s' != '%s'", plrdata->name, - player_name(pplayer)); - fprintf(score_log->fp, "delplayer %d %d\n", game.info.turn - 1, - player_number(pplayer)); - fprintf(score_log->fp, "addplayer %d %d %s\n", game.info.turn, - player_number(pplayer), player_name(pplayer)); - plrdata_slot_replace(plrdata, player_name(pplayer)); + if (GOOD_PLAYER(pplayer)) { + switch (game.server.scoreloglevel) { + case SL_HUMANS: + if (AI_PLAYER(pplayer) && plrdata->name == NULL) { + /* If a human player toggled into AI mode, don't break. */ + break; + } + case SL_ALL: + if (strcmp(plrdata->name, player_name(pplayer)) != 0) { + log_debug("player names does not match '%s' != '%s'", plrdata->name, + player_name(pplayer)); + fprintf(score_log->fp, "delplayer %d %d\n", game.info.turn - 1, + player_number(pplayer)); + fprintf(score_log->fp, "addplayer %d %d %s\n", game.info.turn, + player_number(pplayer), player_name(pplayer)); + plrdata_slot_replace(plrdata, player_name(pplayer)); + } + } } } players_iterate_end; for (i = 0; i < ARRAY_SIZE(score_tags); i++) { players_iterate(pplayer) { - if (!GOOD_PLAYER(pplayer)) { + if (!GOOD_PLAYER(pplayer) || + (game.server.scoreloglevel == SL_HUMANS && AI_PLAYER(pplayer))) { continue; } Modified: trunk/server/settings.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/settings.c?rev=28694&r1=28693&r2=28694&view=diff ============================================================================== --- trunk/server/settings.c (original) +++ trunk/server/settings.c Thu Apr 2 22:13:54 2015 @@ -466,6 +466,19 @@ } /**************************************************************************** + Scorelog level names accessor. +****************************************************************************/ +static const struct sset_val_name * +scoreloglevel_name(enum scorelog_level sl_level) +{ + switch (sl_level) { + NAME_CASE(SL_ALL, "ALL", N_("Scorelog all players, AI included")); + NAME_CASE(SL_HUMANS, "HUMANS", N_("Scorelog only human players")); + } + return NULL; +} + +/**************************************************************************** Savegame compress type names accessor. ****************************************************************************/ static const struct sset_val_name * @@ -2511,6 +2524,13 @@ "the file defined by the option 'scorefile' every turn. " "These statistics can be used to create power graphs after " "the game."), NULL, scorelog_action, GAME_DEFAULT_SCORELOG) + + GEN_ENUM("scoreloglevel", game.server.scoreloglevel, + SSET_META, SSET_INTERNAL, SSET_SITUATIONAL, SSET_SERVER_ONLY, + N_("Scorelog level"), + N_("Whether scores are logged from all players, AI included, " + "or only from human players."), NULL, NULL, + scoreloglevel_name, GAME_DEFAULT_SCORELOGLEVEL) GEN_STRING("scorefile", game.server.scorefile, SSET_META, SSET_INTERNAL, SSET_SITUATIONAL, SSET_SERVER_ONLY, _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits