Author: cazfi
Date: Sun Mar 29 20:58:55 2015
New Revision: 28653

URL: http://svn.gna.org/viewcvs/freeciv?rev=28653&view=rev
Log:
Made it impossible to accept pacts (cease-fire, peace, alliance) between members
of the same team.

See bug #23421

Modified:
    branches/S2_4/client/gui-gtk-2.0/diplodlg.c
    branches/S2_4/client/gui-gtk-3.0/diplodlg.c
    branches/S2_4/client/gui-sdl/diplodlg.c
    branches/S2_4/common/player.c

Modified: branches/S2_4/client/gui-gtk-2.0/diplodlg.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/gui-gtk-2.0/diplodlg.c?rev=28653&r1=28652&r2=28653&view=diff
==============================================================================
--- branches/S2_4/client/gui-gtk-2.0/diplodlg.c (original)
+++ branches/S2_4/client/gui-gtk-2.0/diplodlg.c Sun Mar 29 20:58:55 2015
@@ -420,19 +420,19 @@
     gtk_menu_shell_append(GTK_MENU_SHELL(menu),item);
     g_signal_connect(item, "activate",
                     G_CALLBACK(diplomacy_dialog_ceasefire_callback), pdialog);
-    gtk_widget_set_sensitive(item, ds != DS_CEASEFIRE);
+    gtk_widget_set_sensitive(item, ds != DS_CEASEFIRE && ds != DS_TEAM);
 
     item = gtk_menu_item_new_with_mnemonic(Q_("?diplomatic_state:Peace"));
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
     g_signal_connect(item, "activate",
                     G_CALLBACK(diplomacy_dialog_peace_callback), pdialog);
-    gtk_widget_set_sensitive(item, ds != DS_PEACE);
+    gtk_widget_set_sensitive(item, ds != DS_PEACE && ds != DS_TEAM);
 
     item = gtk_menu_item_new_with_mnemonic(Q_("?diplomatic_state:Alliance"));
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
     g_signal_connect(item, "activate",
                     G_CALLBACK(diplomacy_dialog_alliance_callback), pdialog);
-    gtk_widget_set_sensitive(item, ds != DS_ALLIANCE);
+    gtk_widget_set_sensitive(item, ds != DS_ALLIANCE && ds != DS_TEAM);
 
     item = gtk_menu_item_new_with_mnemonic(_("_Pacts"));
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);

Modified: branches/S2_4/client/gui-gtk-3.0/diplodlg.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/gui-gtk-3.0/diplodlg.c?rev=28653&r1=28652&r2=28653&view=diff
==============================================================================
--- branches/S2_4/client/gui-gtk-3.0/diplodlg.c (original)
+++ branches/S2_4/client/gui-gtk-3.0/diplodlg.c Sun Mar 29 20:58:55 2015
@@ -420,19 +420,19 @@
     gtk_menu_shell_append(GTK_MENU_SHELL(menu),item);
     g_signal_connect(item, "activate",
                     G_CALLBACK(diplomacy_dialog_ceasefire_callback), pdialog);
-    gtk_widget_set_sensitive(item, ds != DS_CEASEFIRE);
+    gtk_widget_set_sensitive(item, ds != DS_CEASEFIRE && ds != DS_TEAM);
 
     item = gtk_menu_item_new_with_mnemonic(Q_("?diplomatic_state:Peace"));
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
     g_signal_connect(item, "activate",
                     G_CALLBACK(diplomacy_dialog_peace_callback), pdialog);
-    gtk_widget_set_sensitive(item, ds != DS_PEACE);
+    gtk_widget_set_sensitive(item, ds != DS_PEACE && ds != DS_TEAM);
 
     item = gtk_menu_item_new_with_mnemonic(Q_("?diplomatic_state:Alliance"));
     gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
     g_signal_connect(item, "activate",
                     G_CALLBACK(diplomacy_dialog_alliance_callback), pdialog);
-    gtk_widget_set_sensitive(item, ds != DS_ALLIANCE);
+    gtk_widget_set_sensitive(item, ds != DS_ALLIANCE && ds != DS_TEAM);
 
     item = gtk_menu_item_new_with_mnemonic(_("_Pacts"));
     gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), menu);

Modified: branches/S2_4/client/gui-sdl/diplodlg.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_4/client/gui-sdl/diplodlg.c?rev=28653&r1=28652&r2=28653&view=diff
==============================================================================
--- branches/S2_4/client/gui-sdl/diplodlg.c     (original)
+++ branches/S2_4/client/gui-sdl/diplodlg.c     Sun Mar 29 20:58:55 2015
@@ -492,9 +492,8 @@
     height = pBuf->size.h;
     add_to_gui_list(ID_LABEL, pBuf);
     count++;
-    
-    /*if(type == DS_WAR || type == DS_NEUTRAL) {*/
-    if(type != DS_CEASEFIRE) {
+
+    if (type != DS_CEASEFIRE && type != DS_TEAM) {
       fc_snprintf(cBuf, sizeof(cBuf), "  %s", 
Q_("?diplomatic_state:Cease-fire"));
       pBuf = create_iconlabel_from_chars(NULL, pWindow->dst,
        cBuf, adj_font(12), 
(WF_RESTORE_BACKGROUND|WF_DRAW_TEXT_LABEL_WITH_SPACE));
@@ -507,10 +506,10 @@
       add_to_gui_list(MAX_ID - 2, pBuf);
       count++;
     }
-    
-    if(type != DS_PEACE) {
+
+    if (type != DS_PEACE && type != DS_TEAM) {
       fc_snprintf(cBuf, sizeof(cBuf), "  %s", Q_("?diplomatic_state:Peace"));
-  
+
       pBuf = create_iconlabel_from_chars(NULL, pWindow->dst,
        cBuf, adj_font(12), 
(WF_RESTORE_BACKGROUND|WF_DRAW_TEXT_LABEL_WITH_SPACE));
       pBuf->string16->fgcol = 
*get_theme_color(COLOR_THEME_DIPLODLG_MEETING_TEXT);
@@ -522,8 +521,8 @@
       add_to_gui_list(MAX_ID - 1, pBuf);
       count++;
     }
-    
-    if(pplayer_can_make_treaty(pPlayer0, pPlayer1, DS_ALLIANCE)) {
+
+    if (pplayer_can_make_treaty(pPlayer0, pPlayer1, DS_ALLIANCE)) {
       fc_snprintf(cBuf, sizeof(cBuf), "  %s", 
Q_("?diplomatic_state:Alliance"));
       
       pBuf = create_iconlabel_from_chars(NULL, pWindow->dst,

Modified: branches/S2_4/common/player.c
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_4/common/player.c?rev=28653&r1=28652&r2=28653&view=diff
==============================================================================
--- branches/S2_4/common/player.c       (original)
+++ branches/S2_4/common/player.c       Sun Mar 29 20:58:55 2015
@@ -138,8 +138,9 @@
 {
   enum diplstate_type existing = player_diplstate_get(p1, p2)->type;
 
-  if (p1 == p2) {
-    return DIPL_ERROR; /* duh! */
+  if (players_on_same_team(p1, p2)) {
+    /* This includes the case p1 == p2 */
+    return DIPL_ERROR;
   }
   if (get_player_bonus(p1, EFT_NO_DIPLOMACY)
       || get_player_bonus(p2, EFT_NO_DIPLOMACY)) {


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

Reply via email to