Ticket #1839: tribute-shift-click.4.patch
File tribute-shift-click.4.patch, 6.8 KB (added by , 11 years ago) |
---|
-
gui/session/input.js
27 27 const INPUT_PRESELECTEDACTION = 7; 28 28 const INPUT_BUILDING_WALL_CLICK = 8; 29 29 const INPUT_BUILDING_WALL_PATHING = 9; 30 const INPUT_TRIBUTING = 10; 30 31 31 32 var inputState = INPUT_NORMAL; 32 33 var placementSupport = new PlacementSupport(); … … 977 978 } 978 979 break; 979 980 980 case INPUT_BATCHTRAINING: 981 case INPUT_BATCHTRAINING: case INPUT_TRIBUTING: 981 982 switch (ev.type) 982 983 { 983 984 case "hotkeyup": 984 if (ev.hotkey == "session.batchtrain" )985 if (ev.hotkey == "session.batchtrain" || ev.hotkey == "session.masstribute") 985 986 { 986 flushTrainingBatch(); 987 if (inputState == INPUT_BATCHTRAINING) 988 flushTrainingBatch(); 989 else 990 flushTributing(); 987 991 inputState = INPUT_NORMAL; 988 992 } 989 993 break; -
gui/session/menu.js
34 34 35 35 var isDiplomacyOpen = false; 36 36 37 // Redefined every time someone makes a tribute (so we can save some data in a closure). Called in input.js handleInputBeforeGui. 38 var flushTributing = function() {}; 39 37 40 // Ignore size defined in XML and set the actual menu size here 38 41 function initMenuPosition() 39 42 { … … 271 274 for each (var resource in ["food", "wood", "stone", "metal"]) 272 275 { 273 276 var button = getGUIObjectByName("diplomacyPlayerTribute"+toTitleCase(resource)+"["+(i-1)+"]"); 274 // TODO: Make amounts changeable or change to 500 if shift is pressed 275 var amounts = { 276 "food": (resource=="food")?100:0, 277 "wood": (resource=="wood")?100:0, 278 "stone": (resource=="stone")?100:0, 279 "metal": (resource=="metal")?100:0, 280 }; 281 button.onpress = (function(e){ return function() { tributeResource(e) } })({"player": i, "amounts": amounts}); 277 button.onpress = (function(player, resource, button){ 278 // Implement something like how unit batch training works. Shift+click to send 500, shift+click+click to send 1000, etc. 279 // Also see input.js (searching for "INPUT_TRIBUTING" should get all the relevant parts). 280 var multiplier = 1; 281 return function() { 282 var isBatchTrainPressed = Engine.HotkeyIsPressed("session.masstribute"); 283 if (isBatchTrainPressed) 284 { 285 inputState = INPUT_TRIBUTING; 286 multiplier += multiplier == 1 ? 4 : 5; 287 } 288 var amounts = { 289 "food": (resource == "food" ? 100 : 0) * multiplier, 290 "wood": (resource == "wood" ? 100 : 0) * multiplier, 291 "stone": (resource == "stone" ? 100 : 0) * multiplier, 292 "metal": (resource == "metal" ? 100 : 0) * multiplier, 293 }; 294 button.tooltip = formatTributeTooltip(players[player], resource, amounts[resource]); 295 // This is in a closure so that we have access to `player`, `amounts`, and `multiplier` without some 296 // evil global variable hackery. 297 flushTributing = function() { 298 tributeResource({"player": player, "amounts": amounts}); 299 multiplier = 1; 300 button.tooltip = formatTributeTooltip(players[player], resource, 100); 301 }; 302 if (!isBatchTrainPressed) 303 flushTributing(); 304 }; 305 })(i, resource, button); 282 306 button.hidden = false; 307 button.tooltip = formatTributeTooltip(players[i], resource, 100); 283 308 } 284 309 285 310 // Skip our own teams on teams locked … … 396 421 closeDiplomacy(); 397 422 closeSettings(false); 398 423 } 424 425 function formatTributeTooltip(player, resource, amount) 426 { 427 var playerColor = player.color.r + " " + player.color.g + " " + player.color.b; 428 return "Tribute " + amount + " " + resource + " to [color=\"" + playerColor + "\"]" + player.name + 429 "[/color]. Shift-click to tribute " + (amount < 500 ? 500 : amount + 500) + "."; 430 } -
gui/session/session.xml
313 313 <object name="diplomacyPlayerEnemy[n]" size="100%-140 0 100%-120 100%" type="button" style="StoneButton" hidden="true"/> 314 314 315 315 <!-- Tribute --> 316 <object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip="Food"hidden="true">316 <object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" hidden="true"> 317 317 <object name="diplomacyPlayerTributeFoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/food.png" ghost="true"/> 318 318 </object> 319 <object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip="Wood"hidden="true">319 <object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" hidden="true"> 320 320 <object name="diplomacyPlayerTributeWoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/wood.png" ghost="true"/> 321 321 </object> 322 <object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip="Stone"hidden="true">322 <object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" hidden="true"> 323 323 <object name="diplomacyPlayerTributeStoneImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/stone.png" ghost="true"/> 324 324 </object> 325 <object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip="Metal"hidden="true">325 <object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" hidden="true"> 326 326 <object name="diplomacyPlayerTributeMetalImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/metal.png" ghost="true"/> 327 327 </object> 328 328 </object> -
../../config/default.cfg
248 248 hotkey.session.queue = Shift ; Modifier to queue unit orders instead of replacing 249 249 hotkey.session.batchtrain = Shift ; Modifier to train units in batches 250 250 hotkey.session.massbarter = Shift ; Modifier to barter bunch of resources 251 hotkey.session.masstribute = Shift ; Modifier to tribute bunch of resources 251 252 hotkey.session.unloadtype = Shift ; Modifier to unload all units of type 252 253 hotkey.session.deselectgroup = Ctrl ; Modifier to deselect units when clicking group icon, instead of selecting 253 254 hotkey.session.rotate.cw = RightBracket ; Rotate building placement preview clockwise