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
[email protected]
https://mail.gna.org/listinfo/freeciv-commits