From 9930500661d3fe0c5b23d74fa6c923fb42e1b189 Mon Sep 17 00:00:00 2001 From: leper Date: Fri, 2 Nov 2012 13:44:35 +0000 Subject: [PATCH] Diplomacy is now mutual. Refs #7. This was SVN commit r12810. --- binaries/data/mods/public/gui/session/menu.js | 39 ++++++-- .../data/mods/public/gui/session/messages.js | 11 ++- .../data/mods/public/gui/session/session.xml | 8 +- .../public/gui/session/utility_functions.js | 2 + .../simulation/components/EndGameManager.js | 3 +- .../simulation/components/GuiInterface.js | 9 +- .../public/simulation/components/Player.js | 90 ++++++++++++++++--- 7 files changed, 131 insertions(+), 31 deletions(-) diff --git a/binaries/data/mods/public/gui/session/menu.js b/binaries/data/mods/public/gui/session/menu.js index a8ed683ac5..6e9889f51e 100644 --- a/binaries/data/mods/public/gui/session/menu.js +++ b/binaries/data/mods/public/gui/session/menu.js @@ -258,18 +258,41 @@ function openDiplomacy() // Don't display this for ourself and our locked team members if (i != we && !(players[we].teamsLocked && players[we].team != -1 && players[we].team == players[i].team)) { - getGUIObjectByName("diplomacyPlayerTheirs["+(i-1)+"]").caption = (players[i].isAlly[we] ? "Ally" : (players[i].isNeutral[we] ? "Neutral" : "Enemy") ); - // Set up the buttons for each (var setting in ["ally", "neutral", "enemy"]) { var button = getGUIObjectByName("diplomacyPlayer"+toTitleCase(setting)+"["+(i-1)+"]"); - // Disable the button with the current setting - // TODO: Needs new graphics for the button (enabled/disabled) to make it - // look more like a checkbox - button.enabled = !((setting=="ally" && players[we].isAlly[i]) - || (setting=="neutral" && players[we].isNeutral[i]) - || (setting=="enemy" && players[we].isEnemy[i])); + + if (setting == "ally") + { + if (players[we].isAlly[i]) + button.caption = "o"; + else if (players[we].wantAlly[i]) + button.caption = "x"; + else if (players[i].wantAlly[we]) + button.caption = "+"; + else + button.caption = ""; + } + else if (setting == "neutral") + { + if (players[we].isNeutral[i]) + button.caption = "o"; + else if (players[we].wantNeutral[i]) + button.caption = "x"; + else if (players[i].wantNeutral[we]) + button.caption = "+"; + else + button.caption = ""; + } + else // "enemy" + { + if (players[we].isEnemy[i]) + button.caption = "o"; + else + button.caption = ""; + } + button.onpress = (function(e){ return function() { setDiplomacy(e) } })({"player": i, "to": setting}); button.hidden = false; } diff --git a/binaries/data/mods/public/gui/session/messages.js b/binaries/data/mods/public/gui/session/messages.js index 3893e84132..8b5dfc0893 100644 --- a/binaries/data/mods/public/gui/session/messages.js +++ b/binaries/data/mods/public/gui/session/messages.js @@ -287,17 +287,24 @@ function addChatMessage(msg, playerAssignments) break; case "diplomacy": // TODO: Proper wording for all cases + // TODO: If the second player sets the diplomacy to the same as you + // have already set, display something like "You and username are + // now msg.status" and if the other players setting is more (eg you + // set it to neutral he to ally) than your setting display something + // like "Player wants to be msg.status with you" in addition. Breaking + // alliances/declaring war should be done with only one message (maybe + // change the message generation in Commands.js) if (msg.player == Engine.GetPlayerID()) { username= escapeText(g_Players[msg.player1].name); playerColor = g_Players[msg.player1].color.r + " " + g_Players[msg.player1].color.g + " " + g_Players[msg.player1].color.b; - formatted = "You are now "+msg.status+" with [color=\"" + playerColor + "\"]"+username + "[/color]."; + formatted = "You want to be "+msg.status+" with [color=\"" + playerColor + "\"]"+username + "[/color]."; } else if (msg.player1 == Engine.GetPlayerID()) { username= escapeText(g_Players[msg.player].name); playerColor = g_Players[msg.player].color.r + " " + g_Players[msg.player].color.g + " " + g_Players[msg.player].color.b; - formatted = "[color=\"" + playerColor + "\"]" + username + "[/color] is now " + msg.status + " with you." + formatted = "[color=\"" + playerColor + "\"]" + username + "[/color] wants to be " + msg.status + " with you." } else // No need for other players to know of this. return; diff --git a/binaries/data/mods/public/gui/session/session.xml b/binaries/data/mods/public/gui/session/session.xml index 26ea3d09f4..3e0afb0c0b 100644 --- a/binaries/data/mods/public/gui/session/session.xml +++ b/binaries/data/mods/public/gui/session/session.xml @@ -266,13 +266,13 @@