diff --git a/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs b/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs index db55cffc9d..171e155376 100644 --- a/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs +++ b/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs @@ -172,7 +172,7 @@ namespace OpenRA.Mods.D2k.Widgets.Logic cachedRadarActive = radarActive; // Switch to observer mode after win/loss - if (world.LocalPlayer.WinState != WinState.Undefined) + if (world.ObserveAfterWinOrLose && world.LocalPlayer.WinState != WinState.Undefined) Game.RunAfterTick(() => { playerRoot.RemoveChildren(); diff --git a/OpenRA.Mods.RA/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs b/OpenRA.Mods.RA/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs index 201007bd86..0913002525 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs @@ -23,7 +23,22 @@ namespace OpenRA.Mods.RA.Widgets.Logic if (world.LocalPlayer == null) Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs()); else - Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs()); + { + var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs()); + var sidebarTicker = playerWidgets.Get("SIDEBAR_TICKER"); + + sidebarTicker.OnTick = () => + { + // Switch to observer mode after win/loss + if (world.ObserveAfterWinOrLose && world.LocalPlayer.WinState != WinState.Undefined) + Game.RunAfterTick(() => + { + playerRoot.RemoveChildren(); + Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs()); + }); + + }; + } Game.LoadWidget(world, "CHAT_PANEL", ingameRoot, new WidgetArgs()); }