forked from mirrors/0ad
Add shift-clicking to tribute multiples of 500. Patch by alpha123. Refs #1839.
This was SVN commit r13201.
This commit is contained in:
@@ -249,6 +249,7 @@ hotkey.session.attackmove = Ctrl ; Modifier to attackmove when clicki
|
||||
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.masstribute = Shift ; Modifier to tribute 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
|
||||
|
||||
@@ -27,6 +27,7 @@ const INPUT_BATCHTRAINING = 6;
|
||||
const INPUT_PRESELECTEDACTION = 7;
|
||||
const INPUT_BUILDING_WALL_CLICK = 8;
|
||||
const INPUT_BUILDING_WALL_PATHING = 9;
|
||||
const INPUT_MASSTRIBUTING = 10;
|
||||
|
||||
var inputState = INPUT_NORMAL;
|
||||
var placementSupport = new PlacementSupport();
|
||||
@@ -987,17 +988,21 @@ function handleInputBeforeGui(ev, hoveredObject)
|
||||
}
|
||||
break;
|
||||
|
||||
case INPUT_BATCHTRAINING:
|
||||
switch (ev.type)
|
||||
case INPUT_MASSTRIBUTING:
|
||||
if (ev.type == "hotkeyup" && ev.hotkey == "session.masstribute")
|
||||
{
|
||||
case "hotkeyup":
|
||||
if (ev.hotkey == "session.batchtrain")
|
||||
{
|
||||
flushTrainingBatch();
|
||||
inputState = INPUT_NORMAL;
|
||||
}
|
||||
break;
|
||||
flushTributing();
|
||||
inputState = INPUT_NORMAL;
|
||||
}
|
||||
break;
|
||||
|
||||
case INPUT_BATCHTRAINING:
|
||||
if (ev.type == "hotkeyup" && ev.hotkey == "session.batchtrain")
|
||||
{
|
||||
flushTrainingBatch();
|
||||
inputState = INPUT_NORMAL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -34,6 +34,9 @@ var menu;
|
||||
|
||||
var isDiplomacyOpen = false;
|
||||
|
||||
// Redefined every time someone makes a tribute (so we can save some data in a closure). Called in input.js handleInputBeforeGui.
|
||||
var flushTributing = function() {};
|
||||
|
||||
// Ignore size defined in XML and set the actual menu size here
|
||||
function initMenuPosition()
|
||||
{
|
||||
@@ -271,15 +274,37 @@ function openDiplomacy()
|
||||
for each (var resource in ["food", "wood", "stone", "metal"])
|
||||
{
|
||||
var button = getGUIObjectByName("diplomacyPlayerTribute"+toTitleCase(resource)+"["+(i-1)+"]");
|
||||
// TODO: Make amounts changeable or change to 500 if shift is pressed
|
||||
var amounts = {
|
||||
"food": (resource=="food")?100:0,
|
||||
"wood": (resource=="wood")?100:0,
|
||||
"stone": (resource=="stone")?100:0,
|
||||
"metal": (resource=="metal")?100:0,
|
||||
};
|
||||
button.onpress = (function(e){ return function() { tributeResource(e) } })({"player": i, "amounts": amounts});
|
||||
button.onpress = (function(player, resource, button){
|
||||
// Implement something like how unit batch training works. Shift+click to send 500, shift+click+click to send 1000, etc.
|
||||
// Also see input.js (searching for "INPUT_MASSTRIBUTING" should get all the relevant parts).
|
||||
var multiplier = 1;
|
||||
return function() {
|
||||
var isBatchTrainPressed = Engine.HotkeyIsPressed("session.masstribute");
|
||||
if (isBatchTrainPressed)
|
||||
{
|
||||
inputState = INPUT_MASSTRIBUTING;
|
||||
multiplier += multiplier == 1 ? 4 : 5;
|
||||
}
|
||||
var amounts = {
|
||||
"food": (resource == "food" ? 100 : 0) * multiplier,
|
||||
"wood": (resource == "wood" ? 100 : 0) * multiplier,
|
||||
"stone": (resource == "stone" ? 100 : 0) * multiplier,
|
||||
"metal": (resource == "metal" ? 100 : 0) * multiplier,
|
||||
};
|
||||
button.tooltip = formatTributeTooltip(players[player], resource, amounts[resource]);
|
||||
// This is in a closure so that we have access to `player`, `amounts`, and `multiplier` without some
|
||||
// evil global variable hackery.
|
||||
flushTributing = function() {
|
||||
tributeResource({"player": player, "amounts": amounts});
|
||||
multiplier = 1;
|
||||
button.tooltip = formatTributeTooltip(players[player], resource, 100);
|
||||
};
|
||||
if (!isBatchTrainPressed)
|
||||
flushTributing();
|
||||
};
|
||||
})(i, resource, button);
|
||||
button.hidden = false;
|
||||
button.tooltip = formatTributeTooltip(players[i], resource, 100);
|
||||
}
|
||||
|
||||
// Skip our own teams on teams locked
|
||||
@@ -396,3 +421,10 @@ function closeOpenDialogs()
|
||||
closeDiplomacy();
|
||||
closeSettings(false);
|
||||
}
|
||||
|
||||
function formatTributeTooltip(player, resource, amount)
|
||||
{
|
||||
var playerColor = player.color.r + " " + player.color.g + " " + player.color.b;
|
||||
return "Tribute " + amount + " " + resource + " to [color=\"" + playerColor + "\"]" + player.name +
|
||||
"[/color]. Shift-click to tribute " + (amount < 500 ? 500 : amount + 500) + ".";
|
||||
}
|
||||
|
||||
@@ -313,16 +313,16 @@
|
||||
<object name="diplomacyPlayerEnemy[n]" size="100%-140 0 100%-120 100%" type="button" style="StoneButton" hidden="true"/>
|
||||
|
||||
<!-- Tribute -->
|
||||
<object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip="Food" hidden="true">
|
||||
<object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
|
||||
<object name="diplomacyPlayerTributeFoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/food.png" ghost="true"/>
|
||||
</object>
|
||||
<object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip="Wood" hidden="true">
|
||||
<object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
|
||||
<object name="diplomacyPlayerTributeWoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/wood.png" ghost="true"/>
|
||||
</object>
|
||||
<object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip="Stone" hidden="true">
|
||||
<object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
|
||||
<object name="diplomacyPlayerTributeStoneImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/stone.png" ghost="true"/>
|
||||
</object>
|
||||
<object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip="Metal" hidden="true">
|
||||
<object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
|
||||
<object name="diplomacyPlayerTributeMetalImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/metal.png" ghost="true"/>
|
||||
</object>
|
||||
</object>
|
||||
|
||||
Reference in New Issue
Block a user