Author: sveinung
Date: Tue Jan 13 12:50:32 2015
New Revision: 27658

URL: http://svn.gna.org/viewcvs/freeciv?rev=27658&view=rev
Log:
Move the cancel all illegal activities at a tile code to a shared function.

See patch #5705

Modified:
    trunk/server/unittools.c
    trunk/server/unittools.h

Modified: trunk/server/unittools.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/unittools.c?rev=27658&r1=27657&r2=27658&view=diff
==============================================================================
--- trunk/server/unittools.c    (original)
+++ trunk/server/unittools.c    Tue Jan 13 12:50:32 2015
@@ -734,6 +734,28 @@
                   _("%s cannot be converted."),
                   utype_name_translation(from_type));
   }
+}
+
+/**************************************************************************
+  Cancel all illegal activities done by units at the specified tile.
+**************************************************************************/
+void unit_activities_cancel_all_illegal(const struct tile *ptile)
+{
+  unit_list_iterate(ptile->units, punit2) {
+    if (!can_unit_continue_current_activity(punit2)) {
+      if (unit_has_orders(punit2)) {
+        notify_player(unit_owner(punit2), unit_tile(punit2),
+                      E_UNIT_ORDERS, ftc_server,
+                      _("Orders for %s aborted because activity "
+                        "is no longer available."),
+                      unit_link(punit2));
+        free_unit_orders(punit2);
+      }
+
+      set_unit_activity(punit2, ACTIVITY_IDLE);
+      send_unit_info(NULL, punit2);
+    }
+  } unit_list_iterate_end;
 }
 
 /**************************************************************************
@@ -934,20 +956,7 @@
          * such as building irrigation if we removed the only source
          * of water from them. */
         adjc_iterate(ptile, ptile2) {
-          unit_list_iterate(ptile2->units, punit2) {
-            if (!can_unit_continue_current_activity(punit2)) {
-              if (unit_has_orders(punit2)) {
-                notify_player(unit_owner(punit2), unit_tile(punit2),
-                              E_UNIT_ORDERS, ftc_server,
-                              _("Orders for %s aborted because activity "
-                                "is no longer available."),
-                              unit_link(punit2));
-                free_unit_orders(punit2);
-              }
-              set_unit_activity(punit2, ACTIVITY_IDLE);
-              send_unit_info(NULL, punit2);
-            }
-          } unit_list_iterate_end;
+          unit_activities_cancel_all_illegal(ptile2);
         } adjc_iterate_end;
         break;
       }

Modified: trunk/server/unittools.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/unittools.h?rev=27658&r1=27657&r2=27658&view=diff
==============================================================================
--- trunk/server/unittools.h    (original)
+++ trunk/server/unittools.h    Tue Jan 13 12:50:32 2015
@@ -156,4 +156,6 @@
 
 bool unit_can_be_retired(struct unit *punit);
 
+void unit_activities_cancel_all_illegal(const struct tile *ptile);
+
 #endif  /* FC__UNITTOOLS_H */


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

Reply via email to