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