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

Reply via email to