Author: sveinung Date: Sun Mar 13 14:08:30 2016 New Revision: 32239 URL: http://svn.gna.org/viewcvs/freeciv?rev=32239&view=rev Log: rscompat: support partial req type changes.
Make it possible for rscompat_req_type_name_3_0() to handle situations where some, but not all, instances of a requirement type has changed type. This is useful in cases like when a base flag becomes an extra flag and if diplomatic treaties becomes ruleset defined and moves out of DiplRel. See patch #7056 Modified: trunk/server/rscompat.c trunk/server/rscompat.h trunk/server/ruleset.c Modified: trunk/server/rscompat.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/rscompat.c?rev=32239&r1=32238&r2=32239&view=diff ============================================================================== --- trunk/server/rscompat.c (original) +++ trunk/server/rscompat.c Sun Mar 13 14:08:30 2016 @@ -762,12 +762,19 @@ /************************************************************************** Replace deprecated resource names with currently valid ones. -**************************************************************************/ -const char *rscompat_req_type_name_3_0(const char *old_name) -{ - if (!fc_strcasecmp("Resource", old_name)) { + + The extra arguments are for situation where some, but not all, instances + of a requirement type should become something else. +**************************************************************************/ +const char *rscompat_req_type_name_3_0(const char *old_type, + const char *old_range, + bool old_survives, bool old_present, + bool old_quiet, + const char *old_value) +{ + if (!fc_strcasecmp("Resource", old_type)) { return "Extra"; } - return old_name; -} + return old_type; +} Modified: trunk/server/rscompat.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/rscompat.h?rev=32239&r1=32238&r2=32239&view=diff ============================================================================== --- trunk/server/rscompat.h (original) +++ trunk/server/rscompat.h Sun Mar 13 14:08:30 2016 @@ -50,7 +50,9 @@ void rscompat_goods_3_0(void); struct extra_type *rscompat_extra_from_resource_3_0(struct section_file *sfile, const char *sec_name); -const char *rscompat_req_type_name_3_0(const char *old_name); +const char *rscompat_req_type_name_3_0(const char *type, const char *range, + bool survives, bool present, + bool quiet, const char *value); #ifdef __cplusplus } Modified: trunk/server/ruleset.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/ruleset.c?rev=32239&r1=32238&r2=32239&view=diff ============================================================================== --- trunk/server/ruleset.c (original) +++ trunk/server/ruleset.c Sun Mar 13 14:08:30 2016 @@ -347,10 +347,6 @@ struct entry *pentry; struct requirement req; - if (compat->compat_mode) { - type = rscompat_req_type_name_3_0(type); - } - if (!(pentry = secfile_entry_lookup(file, "%s.%s%d.name", sec, sub, j))) { ruleset_error(LOG_ERROR, "%s", secfile_error()); @@ -428,6 +424,12 @@ ruleset_error(LOG_ERROR, "\"%s\": invalid boolean value for quiet for " "'%s.%s%d'.", filename, sec, sub, j); + } + + if (compat->compat_mode) { + type = rscompat_req_type_name_3_0(type, range, + survives, present, quiet, + name); } req = req_from_str(type, range, survives, present, quiet, name); _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits