diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncConquestObjectivesLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncConquestObjectivesLogic.cs index 5cc61f5cc7..9e7e2df3e7 100644 --- a/OpenRA.Mods.Cnc/Widgets/Logic/CncConquestObjectivesLogic.cs +++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncConquestObjectivesLogic.cs @@ -46,7 +46,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic foreach (var p in world.Players.Where(a => !a.NonCombatant)) { - Player pp = p; + var pp = p; var item = itemTemplate.Clone(); var nameLabel = item.Get("NAME"); nameLabel.GetText = () => pp.WinState == WinState.Lost ? pp.PlayerName + " (Dead)" : pp.PlayerName; diff --git a/OpenRA.Mods.RA/Widgets/Logic/IngameChatLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/IngameChatLogic.cs index d61d5768ef..bab69261d4 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/IngameChatLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/IngameChatLogic.cs @@ -10,6 +10,7 @@ using System; using System.Drawing; +using System.Linq; using OpenRA.Network; using OpenRA.Widgets; @@ -30,7 +31,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic [ObjectCreator.UseCtor] public IngameChatLogic(Widget widget, OrderManager orderManager, World world) { - teamChat = world.LocalPlayer != null; + var players = world.Players.Where(p => p != world.LocalPlayer && !p.NonCombatant && !p.IsBot); + var disableTeamChat = world.LocalPlayer == null || world.LobbyInfo.IsSinglePlayer || !players.Any(p => p.IsAlliedWith(world.LocalPlayer)); + teamChat = !disableTeamChat; var chatPanel = (ContainerWidget)widget; chatOverlay = chatPanel.Get("CHAT_OVERLAY"); @@ -43,13 +46,18 @@ namespace OpenRA.Mods.RA.Widgets.Logic var chatMode = chatChrome.Get("CHAT_MODE"); chatMode.GetText = () => teamChat ? "Team" : "All"; chatMode.OnClick = () => teamChat ^= true; - chatMode.IsDisabled = () => world.LocalPlayer == null; + chatMode.IsDisabled = () => disableTeamChat; chatText = chatChrome.Get("CHAT_TEXTFIELD"); - chatText.OnTabKey = () => { teamChat ^= true; return true; }; + chatText.OnTabKey = () => + { + if (!disableTeamChat) + teamChat ^= true; + return true; + }; chatText.OnEnterKey = () => { - var team = teamChat && world.LocalPlayer != null; + var team = teamChat && !disableTeamChat; if (chatText.Text != "") orderManager.IssueOrder(Order.Chat(team, chatText.Text.Trim()));