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