From 4de03e991c983a869526a7616c482c458f922923 Mon Sep 17 00:00:00 2001 From: Oliver Brakmann Date: Sat, 25 Jul 2015 19:50:11 +0200 Subject: [PATCH] Remove revealing views from observer mode in missions --- OpenRA.Game/World.cs | 2 +- .../Logic/Ingame/MenuButtonsChromeLogic.cs | 2 +- .../Ingame/ObserverShroudSelectorLogic.cs | 20 ++++++++++++------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/OpenRA.Game/World.cs b/OpenRA.Game/World.cs index e1c9a925dc..35aa9974bf 100644 --- a/OpenRA.Game/World.cs +++ b/OpenRA.Game/World.cs @@ -69,7 +69,7 @@ namespace OpenRA Player renderPlayer; public Player RenderPlayer { - get { return renderPlayer == null || renderPlayer.WinState != WinState.Undefined ? null : renderPlayer; } + get { return renderPlayer == null || (renderPlayer.WinState != WinState.Undefined && !Map.Visibility.HasFlag(MapVisibility.MissionSelector)) ? null : renderPlayer; } set { renderPlayer = value; } } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs index adafc9e957..cbaf3d6bec 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs @@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic var stats = widget.GetOrNull("OBSERVER_STATS_BUTTON"); if (stats != null) { - stats.IsDisabled = () => disableSystemButtons; + stats.IsDisabled = () => disableSystemButtons || world.Map.Visibility.HasFlag(MapVisibility.MissionSelector); stats.OnClick = () => OpenMenuPanel(stats); } } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs index dd43404121..7e0ffe29ff 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverShroudSelectorLogic.cs @@ -19,9 +19,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic { public class ObserverShroudSelectorLogic { + readonly CameraOption combined, disableShroud; + readonly IOrderedEnumerable> teams; + readonly bool limitViews; + CameraOption selected; - CameraOption combined, disableShroud; - IOrderedEnumerable> teams; class CameraOption { @@ -56,9 +58,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic [ObjectCreator.UseCtor] public ObserverShroudSelectorLogic(Widget widget, World world) { + limitViews = world.Map.Visibility.HasFlag(MapVisibility.MissionSelector); + var groups = new Dictionary>(); - teams = world.Players.Where(p => !p.NonCombatant) + teams = world.Players.Where(p => !p.NonCombatant && p.Playable) .Select(p => new CameraOption(this, p)) .GroupBy(p => (world.LobbyInfo.ClientWithIndex(p.Player.ClientIndex) ?? new Session.Client()).Team) .OrderBy(g => g.Key); @@ -72,7 +76,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic combined = new CameraOption(this, world, "All Players", world.Players.First(p => p.InternalName == "Everyone")); disableShroud = new CameraOption(this, world, "Disable Shroud", null); - groups.Add("Other", new List() { combined, disableShroud }); + if (!limitViews) + groups.Add("Other", new List() { combined, disableShroud }); var shroudSelector = widget.Get("SHROUD_SELECTOR"); shroudSelector.OnMouseDown = _ => @@ -121,7 +126,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic var keyhandler = shroudSelector.Get("SHROUD_KEYHANDLER"); keyhandler.OnKeyPress = HandleKeyPress; - selected = disableShroud; + selected = limitViews ? groups.First().Value.First() : disableShroud; + selected.OnClick(); } public bool HandleKeyPress(KeyInput e) @@ -129,7 +135,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic if (e.Event == KeyInputEvent.Down) { var h = Hotkey.FromKeyInput(e); - if (h == Game.Settings.Keys.ObserverCombinedView) + if (h == Game.Settings.Keys.ObserverCombinedView && !limitViews) { selected = combined; selected.OnClick(); @@ -137,7 +143,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic return true; } - if (h == Game.Settings.Keys.ObserverWorldView) + if (h == Game.Settings.Keys.ObserverWorldView && !limitViews) { selected = disableShroud; selected.OnClick();