256 | | Engine.PostNetworkCommand({"type": "diplomacy", "to": data.to, "player": data.player}); |
| 256 | var we = Engine.GetPlayerID(); |
| 257 | |
| 258 | // If the diplomacy button was already clicked before, return |
| 259 | let setting = data.to.charAt(0).toUpperCase() + data.to.slice(1); |
| 260 | let button = Engine.GetGUIObjectByName("diplomacyPlayer"+setting+"["+(data.player-1)+"]"); |
| 261 | if (button.caption == "x") |
| 262 | return; |
| 263 | |
| 264 | // If the diplomacy button is clicked, update the buttons immediately to prevent |
| 265 | // sending duplicate messages ((see ticket #3198) |
| 266 | for each (let setting in ["Ally", "Neutral", "Enemy"]) |
| 267 | { |
| 268 | let button = Engine.GetGUIObjectByName("diplomacyPlayer"+setting+"["+(data.player-1)+"]"); |
| 269 | button.caption = (data.to == setting.toLowerCase()) ? "x" : ""; |
| 270 | } |
| 271 | |
| 272 | // Send update only if diplomacy actually changed |
| 273 | if ((data.to == "ally" && !g_Players[we].isAlly[data.player]) |
| 274 | || (data.to == "neutral" && !g_Players[we].isNeutral[data.player]) |
| 275 | || (data.to == "enemy" && !g_Players[we].isEnemy[data.player])) |
| 276 | Engine.PostNetworkCommand({"type": "diplomacy", "to": data.to, "player": data.player}); |