Adds selecting of all units matching the current type across the screen or map using Ctrl + T.

This commit is contained in:
Pizzaoverhead
2014-02-19 17:52:04 +00:00
parent 3ed2053d4a
commit 7be3078115
4 changed files with 22 additions and 1 deletions

View File

@@ -14,6 +14,7 @@ NEW:
Added cheat button to grow map resources.
Fixed units staying selected and contributing to control groups when becoming cloaked or hidden in fog.
Swapped the cursors used for sabotaging and capturing buildings/units.
Added Ctrl+T shortcut for selection of all units matching the types of the currently selected ones across the screen and map.
Dune 2000:
Added the Atreides grenadier from the 1.06 patch.
Added randomized tiles for Sand and Rock terrain.

View File

@@ -148,6 +148,7 @@ namespace OpenRA.GameRules
public Hotkey ToLastEventKey = new Hotkey(Keycode.SPACE, Modifiers.None);
public Hotkey ToSelectionKey = new Hotkey(Keycode.HOME, Modifiers.None);
public Hotkey SelectAllUnitsKey = new Hotkey(Keycode.A, Modifiers.Ctrl);
public Hotkey SelectUnitsByTypeKey = new Hotkey(Keycode.T, Modifiers.Ctrl);
public Hotkey PauseKey = new Hotkey(Keycode.F9, Modifiers.None);
public Hotkey SellKey = new Hotkey(Keycode.F10, Modifiers.None);

View File

@@ -212,6 +212,24 @@ namespace OpenRA.Widgets
a => a.Owner == World.RenderPlayer);
World.Selection.Combine(World, ownUnitsOnScreen, false, false);
}
else if (Hotkey.FromKeyInput(e) == Game.Settings.Keys.SelectUnitsByTypeKey)
{
var selectedTypes = World.Selection.Actors.Where(
x => x.Owner == World.RenderPlayer).Select(a => a.Info);
Func<Actor, bool> cond = a => a.Owner == World.RenderPlayer && selectedTypes.Contains(a.Info);
IEnumerable<Actor> newSelection = SelectActorsInBox(
World, worldRenderer.Viewport.TopLeft, worldRenderer.Viewport.BottomRight, cond);
if (newSelection.Count() > selectedTypes.Count())
Game.Debug("Selected across screen");
else
{
newSelection = World.ActorMap.ActorsInBox(
World.Map.Bounds.TopLeftAsCPos().TopLeft,
World.Map.Bounds.BottomRightAsCPos().BottomRight).Where(cond);
Game.Debug("Selected across map");
}
World.Selection.Combine(World, newSelection, true, false);
}
}
return false;

View File

@@ -253,6 +253,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
{ "ToLastEventKey", "Jump to last radar event" },
{ "ToSelectionKey", "Jump to selection" },
{ "SelectAllUnitsKey", "Select all units on screen" },
{ "SelectUnitsByTypeKey", "Select units by type" },
{ "PauseKey", "Pause / Unpause" },
{ "SellKey", "Sell mode" },