forked from 0ad/0ad
Shift-click ungarrisons all units of a type. Patch from leper, fixes #1206.
This was SVN commit r11385.
This commit is contained in:
parent
f53823b498
commit
a957455647
@ -184,6 +184,7 @@ hotkey.session.garrison = Ctrl ; Modifier to garrison when clicking
|
||||
hotkey.session.queue = Shift ; Modifier to queue unit orders instead of replacing
|
||||
hotkey.session.batchtrain = Shift ; Modifier to train units in batches
|
||||
hotkey.session.massbarter = Shift ; Modifier to barter bunch of resources
|
||||
hotkey.session.unloadtype = Shift ; Modifier to unload all units of type
|
||||
hotkey.session.deselectgroup = Ctrl ; Modifier to deselect units when clicking group icon, instead of selecting
|
||||
hotkey.session.rotate.cw = RightBracket ; Rotate building placement preview clockwise
|
||||
hotkey.session.rotate.ccw = LeftBracket ; Rotate building placement preview anticlockwise
|
||||
|
@ -1403,9 +1403,12 @@ function findIdleUnit(classes)
|
||||
resetIdleUnit();
|
||||
}
|
||||
|
||||
function unload(garrisonHolder, entity)
|
||||
function unload(garrisonHolder, entities)
|
||||
{
|
||||
Engine.PostNetworkCommand({"type": "unload", "entity": entity, "garrisonHolder": garrisonHolder});
|
||||
if (Engine.HotkeyIsPressed("session.unloadtype"))
|
||||
Engine.PostNetworkCommand({"type": "unload", "entities": entities, "garrisonHolder": garrisonHolder});
|
||||
else
|
||||
Engine.PostNetworkCommand({"type": "unload", "entities": [entities[0]], "garrisonHolder": garrisonHolder});
|
||||
}
|
||||
|
||||
function unloadAll(garrisonHolder)
|
||||
|
@ -226,7 +226,7 @@ function setupUnitPanel(guiName, usedPanels, unitEntState, items, callback)
|
||||
|
||||
case GARRISON:
|
||||
var name = getEntityName(template);
|
||||
var tooltip = "Unload " + getEntityName(template);
|
||||
var tooltip = "Unload " + getEntityName(template) + "\nSingle-click to unload 1. Shift-click to unload all of this type.";
|
||||
var count = garrisonGroups.getCount(item);
|
||||
getGUIObjectByName("unit"+guiName+"Count["+i+"]").caption = (count > 1 ? count : "");
|
||||
break;
|
||||
@ -508,7 +508,7 @@ function updateUnitCommands(entState, supplementalDetailsPanel, commandsPanel, s
|
||||
var groups = new EntityGroups();
|
||||
groups.add(entState.garrisonHolder.entities);
|
||||
setupUnitPanel("Garrison", usedPanels, entState, groups.getTemplateNames(),
|
||||
function (item) { unload(entState.id, groups.getEntsByName(item)[0]); } );
|
||||
function (item) { unload(entState.id, groups.getEntsByName(item)); } );
|
||||
}
|
||||
|
||||
var formations = getEntityFormationsList(entState);
|
||||
|
@ -424,7 +424,7 @@ var Entity = Class({
|
||||
if (!this._template.GarrisonHolder)
|
||||
return;
|
||||
|
||||
Engine.PostCommand({"type": "unload", "garrisonHolder": this.id(), "entity": unit.id()});
|
||||
Engine.PostCommand({"type": "unload", "garrisonHolder": this.id(), "entities": [unit.id()]});
|
||||
},
|
||||
|
||||
unloadAll: function() {
|
||||
|
@ -337,13 +337,21 @@ function ProcessCommand(player, cmd)
|
||||
if (CanControlUnit(cmd.garrisonHolder, player, controlAllUnits))
|
||||
{
|
||||
var cmpGarrisonHolder = Engine.QueryInterface(cmd.garrisonHolder, IID_GarrisonHolder);
|
||||
if (!cmpGarrisonHolder || !cmpGarrisonHolder.Unload(cmd.entity))
|
||||
var notUngarrisoned = 0;
|
||||
for each (ent in cmd.entities)
|
||||
{
|
||||
if (!cmpGarrisonHolder || !cmpGarrisonHolder.Unload(ent))
|
||||
{
|
||||
notUngarrisoned++;
|
||||
}
|
||||
}
|
||||
if (notUngarrisoned != 0)
|
||||
{
|
||||
var cmpPlayer = QueryPlayerIDInterface(player, IID_Player);
|
||||
var notification = {"player": cmpPlayer.GetPlayerID(), "message": "Unable to ungarrison unit"};
|
||||
var notification = {"player": cmpPlayer.GetPlayerID(), "message": (notUngarrisoned == 1 ? "Unable to ungarrison unit" : "Unable to ungarrison units")};
|
||||
var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
|
||||
cmpGUIInterface.PushNotification(notification);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (g_DebugCommands)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user