Author: cazfi Date: Thu Feb 5 03:16:13 2015 New Revision: 27995 URL: http://svn.gna.org/viewcvs/freeciv?rev=27995&view=rev Log: Track settings defaultness level (internal / ruleset / not-at-all) instead of just whether they are internal default.
See patch #5781 Modified: trunk/server/settings.c trunk/server/settings.h trunk/server/stdinhand.c trunk/tools/ruledit/rulesave.c Modified: trunk/server/settings.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/settings.c?rev=27995&r1=27994&r2=27995&view=diff ============================================================================== --- trunk/server/settings.c (original) +++ trunk/server/settings.c Thu Feb 5 03:16:13 2015 @@ -159,7 +159,7 @@ bool locked; /* It's not "default", even if value is the same as default */ - bool changed; + enum setting_default_level setdef; }; static struct { @@ -3526,7 +3526,7 @@ break; } - pset->changed = FALSE; + pset->setdef = SETDEF_INTERNAL; } /******************************************************************** @@ -3728,6 +3728,8 @@ break; } + pset->setdef = SETDEF_RULESET; + /* set lock */ lock = secfile_lookup_bool_default(file, FALSE, "%s.lock", path); @@ -3904,7 +3906,7 @@ if ( /* Normal save always has all settings saved */ !scenario /* It's explicitly set to some value to save */ - || setting_is_changed(pset) + || setting_get_setdef(pset) == SETDEF_CHANGED /* It must be same at loading time as it was saving time, even if * freeciv's default has changed. */ || !setting_is_changeable(pset, NULL, errbuf, sizeof(errbuf))) { @@ -4155,7 +4157,7 @@ break; } - pset->changed = TRUE; + pset->setdef = SETDEF_CHANGED; } } settings_iterate_end; } @@ -4562,15 +4564,15 @@ *****************************************************************************/ void setting_changed(struct setting *pset) { - pset->changed = TRUE; + pset->setdef = SETDEF_CHANGED; } /***************************************************************************** Is the setting in changed state, or the default *****************************************************************************/ -bool setting_is_changed(struct setting *pset) -{ - return pset->changed; +enum setting_default_level setting_get_setdef(struct setting *pset) +{ + return pset->setdef; } /***************************************************************************** @@ -4581,6 +4583,6 @@ void settings_consider_all_changed(void) { settings_iterate(SSET_ALL, pset) { - pset->changed = TRUE; + pset->setdef = SETDEF_CHANGED; } settings_iterate_end; } Modified: trunk/server/settings.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/settings.h?rev=27995&r1=27994&r2=27995&view=diff ============================================================================== --- trunk/server/settings.h (original) +++ trunk/server/settings.h Thu Feb 5 03:16:13 2015 @@ -86,6 +86,8 @@ #define SPECENUM_VALUE4 SSET_BITWISE #include "specenum_gen.h" +enum setting_default_level { SETDEF_INTERNAL, SETDEF_RULESET, SETDEF_CHANGED }; + /* forward declaration */ struct setting; @@ -219,7 +221,7 @@ void send_server_setting_control(struct connection *pconn); void setting_changed(struct setting *pset); -bool setting_is_changed(struct setting *pset); +enum setting_default_level setting_get_setdef(struct setting *pset); void settings_consider_all_changed(void); #ifdef __cplusplus Modified: trunk/server/stdinhand.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/stdinhand.c?rev=27995&r1=27994&r2=27995&view=diff ============================================================================== --- trunk/server/stdinhand.c (original) +++ trunk/server/stdinhand.c Thu Feb 5 03:16:13 2015 @@ -2244,7 +2244,7 @@ setting_int_min(pset), setting_int_max(pset)); } - if (!setting_is_changed(pset)) { + if (setting_get_setdef(pset) == SETDEF_INTERNAL) { defaultness = '~'; } else if (is_changed) { defaultness = ' '; Modified: trunk/tools/ruledit/rulesave.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/tools/ruledit/rulesave.c?rev=27995&r1=27994&r2=27995&view=diff ============================================================================== --- trunk/tools/ruledit/rulesave.c (original) +++ trunk/tools/ruledit/rulesave.c Thu Feb 5 03:16:13 2015 @@ -1003,9 +1003,7 @@ set_count = 0; settings_iterate(SSET_ALL, pset) { - /* TODO: Save also those that should get the same value at loading time - * even if it's current default, and default is different at loading time. */ - if (setting_non_default(pset) || setting_locked(pset)) { + if (setting_get_setdef(pset) == SETDEF_RULESET || setting_locked(pset)) { secfile_insert_str(sfile, setting_name(pset), "settings.name%d", set_count); switch (setting_type(pset)) { case SSET_BOOL: _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits