diff --git a/binaries/data/config/default.cfg b/binaries/data/config/default.cfg index b638e6dec7..31b3dd1d15 100644 --- a/binaries/data/config/default.cfg +++ b/binaries/data/config/default.cfg @@ -142,6 +142,7 @@ hotkey.cut = "Ctrl+X" ; Cut selected text and copy to the clipboar ; > ENTITY SELECTION hotkey.selection.add = Shift ; Add units to selection +hotkey.selection.milonly = Alt ; Add only military units to selection hotkey.selection.remove = Ctrl ; Remove units from selection hotkey.selection.idleworker = Period ; Select next idle worker hotkey.selection.idlewarrior = Comma ; Select next idle warrior diff --git a/binaries/data/mods/public/gui/session/input.js b/binaries/data/mods/public/gui/session/input.js index 6014e2aaf4..0cffe3e741 100644 --- a/binaries/data/mods/public/gui/session/input.js +++ b/binaries/data/mods/public/gui/session/input.js @@ -444,6 +444,19 @@ function getPreferredEntities(ents) return preferredEnts; } +// Removes any support units from the passed list of entities +function getMilitaryEntities(ents) +{ + var militaryEnts = []; + for each (var ent in ents) + { + var entState = GetEntityState(ent); + if (!isSupport(entState)) + militaryEnts.push(ent); + } + return militaryEnts; +} + function handleInputBeforeGui(ev, hoveredObject) { // Capture mouse position so we can use it for displaying cursors, @@ -512,7 +525,16 @@ function handleInputBeforeGui(ev, hoveredObject) var preferredEntities = getPreferredEntities(ents) if (preferredEntities.length) - ents = preferredEntities; + { + ents = preferredEntities; + + if(Engine.HotkeyIsPressed("selection.milonly")) + { + var militaryEntities = getMilitaryEntities(ents); + if(militaryEntities.length) + ents = militaryEntities; + } + } // Remove the bandbox hover highlighting g_Selection.setHighlightList([]); diff --git a/binaries/data/mods/public/gui/session/utility_functions.js b/binaries/data/mods/public/gui/session/utility_functions.js index f723baabee..ab892f7a4c 100644 --- a/binaries/data/mods/public/gui/session/utility_functions.js +++ b/binaries/data/mods/public/gui/session/utility_functions.js @@ -127,6 +127,17 @@ function isDefensive(entState) return false; } +function isSupport(entState) +{ + if(entState.identity) + { + var classes = entState.identity.classes; + if(classes && classes.length) + return (classes.indexOf("Support") != -1); + } + return false; +} + function damageTypesToTextStacked(dmg) { if (!dmg)