Author: sveinung
Date: Wed Aug 10 16:45:25 2016
New Revision: 33544

URL: http://svn.gna.org/viewcvs/freeciv?rev=33544&view=rev
Log:
SDL client: act sel dlg paradrop and airlift.

Support the actions "Paradrop Unit" and "Airlift Unit" in the action
selection dialog.

This makes the clients more friendly to rules like "airlifting becomes
impossible once any player discovers Air Solidifiers".

See patch #7576

Modified:
    trunk/client/gui-sdl2/action_dialog.c

Modified: trunk/client/gui-sdl2/action_dialog.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/action_dialog.c?rev=33544&r1=33543&r2=33544&view=diff
==============================================================================
--- trunk/client/gui-sdl2/action_dialog.c       (original)
+++ trunk/client/gui-sdl2/action_dialog.c       Wed Aug 10 16:45:25 2016
@@ -958,6 +958,23 @@
 }
 
 /****************************************************************
+  User clicked "Paradrop Unit"
+*****************************************************************/
+static int paradrop_callback(struct widget *pWidget)
+{
+  if (Main.event.button.button == SDL_BUTTON_LEFT) {
+    int actor_id = MAX_ID - pWidget->ID;
+    int target_id = pWidget->data.tile->index;
+
+    popdown_diplomat_dialog();
+    request_do_action(ACTION_PARADROP,
+                      actor_id, target_id, 0, "");
+  }
+
+  return -1;
+}
+
+/****************************************************************
   User clicked "Disband Unit"
 *****************************************************************/
 static int disband_unit_callback(struct widget *pWidget)
@@ -984,6 +1001,27 @@
           pDiplomat_Dlg->target_ids[ATK_CITY])
         && NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)) {
       request_do_action(ACTION_HOME_CITY,
+                        pDiplomat_Dlg->actor_unit_id,
+                        pDiplomat_Dlg->target_ids[ATK_CITY],
+                        0, "");
+    }
+
+    popdown_diplomat_dialog();
+  }
+
+  return -1;
+}
+
+/****************************************************************
+  User clicked "Airlift Unit"
+*****************************************************************/
+static int airlift_callback(struct widget *pWidget)
+{
+  if (Main.event.button.button == SDL_BUTTON_LEFT) {
+    if (NULL != game_city_by_number(
+          pDiplomat_Dlg->target_ids[ATK_CITY])
+        && NULL != game_unit_by_number(pDiplomat_Dlg->actor_unit_id)) {
+      request_do_action(ACTION_AIRLIFT,
                         pDiplomat_Dlg->actor_unit_id,
                         pDiplomat_Dlg->target_ids[ATK_CITY],
                         0, "");
@@ -1048,6 +1086,7 @@
   [ACTION_DESTROY_CITY] = destroy_city_callback,
   [ACTION_RECYCLE_UNIT] = unit_recycle_callback,
   [ACTION_HOME_CITY] = home_city_callback,
+  [ACTION_AIRLIFT] = airlift_callback,
 
   /* Unit acting against a unit target. */
   [ACTION_SPY_BRIBE_UNIT] = diplomat_bribe_callback,
@@ -1061,6 +1100,7 @@
   /* Unit acting against a tile. */
   [ACTION_FOUND_CITY] = found_city_callback,
   [ACTION_NUKE] = nuke_callback,
+  [ACTION_PARADROP] = paradrop_callback,
   [ACTION_ATTACK] = attack_callback,
 
   /* Unit acting with no target except itself. */


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

Reply via email to