diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/AddFactionSuffixLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/AddFactionSuffixLogic.cs index b2531490fd..1d1e5091cf 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/AddFactionSuffixLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/AddFactionSuffixLogic.cs @@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic [ObjectCreator.UseCtor] public AddFactionSuffixLogic(Widget widget, World world) { - if (world.LocalPlayer == null) + if (world.LocalPlayer == null || world.LocalPlayer.Spectating) return; if (!ChromeMetrics.TryGet("FactionSuffix-" + world.LocalPlayer.Faction.InternalName, out string faction)) diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngameChatLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngameChatLogic.cs new file mode 100644 index 0000000000..da1a4da1cd --- /dev/null +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngameChatLogic.cs @@ -0,0 +1,25 @@ +#region Copyright & License Information +/* + * Copyright 2007-2021 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. For more + * information, see COPYING. + */ +#endregion + +using OpenRA.Widgets; + +namespace OpenRA.Mods.Common.Widgets.Logic +{ + public class LoadIngameChatLogic : ChromeLogic + { + [ObjectCreator.UseCtor] + public LoadIngameChatLogic(Widget widget, World world) + { + var root = widget.Get("CHAT_ROOT"); + Game.LoadWidget(world, "CHAT_PANEL", root, new WidgetArgs() { { "isMenuChat", false } }); + } + } +} diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs index 5410c150bb..3c2e50b630 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs @@ -54,7 +54,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic } Game.LoadWidget(world, "DEBUG_WIDGETS", worldRoot, new WidgetArgs()); - Game.LoadWidget(world, "CHAT_PANEL", worldRoot, new WidgetArgs() { { "isMenuChat", false } }); world.GameOver += () => { diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml index 03a9fd59c6..6c5e95276b 100644 --- a/mods/cnc/chrome/ingame.yaml +++ b/mods/cnc/chrome/ingame.yaml @@ -22,7 +22,6 @@ Container@INGAME_ROOT: CycleStatusBarsKey: CycleStatusBars PauseKey: Pause Container@WORLD_ROOT: - Logic: LoadIngamePerfLogic Children: LogicTicker@DISCONNECT_WATCHER: Logic: DisconnectWatcherLogic @@ -37,7 +36,6 @@ Container@INGAME_ROOT: StrategicProgress@STRATEGIC_PROGRESS: X: WINDOW_RIGHT / 2 Y: 40 - Container@PERF_ROOT: WorldInteractionController@INTERACTION_CONTROLLER: Width: WINDOW_RIGHT Height: WINDOW_BOTTOM @@ -73,8 +71,10 @@ Container@PERF_WIDGETS: Height: 200 Container@OBSERVER_WIDGETS: - Logic: MenuButtonsChromeLogic + Logic: MenuButtonsChromeLogic, LoadIngamePerfLogic, LoadIngameChatLogic Children: + Container@CHAT_ROOT: + Container@PERF_ROOT: ViewportController: Width: WINDOW_RIGHT Height: WINDOW_BOTTOM @@ -1140,7 +1140,10 @@ Container@OBSERVER_WIDGETS: AxisFont: TinyBold Container@PLAYER_WIDGETS: + Logic: LoadIngamePerfLogic, LoadIngameChatLogic Children: + Container@CHAT_ROOT: + Container@PERF_ROOT: ViewportController: Width: WINDOW_RIGHT Height: WINDOW_BOTTOM diff --git a/mods/common/chrome/ingame-observer.yaml b/mods/common/chrome/ingame-observer.yaml index 60df813e6a..d9fd3bbe1f 100644 --- a/mods/common/chrome/ingame-observer.yaml +++ b/mods/common/chrome/ingame-observer.yaml @@ -1,6 +1,7 @@ Container@OBSERVER_WIDGETS: - Logic: MenuButtonsChromeLogic + Logic: MenuButtonsChromeLogic, LoadIngameChatLogic Children: + Container@CHAT_ROOT: LogicKeyListener@OBSERVER_KEY_LISTENER: MenuButton@OPTIONS_BUTTON: X: 5 diff --git a/mods/d2k/chrome/ingame-observer.yaml b/mods/d2k/chrome/ingame-observer.yaml index 564659077c..ab78993e49 100644 --- a/mods/d2k/chrome/ingame-observer.yaml +++ b/mods/d2k/chrome/ingame-observer.yaml @@ -1,6 +1,7 @@ Container@OBSERVER_WIDGETS: - Logic: MenuButtonsChromeLogic + Logic: MenuButtonsChromeLogic, LoadIngameChatLogic Children: + Container@CHAT_ROOT: LogicKeyListener@OBSERVER_KEY_LISTENER: Container@MUTE_INDICATOR: Logic: MuteIndicatorLogic diff --git a/mods/d2k/chrome/ingame-player.yaml b/mods/d2k/chrome/ingame-player.yaml index b9d93ab0a2..f28cf7383e 100644 --- a/mods/d2k/chrome/ingame-player.yaml +++ b/mods/d2k/chrome/ingame-player.yaml @@ -1,5 +1,7 @@ Container@PLAYER_WIDGETS: + Logic: LoadIngameChatLogic Children: + Container@CHAT_ROOT: LogicKeyListener@CONTROLGROUP_KEYHANDLER: Logic: ControlGroupLogic LogicTicker@SIDEBAR_TICKER: diff --git a/mods/ra/chrome/ingame-observer.yaml b/mods/ra/chrome/ingame-observer.yaml index 3d2f3e7cf8..962fcc5c4e 100644 --- a/mods/ra/chrome/ingame-observer.yaml +++ b/mods/ra/chrome/ingame-observer.yaml @@ -1,5 +1,7 @@ Container@OBSERVER_WIDGETS: + Logic: LoadIngameChatLogic Children: + Container@CHAT_ROOT: Container@MUTE_INDICATOR: Logic: MuteIndicatorLogic X: WINDOW_RIGHT - WIDTH - 260 diff --git a/mods/ra/chrome/ingame-player.yaml b/mods/ra/chrome/ingame-player.yaml index 52934bb589..d6eb485c04 100644 --- a/mods/ra/chrome/ingame-player.yaml +++ b/mods/ra/chrome/ingame-player.yaml @@ -1,5 +1,7 @@ Container@PLAYER_WIDGETS: + Logic: LoadIngameChatLogic Children: + Container@CHAT_ROOT: LogicKeyListener@CONTROLGROUP_KEYHANDLER: Logic: ControlGroupLogic LogicTicker@SIDEBAR_TICKER: diff --git a/mods/ts/chrome/ingame-observer.yaml b/mods/ts/chrome/ingame-observer.yaml index 2cac1b5718..8e4c866cf1 100644 --- a/mods/ts/chrome/ingame-observer.yaml +++ b/mods/ts/chrome/ingame-observer.yaml @@ -1,6 +1,7 @@ Container@OBSERVER_WIDGETS: - Logic: MenuButtonsChromeLogic + Logic: MenuButtonsChromeLogic, LoadIngameChatLogic Children: + Container@CHAT_ROOT: LogicKeyListener@OBSERVER_KEY_LISTENER: Container@MUTE_INDICATOR: Logic: MuteIndicatorLogic diff --git a/mods/ts/chrome/ingame-player.yaml b/mods/ts/chrome/ingame-player.yaml index 4e27e088c1..6fa25c2264 100644 --- a/mods/ts/chrome/ingame-player.yaml +++ b/mods/ts/chrome/ingame-player.yaml @@ -1,5 +1,7 @@ Container@PLAYER_WIDGETS: + Logic: LoadIngameChatLogic Children: + Container@CHAT_ROOT: LogicKeyListener@CONTROLGROUP_KEYHANDLER: Logic: ControlGroupLogic LogicTicker@SIDEBAR_TICKER: