Author: sveinung
Date: Fri Oct 21 12:35:05 2016
New Revision: 34197

URL: http://svn.gna.org/viewcvs/freeciv?rev=34197&view=rev
Log:
requirements: x contradicts !x.

Exact opposite requirements will always contradict each other. Use this fact
to speed up are_requirements_contradictions().

See patch #7852

Modified:
    trunk/common/requirements.c

Modified: trunk/common/requirements.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/requirements.c?rev=34197&r1=34196&r2=34197&view=diff
==============================================================================
--- trunk/common/requirements.c (original)
+++ trunk/common/requirements.c Fri Oct 21 12:35:05 2016
@@ -1013,7 +1013,7 @@
   }
 
   /* No special knowledge. */
-  return are_requirements_opposites(impr_req, genus_req);
+  return FALSE;
 }
 
 /**************************************************************************
@@ -1026,6 +1026,11 @@
 bool are_requirements_contradictions(const struct requirement *req1,
                                      const struct requirement *req2)
 {
+  if (are_requirements_opposites(req1, req2)) {
+    /* The exact opposite. */
+    return TRUE;
+  }
+
   switch (req1->source.kind) {
   case VUT_IMPROVEMENT:
     if (req2->source.kind == VUT_IMPR_GENUS) {
@@ -1033,7 +1038,7 @@
     }
 
     /* No special knowledge. */
-    return are_requirements_opposites(req1, req2);
+    return FALSE;
     break;
   case VUT_IMPR_GENUS:
     if (req2->source.kind == VUT_IMPROVEMENT) {
@@ -1041,7 +1046,7 @@
     }
 
     /* No special knowledge. */
-    return are_requirements_opposites(req1, req2);
+    return FALSE;
     break;
   case VUT_DIPLREL:
     if (req2->source.kind != VUT_DIPLREL) {
@@ -1084,9 +1089,9 @@
     }
     break;
   default:
-    /* No special knowledge exists. All that can be done is to detect if
-     * the requirements are opposite to each other. */
-    return are_requirements_opposites(req1, req2);
+    /* No special knowledge exists. The requirements aren't the exact
+     * opposite of each other per the initial check. */
+    return FALSE;
     break;
   }
 }


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to