Enable unit selection keys for spectators and in replays.

Only work in per-player views.
This commit is contained in:
Oliver Brakmann
2015-05-20 14:33:10 +02:00
parent 9895aee6f2
commit da16142412

View File

@@ -220,25 +220,27 @@ namespace OpenRA.Widgets
public override bool HandleKeyPress(KeyInput e) public override bool HandleKeyPress(KeyInput e)
{ {
var player = World.RenderPlayer ?? World.LocalPlayer;
if (e.Event == KeyInputEvent.Down) if (e.Event == KeyInputEvent.Down)
{ {
var key = Hotkey.FromKeyInput(e); var key = Hotkey.FromKeyInput(e);
if (key == Game.Settings.Keys.PauseKey && World.LocalPlayer != null) // Disable pausing for spectators if (key == Game.Settings.Keys.PauseKey && World.LocalPlayer != null) // Disable pausing for spectators
World.SetPauseState(!World.Paused); 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, 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); 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 var selectedTypes = World.Selection.Actors
.Where(x => x.Owner == World.LocalPlayer) .Where(x => x.Owner == player)
.Select(a => a.Info); .Select(a => a.Info);
Func<Actor, bool> cond = a => a.Owner == World.LocalPlayer && selectedTypes.Contains(a.Info); Func<Actor, bool> cond = a => a.Owner == player && selectedTypes.Contains(a.Info);
var tl = worldRenderer.Viewport.TopLeft; var tl = worldRenderer.Viewport.TopLeft;
var br = worldRenderer.Viewport.BottomRight; var br = worldRenderer.Viewport.BottomRight;
var newSelection = SelectActorsInBox(World, tl, br, cond); var newSelection = SelectActorsInBox(World, tl, br, cond);