Merge pull request #6182 from obrakmann/fix6172

Fix observer widgets not showing up when a player loses
This commit is contained in:
Paul Chote
2014-08-09 12:45:54 +12:00
2 changed files with 17 additions and 2 deletions

View File

@@ -105,7 +105,7 @@ namespace OpenRA.Mods.D2k.Widgets.Logic
cachedRadarActive = radarActive; cachedRadarActive = radarActive;
// Switch to observer mode after win/loss // Switch to observer mode after win/loss
if (world.LocalPlayer.WinState != WinState.Undefined) if (world.ObserveAfterWinOrLose && world.LocalPlayer.WinState != WinState.Undefined)
Game.RunAfterTick(() => Game.RunAfterTick(() =>
{ {
playerRoot.RemoveChildren(); playerRoot.RemoveChildren();

View File

@@ -24,7 +24,22 @@ namespace OpenRA.Mods.RA.Widgets.Logic
if (world.LocalPlayer == null) if (world.LocalPlayer == null)
Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs()); Game.LoadWidget(world, "OBSERVER_WIDGETS", playerRoot, new WidgetArgs());
else else
Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs()); {
var playerWidgets = Game.LoadWidget(world, "PLAYER_WIDGETS", playerRoot, new WidgetArgs());
var sidebarTicker = playerWidgets.Get<LogicTickerWidget>("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()); Game.LoadWidget(world, "CHAT_PANEL", ingameRoot, new WidgetArgs());