commit fc698a3c4a64e556b20cfdf904b001987282aaeb
Author: Roel Kluin <roel.kluin@gmail.com>
Date: Wed Jun 13 01:59:38 2012 +0200
This allows two actions: to follow units when unload all hotkey is pressed
and to ungarrison n units. hotkey J = 1, K = 2, etc.
Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
diff --git a/binaries/data/mods/public/gui/session/input.js b/binaries/data/mods/public/gui/session/input.js
index 43cc741..eb0f140 100644
a
|
b
|
const INPUT_BATCHTRAINING = 6;
|
36 | 36 | const INPUT_PRESELECTEDACTION = 7; |
37 | 37 | const INPUT_BUILDING_WALL_CLICK = 8; |
38 | 38 | const INPUT_BUILDING_WALL_PATHING = 9; |
| 39 | const INPUT_FOLLOW_UNGARRISON = 10; |
| 40 | const INPUT_REPEATED_UNGARRISON = 11; |
39 | 41 | |
40 | 42 | var inputState = INPUT_NORMAL; |
41 | 43 | var placementSupport = new PlacementSupport(); |
… |
… |
function handleInputBeforeGui(ev, hoveredObject)
|
668 | 670 | mouseY = ev.y; |
669 | 671 | break; |
670 | 672 | } |
671 | | |
| 673 | if (inputState == INPUT_FOLLOW_UNGARRISON) |
| 674 | { |
| 675 | gents = _optionsOfpreSelected; |
| 676 | Engine.CameraFollow(0); |
| 677 | Engine.CameraFollow(gents[0]); |
| 678 | g_Selection.addList(gents); |
| 679 | resetPreselectedAction(); |
| 680 | } else if (inputState == INPUT_REPEATED_UNGARRISON) { |
| 681 | var garrisonHolder = _optionsOfpreSelected[0]; |
| 682 | var state = GetEntityState(garrisonHolder); |
| 683 | var gents = state.garrisonHolder.entities; |
| 684 | var gent = gents[_optionsOfpreSelected[1]] |
| 685 | Engine.PostNetworkCommand({"type": "unload", "entities": [gent], "garrisonHolder": garrisonHolder}); |
| 686 | if (_optionsOfpreSelected[1]-- > 0) |
| 687 | return true; |
| 688 | resetPreselectedAction(); |
| 689 | } |
672 | 690 | // Remember whether the mouse is over a GUI object or not |
673 | 691 | mouseIsOverObject = (hoveredObject != null); |
674 | 692 | |
… |
… |
function performGroup(action, nr)
|
1725 | 1743 | if (!lst) // shouldn't happen |
1726 | 1744 | break; |
1727 | 1745 | |
1728 | | if (preSelectedAction & (ACTION_UNGARRISON | ACTION_GARRISON)) |
| 1746 | if (preSelectedAction & ACTION_GARRISON) |
1729 | 1747 | { |
1730 | | if (preSelectedAction & ACTION_GARRISON) |
1731 | | ++nr; |
1732 | | if (nr > lst.length) |
| 1748 | if (++nr > lst.length) |
1733 | 1749 | nr = lst.length; |
1734 | | } else if (preSelectedAction != (ACTION_BUILD|ACTION_TRAIN)) { |
| 1750 | } else if (preSelectedAction != ACTION_UNGARRISON) { |
1735 | 1751 | if (nr >= lst.length) |
1736 | 1752 | break; |
1737 | 1753 | lst = lst[nr]; |
… |
… |
function performGroup(action, nr)
|
1763 | 1779 | break; |
1764 | 1780 | case ACTION_UNGARRISON: |
1765 | 1781 | if (lst.length > 1 || nr == 0) { |
| 1782 | if (nr >= lst.length) |
| 1783 | nr = lst.length - 1; |
1766 | 1784 | if (lst.length != 1) // TODO: uload all from all |
1767 | 1785 | lst = lst[nr]; // selected buildings |
1768 | 1786 | else |
1769 | 1787 | lst = lst[0]; |
1770 | 1788 | var state = GetEntityState(lst); |
1771 | 1789 | var gents = state.garrisonHolder.entities; |
| 1790 | _optionsOfpreSelected = gents; |
1772 | 1791 | unloadAll(lst); |
1773 | | // FIXME: follow when ungarrisoning all |
1774 | | // sadly these gents cannot be viewed after ungarissoning: |
1775 | | if (gents) |
1776 | | { |
1777 | | //Engine.CameraFollow(0); |
1778 | | g_Selection.reset(); |
1779 | | g_Selection.addList(gents); |
1780 | | Engine.CameraFollow(gents); |
1781 | | } |
| 1792 | g_Selection.reset(); |
| 1793 | inputState = INPUT_FOLLOW_UNGARRISON; |
| 1794 | break; |
1782 | 1795 | } else { |
1783 | 1796 | lst = lst[0]; |
1784 | 1797 | var state = GetEntityState(lst); |
1785 | 1798 | var gents = state.garrisonHolder.entities; |
1786 | | // FIXME unload nr times, requires some update. |
1787 | | unload(lst, gents); |
| 1799 | if (nr >= gents.length) |
| 1800 | nr = gents.length - 1; |
| 1801 | // unload nr times, requires some update. |
| 1802 | _optionsOfpreSelected = [lst, nr]; |
| 1803 | inputState = INPUT_REPEATED_UNGARRISON; |
1788 | 1804 | } |
1789 | 1805 | break; |
1790 | 1806 | case ACTION_FORMATION: |