diff --git a/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs b/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs index 4c7ddeb0d2..a0fcd7f844 100644 --- a/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs +++ b/OpenRA.Mods.D2k/Widgets/Logic/IngameChromeLogic.cs @@ -105,7 +105,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 91e1f7c60a..ee3ded3342 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/Ingame/LoadIngamePlayerOrObserverUILogic.cs @@ -24,7 +24,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());