diff --git a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs index 26403447b6..e594d006f4 100644 --- a/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs +++ b/OpenRA.Game/Widgets/WorldInteractionControllerWidget.cs @@ -220,25 +220,27 @@ namespace OpenRA.Widgets public override bool HandleKeyPress(KeyInput e) { + var player = World.RenderPlayer ?? World.LocalPlayer; + if (e.Event == KeyInputEvent.Down) { var key = Hotkey.FromKeyInput(e); if (key == Game.Settings.Keys.PauseKey && World.LocalPlayer != null) // Disable pausing for spectators World.SetPauseState(!World.Paused); - else if (key == Game.Settings.Keys.SelectAllUnitsKey && World.LocalPlayer != null) + else if (key == Game.Settings.Keys.SelectAllUnitsKey) { var ownUnitsOnScreen = SelectActorsInBox(World, worldRenderer.Viewport.TopLeft, worldRenderer.Viewport.BottomRight, - a => a.Owner == World.LocalPlayer); + a => a.Owner == player); World.Selection.Combine(World, ownUnitsOnScreen, false, false); } - else if (key == Game.Settings.Keys.SelectUnitsByTypeKey && World.LocalPlayer != null) + else if (key == Game.Settings.Keys.SelectUnitsByTypeKey) { var selectedTypes = World.Selection.Actors - .Where(x => x.Owner == World.LocalPlayer) + .Where(x => x.Owner == player) .Select(a => a.Info); - Func cond = a => a.Owner == World.LocalPlayer && selectedTypes.Contains(a.Info); + Func cond = a => a.Owner == player && selectedTypes.Contains(a.Info); var tl = worldRenderer.Viewport.TopLeft; var br = worldRenderer.Viewport.BottomRight; var newSelection = SelectActorsInBox(World, tl, br, cond);