Author: sveinung Date: Wed Jan 20 19:35:54 2016 New Revision: 31517 URL: http://svn.gna.org/viewcvs/freeciv?rev=31517&view=rev Log: act sel dlg: "Home City" button.
A button in the action selection dialog communicates the uncertainty if a rule depends on information the player doesn't have. See patch #6824 Modified: trunk/client/gui-gtk-2.0/action_dialog.c trunk/client/gui-gtk-3.0/action_dialog.c trunk/client/gui-gtk-3.x/action_dialog.c trunk/client/gui-qt/dialogs.cpp trunk/client/gui-sdl2/action_dialog.c Modified: trunk/client/gui-gtk-2.0/action_dialog.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-2.0/action_dialog.c?rev=31517&r1=31516&r2=31517&view=diff ============================================================================== --- trunk/client/gui-gtk-2.0/action_dialog.c (original) +++ trunk/client/gui-gtk-2.0/action_dialog.c Wed Jan 20 19:35:54 2016 @@ -230,6 +230,23 @@ request_do_action(ACTION_RECYCLE_UNIT, args->actor_unit_id, args->target_city_id, 0, ""); + + gtk_widget_destroy(act_sel_dialog); + free(args); +} + +/**************************************************************** + User selected set home city from choice dialog. +*****************************************************************/ +static void home_city_callback(GtkWidget *w, gpointer data) +{ + struct action_data *args = (struct action_data *)data; + + if (NULL != game_unit_by_number(args->actor_unit_id) + && NULL != game_city_by_number(args->target_city_id)) { + request_do_action(ACTION_HOME_CITY, args->actor_unit_id, + args->target_city_id, 0, ""); + } gtk_widget_destroy(act_sel_dialog); free(args); @@ -1137,6 +1154,7 @@ [ACTION_SPY_NUKE] = (GCallback)spy_nuke_city_callback, [ACTION_DESTROY_CITY] = (GCallback)destroy_city_callback, [ACTION_RECYCLE_UNIT] = (GCallback)recycle_unit_callback, + [ACTION_HOME_CITY] = (GCallback)home_city_callback, /* Unit acting against a unit target. */ [ACTION_SPY_BRIBE_UNIT] = (GCallback)diplomat_bribe_callback, Modified: trunk/client/gui-gtk-3.0/action_dialog.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.0/action_dialog.c?rev=31517&r1=31516&r2=31517&view=diff ============================================================================== --- trunk/client/gui-gtk-3.0/action_dialog.c (original) +++ trunk/client/gui-gtk-3.0/action_dialog.c Wed Jan 20 19:35:54 2016 @@ -230,6 +230,23 @@ request_do_action(ACTION_RECYCLE_UNIT, args->actor_unit_id, args->target_city_id, 0, ""); + + gtk_widget_destroy(act_sel_dialog); + free(args); +} + +/**************************************************************** + User selected set home city from choice dialog. +*****************************************************************/ +static void home_city_callback(GtkWidget *w, gpointer data) +{ + struct action_data *args = (struct action_data *)data; + + if (NULL != game_unit_by_number(args->actor_unit_id) + && NULL != game_city_by_number(args->target_city_id)) { + request_do_action(ACTION_HOME_CITY, args->actor_unit_id, + args->target_city_id, 0, ""); + } gtk_widget_destroy(act_sel_dialog); free(args); @@ -1147,6 +1164,7 @@ [ACTION_SPY_NUKE] = (GCallback)spy_nuke_city_callback, [ACTION_DESTROY_CITY] = (GCallback)destroy_city_callback, [ACTION_RECYCLE_UNIT] = (GCallback)recycle_unit_callback, + [ACTION_HOME_CITY] = (GCallback)home_city_callback, /* Unit acting against a unit target. */ [ACTION_SPY_BRIBE_UNIT] = (GCallback)diplomat_bribe_callback, Modified: trunk/client/gui-gtk-3.x/action_dialog.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-gtk-3.x/action_dialog.c?rev=31517&r1=31516&r2=31517&view=diff ============================================================================== --- trunk/client/gui-gtk-3.x/action_dialog.c (original) +++ trunk/client/gui-gtk-3.x/action_dialog.c Wed Jan 20 19:35:54 2016 @@ -230,6 +230,23 @@ request_do_action(ACTION_RECYCLE_UNIT, args->actor_unit_id, args->target_city_id, 0, ""); + + gtk_widget_destroy(act_sel_dialog); + free(args); +} + +/**************************************************************** + User selected set home city from choice dialog. +*****************************************************************/ +static void home_city_callback(GtkWidget *w, gpointer data) +{ + struct action_data *args = (struct action_data *)data; + + if (NULL != game_unit_by_number(args->actor_unit_id) + && NULL != game_city_by_number(args->target_city_id)) { + request_do_action(ACTION_HOME_CITY, args->actor_unit_id, + args->target_city_id, 0, ""); + } gtk_widget_destroy(act_sel_dialog); free(args); @@ -1141,6 +1158,7 @@ [ACTION_SPY_NUKE] = (GCallback)spy_nuke_city_callback, [ACTION_DESTROY_CITY] = (GCallback)destroy_city_callback, [ACTION_RECYCLE_UNIT] = (GCallback)recycle_unit_callback, + [ACTION_HOME_CITY] = (GCallback)home_city_callback, /* Unit acting against a unit target. */ [ACTION_SPY_BRIBE_UNIT] = (GCallback)diplomat_bribe_callback, Modified: trunk/client/gui-qt/dialogs.cpp URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-qt/dialogs.cpp?rev=31517&r1=31516&r2=31517&view=diff ============================================================================== --- trunk/client/gui-qt/dialogs.cpp (original) +++ trunk/client/gui-qt/dialogs.cpp Wed Jan 20 19:35:54 2016 @@ -90,6 +90,7 @@ static void nuke(QVariant data1, QVariant data2); static void disband_unit(QVariant data1, QVariant data2); static void join_city(QVariant data1, QVariant data2); +static void unit_home_city(QVariant data1, QVariant data2); static void keep_moving(QVariant data1, QVariant data2); static void pillage_something(QVariant data1, QVariant data2); static void action_entry(choice_dialog *cd, @@ -136,6 +137,7 @@ action_function[ACTION_SPY_NUKE] = spy_nuke_city; action_function[ACTION_DESTROY_CITY] = destroy_city; action_function[ACTION_RECYCLE_UNIT] = unit_recycle; + action_function[ACTION_HOME_CITY] = unit_home_city; /* Unit acting against a unit target. */ action_function[ACTION_SPY_BRIBE_UNIT] = diplomat_bribe; @@ -1230,11 +1232,27 @@ } /*************************************************************************** + Action Home City for choice dialog +***************************************************************************/ +static void unit_home_city(QVariant data1, QVariant data2) +{ + int actor_id = data1.toInt(); + int tgt_city_id = data2.toInt(); + + if (NULL != game_unit_by_number(actor_id) + && NULL != game_city_by_number(tgt_city_id)) { + request_do_action(ACTION_HOME_CITY, + actor_id, tgt_city_id, 0, ""); + } +} + +/*************************************************************************** Empty action for choice dialog (just do nothing) ***************************************************************************/ static void keep_moving(QVariant data1, QVariant data2) { } + /*************************************************************************** Starts revolution with targeted government as target or anarchy otherwise ***************************************************************************/ Modified: trunk/client/gui-sdl2/action_dialog.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/gui-sdl2/action_dialog.c?rev=31517&r1=31516&r2=31517&view=diff ============================================================================== --- trunk/client/gui-sdl2/action_dialog.c (original) +++ trunk/client/gui-sdl2/action_dialog.c Wed Jan 20 19:35:54 2016 @@ -906,6 +906,28 @@ actor_id, target_id, 0, ""); action_decision_taken(actor_id); + } + + return -1; +} + +/**************************************************************** + User clicked "Set Home City" +*****************************************************************/ +static int home_city_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_HOME_CITY, + pDiplomat_Dlg->actor_unit_id, + pDiplomat_Dlg->target_ids[ATK_CITY], + 0, ""); + } + + action_decision_taken(pDiplomat_Dlg->actor_unit_id); + popdown_diplomat_dialog(); } return -1; @@ -962,6 +984,7 @@ [ACTION_SPY_NUKE] = spy_nuke_city_callback, [ACTION_DESTROY_CITY] = destroy_city_callback, [ACTION_RECYCLE_UNIT] = unit_recycle_callback, + [ACTION_HOME_CITY] = home_city_callback, /* Unit acting against a unit target. */ [ACTION_SPY_BRIBE_UNIT] = diplomat_bribe_callback, _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits