Index: binaries/data/config/default.cfg =================================================================== --- binaries/data/config/default.cfg +++ binaries/data/config/default.cfg @@ -203,12 +203,12 @@ right = D, RightArrow ; Scroll or rotate right up = W, UpArrow ; Scroll or rotate up/forwards down = S, DownArrow ; Scroll or rotate down/backwards -scroll.speed.increase = "Ctrl+Shift+S" ; Increase scroll speed -scroll.speed.decrease = "Ctrl+Alt+S" ; Decrease scroll speed -rotate.speed.increase = "Ctrl+Shift+R" ; Increase rotation speed -rotate.speed.decrease = "Ctrl+Alt+R" ; Decrease rotation speed -zoom.speed.increase = "Ctrl+Shift+Z" ; Increase zoom speed -zoom.speed.decrease = "Ctrl+Alt+Z" ; Decrease zoom speed +scroll.speed.increase = "Ctrl+Alt+Shift+S" ; Increase scroll speed +scroll.speed.decrease = "Ctrl+Alt+Shift+S" ; Decrease scroll speed +rotate.speed.increase = "Ctrl+Alt+Shift+R" ; Increase rotation speed +rotate.speed.decrease = "Ctrl+Alt+Shift+R" ; Decrease rotation speed +zoom.speed.increase = "Ctrl+Alt+Shift+Z" ; Increase zoom speed +zoom.speed.decrease = "Ctrl+Alt+Shift+Z" ; Decrease zoom speed [hotkey.camera.jump] 1 = F5 ; Jump to position N @@ -311,6 +311,50 @@ rotate.cw = RightBracket ; Rotate building placement preview clockwise rotate.ccw = LeftBracket ; Rotate building placement preview anticlockwise +[hotkey.session.constructions] +house = "B+H" +storehouse = "B+S" +farmstead = "B+F+A" +field = "B+F" +corral = "B+C" +greekoutpost = "B+O" +woodenwall = "B+C" +sentrytower = "B+T+S" +dock = "B+D" +barracks = "B+A" +blacksmith = "B+L" +temple = "B+T+E" +market = "B+M" +defencetower = "B+T" +citywall = "B+W" +civiccentre = "B+C+E" +fortress = "B+F+O" +wonder = "B+W+O" +gymnasium = "B+G+Y" +greektheatre = "B+G+T" +councilchamber = "B+C+A" +stoa = "B+S+T" + +[hotkey.session.formations] +battle_line = "Ctrl+Alt+T" +box = "Ctrl+Alt+B" +column_closed = "Ctrl+Alt+F" ; Forced march +column_open = "Ctrl+Alt+C" +flank = "Ctrl+Alt+K" +line_closed = "Ctrl+Alt+L" +line_open = "Ctrl+Alt+O" ; Open order +null = "Ctrl+Alt+N" +phalanx = "Ctrl+Alt+H" +skirmish = "Ctrl+Alt+I" +wedge = "Ctrl+Alt+W" + +[hotkey.session.stances] +aggressive = "Ctrl+Alt+A" +defensive = "Ctrl+Alt+D" +passive = "Ctrl+Alt+P" +standground = "Ctrl+Alt+S" +violent = "Ctrl+Alt+V" + [hotkey.session.gui] toggle = "Alt+G" ; Toggle visibility of session GUI menu.toggle = "F10" ; Toggle in-game menu Index: binaries/data/mods/public/gui/manual/intro.txt =================================================================== --- binaries/data/mods/public/gui/manual/intro.txt +++ binaries/data/mods/public/gui/manual/intro.txt @@ -135,14 +135,20 @@ Ctrl + D or \[right]: Rotate camera anticlockwise around terrain Q: Rotate camera clockwise around terrain E: Rotate camera anticlockwise around terrain +Ctrl + Alt + Shift + R: Increase rotation speed +Ctrl + Alt + Shift + R: Decrease rotation speed Shift + Mouse Wheel Rotate Up: Rotate camera clockwise around terrain Shift + Mouse Wheel Rotate Down: Rotate camera anticlockwise around terrain F: Follow the selected unit (move the camera to stop it from following the unit) R: Reset camera zoom/orientation +: Zoom in (keep pressed for continuous zoom) -: Zoom out (keep pressed for continuous zoom) +Ctrl + Alt + Shift + Z: Increase zoom speed +Ctrl + Alt + Shift + Z: Decrease zoom speed Alt + W: Toggle through wireframe modes Middle Mouse Button: Keep pressed and move the mouse to pan +Ctrl + Alt + Shift + S: Increase scroll speed +Ctrl + Alt + Shift + S: Decrease scroll speed [font="sans-bold-14"]During Building Placement [font="sans-14"]\[: Rotate building 15 degrees counter-clockwise Index: binaries/data/mods/public/gui/session/hotkeys/misc.xml =================================================================== --- binaries/data/mods/public/gui/session/hotkeys/misc.xml +++ binaries/data/mods/public/gui/session/hotkeys/misc.xml @@ -59,6 +59,47 @@ Engine.QuickLoad(); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + performCommand(g_Selection.toList().map(ent => GetEntityState(ent)), "delete"); Index: binaries/data/mods/public/gui/session/selection_panels.js =================================================================== --- binaries/data/mods/public/gui/session/selection_panels.js +++ binaries/data/mods/public/gui/session/selection_panels.js @@ -258,8 +258,14 @@ "player": data.player }); + let constructionCode = template.name.generic.replace(" ", "").toLowerCase(); + data.button.onPress = function() { startBuildingPlacement(data.item, data.playerState); }; + let hotkey = Engine.GetGUIObjectByName("hotkey.constructions." + constructionCode); + if (hotkey) + hotkey.onPress = () => startBuildingPlacement(data.item, data.playerState); + let tooltips = [ getEntityNamesFormatted, getVisibleEntityClassesFormatted, @@ -276,7 +282,10 @@ getRequiredTechnologyTooltip(technologyEnabled, template.requiredTechnology, GetSimState().players[data.player].civ), getNeededResourcesTooltip(neededResources)); - data.button.tooltip = tooltips.filter(tip => tip).join("\n"); + data.button.tooltip = sprintf(translate("%(hotkey)s %(constructionInfo)s"), { + "constructionInfo": tooltips.filter(tip => tip).join("\n"), + "hotkey": colorizeHotkey("%(hotkey)s", "session.constructions." + constructionCode) + }); let modifier = ""; if (!technologyEnabled || limits.canBeAddedCount == 0) @@ -340,7 +349,19 @@ performFormation(data.unitEntStates.map(state => state.id), data.item); }; - let tooltip = translate(formationInfo.name); + let formationCode = (template => { + let split = data.item.split("/"); + return split[split.length-1]; + })(data.item); + + let hotkey = Engine.GetGUIObjectByName("hotkey.formations." + formationCode); + if (hotkey) + hotkey.onPress = () => performFormation(g_Selection.toList(), data.item); + + let tooltip = sprintf(translate("%(hotkey)s %(formationName)s"), { + "formationName": translate(formationInfo.name), + "hotkey": colorizeHotkey("%(hotkey)s", "session.formations." + formationCode) + }); if (!formationOk && formationInfo.tooltip) tooltip += "\n" + coloredText(translate(formationInfo.tooltip), "red"); data.button.tooltip = tooltip; @@ -929,8 +950,14 @@ "setupButton": function(data) { data.button.onPress = function() { performStance(data.unitEntStates.map(state => state.id), data.item); }; - - data.button.tooltip = getStanceDisplayName(data.item) + "\n" + + let hotkey = Engine.GetGUIObjectByName("hotkey.stances." + data.item); + if (hotkey) + hotkey.onPress = () => performStance(g_Selection.toList(), data.item); + + data.button.tooltip = sprintf(translate("%(hotkey)s %(stanceName)s"), { + "stanceName": getStanceDisplayName(data.item), + "hotkey": colorizeHotkey("%(hotkey)s", "session.stances." + data.item) + }) + "\n" + "[font=\"sans-13\"]" + getStanceTooltip(data.item) + "[/font]"; data.guiSelection.hidden = !Engine.GuiInterfaceCall("IsStanceSelected", {