Author: cazfi
Date: Fri Sep 16 18:33:05 2016
New Revision: 33823

URL: http://svn.gna.org/viewcvs/freeciv?rev=33823&view=rev
Log:
Fixed problems on setting worker task target extra in Qt client.

See bug #25061

Modified:
    branches/S2_6/client/gui-qt/citydlg.cpp

Modified: branches/S2_6/client/gui-qt/citydlg.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/citydlg.cpp?rev=33823&r1=33822&r2=33823&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/citydlg.cpp     (original)
+++ branches/S2_6/client/gui-qt/citydlg.cpp     Fri Sep 16 18:33:05 2016
@@ -650,7 +650,9 @@
   int canvas_x, canvas_y, city_x, city_y;
   QAction *act;
   QAction con_clear(_("Clear"), this);
+  QAction con_irrig_tf(_("Irrigate"), this);
   QAction con_irrig(_("Irrigate"), this);
+  QAction con_mine_tf(_("Plant"), this);
   QAction con_mine(_("Mine"), this);
   QAction con_road(_("Road"), this);
   QAction con_trfrm(_("Transform"), this);
@@ -672,6 +674,7 @@
                           canvas_x, canvas_y)) {
     return;
   }
+
   ptile = city_map_to_tile(mcity->tile, city_map_radius_sq_get(mcity),
                            city_x, city_y);
   task.city_id = mcity->id;
@@ -684,16 +687,18 @@
   wid_act->setDefaultWidget(new QLabel(_("Autosettler activity:")));
   con_menu.addAction(wid_act);
 
-  if ((pterr->mining_result == pterr
-       && effect_cumulative_max(EFT_MINING_POSSIBLE, &for_terr) > 0)
-      || (pterr->mining_result != pterr && pterr->mining_result != NULL
-          && effect_cumulative_max(EFT_MINING_TF_POSSIBLE, &for_terr) > 0)) {
+  if (pterr->mining_result != pterr && pterr->mining_result != NULL
+      && effect_cumulative_max(EFT_MINING_TF_POSSIBLE, &for_terr) > 0) {
+    con_menu.addAction(&con_mine_tf);
+  } else if (pterr->mining_result == pterr
+             && effect_cumulative_max(EFT_MINING_POSSIBLE, &for_terr) > 0) {
     con_menu.addAction(&con_mine);
   }
-  if ((pterr->irrigation_result == pterr
-       && effect_cumulative_max(EFT_IRRIG_POSSIBLE, &for_terr) > 0)
-      || (pterr->irrigation_result != pterr && pterr->irrigation_result != NULL
-          && effect_cumulative_max(EFT_IRRIG_TF_POSSIBLE, &for_terr) > 0)) {
+  if (pterr->irrigation_result != pterr && pterr->irrigation_result != NULL
+      && effect_cumulative_max(EFT_IRRIG_TF_POSSIBLE, &for_terr) > 0) {
+    con_menu.addAction(&con_irrig_tf);
+  } else if (pterr->irrigation_result == pterr
+             && effect_cumulative_max(EFT_IRRIG_POSSIBLE, &for_terr) > 0) {
     con_menu.addAction(&con_irrig);
   }
   if (pterr->transform_result != pterr && pterr->transform_result != NULL
@@ -709,23 +714,38 @@
 
   act = con_menu.exec(mapToGlobal(point));
   if (act) {
-    if (act == &con_mine) {
+    bool target = FALSE;
+
+    if (act == &con_road) {
+      task.activity = ACTIVITY_GEN_ROAD;
+      target = TRUE;
+    } else if (act == &con_mine) {
       task.activity = ACTIVITY_MINE;
-    }
-    if (act == &con_irrig) {
+      target = TRUE;
+    } else if (act == &con_mine_tf) {
+      task.activity = ACTIVITY_MINE;
+    } else if (act == &con_irrig) {
       task.activity = ACTIVITY_IRRIGATE;
-    }
-    if (act == &con_trfrm) {
+      target = TRUE;
+    } else if (act == &con_irrig_tf) {
+      task.activity = ACTIVITY_IRRIGATE;
+    } else if (act == &con_trfrm) {
       task.activity = ACTIVITY_TRANSFORM;
     }
-    task.tgt = -1;
     task.want = 100;
-    if (act == &con_road) {
-      enum extra_cause cause = activity_to_extra_cause(ACTIVITY_GEN_ROAD);
+    if (target) {
+      enum extra_cause cause = activity_to_extra_cause(task.activity);
       struct extra_type *tgt;
+
       tgt = next_extra_for_tile(ptile, cause, city_owner(mcity), NULL);
-      task.tgt = extra_index(tgt);
-      task.activity = ACTIVITY_GEN_ROAD;
+
+      if (tgt != NULL) {
+        task.tgt = extra_index(tgt);
+      } else {
+        task.tgt = -1;
+      }
+    } else {
+      task.tgt = -1;
     }
     task.tile_id = ptile->index;
     send_packet_worker_task(&client.conn, &task);


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

Reply via email to