1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-05 17:14:03 +00:00
tobspr_shapez.io/src/js/game/hud/parts/keybinding_overlay.js

101 lines
3.9 KiB
JavaScript
Raw Normal View History

2020-05-09 14:45:23 +00:00
import { BaseHUDPart } from "../base_hud_part";
import { makeDiv } from "../../../core/utils";
import { getStringForKeyCode } from "../../key_action_mapper";
import { TrackedState } from "../../../core/tracked_state";
2020-05-13 08:41:00 +00:00
import { queryParamOptions } from "../../../core/query_parameters";
2020-05-17 10:12:13 +00:00
import { T } from "../../../translations";
2020-05-09 14:45:23 +00:00
export class HUDKeybindingOverlay extends BaseHUDPart {
initialize() {
this.shiftDownTracker = new TrackedState(this.onShiftStateChanged, this);
this.root.hud.signals.selectedPlacementBuildingChanged.add(
this.onSelectedBuildingForPlacementChanged,
this
);
2020-05-09 14:45:23 +00:00
}
onShiftStateChanged(shiftDown) {
this.element.classList.toggle("shiftDown", shiftDown);
}
createElements(parent) {
const mapper = this.root.gameState.keyActionMapper;
const getKeycode = id => {
return getStringForKeyCode(mapper.getBinding(id).keyCode);
};
this.element = makeDiv(
parent,
"ingame_HUD_KeybindingOverlay",
[],
`
<div class="binding">
<code class="keybinding">${getKeycode("center_map")}</code>
2020-05-17 10:12:13 +00:00
<label>${T.ingame.keybindingsOverlay.centerMap}</label>
2020-05-09 14:45:23 +00:00
</div>
<div class="binding">
<code class="keybinding leftMouse"></code><i></i>
<code class="keybinding">${getKeycode("map_move_up")}</code>
<code class="keybinding">${getKeycode("map_move_left")}</code>
<code class="keybinding">${getKeycode("map_move_down")}</code>
<code class="keybinding">${getKeycode("map_move_right")}</code>
2020-05-17 10:12:13 +00:00
<label>${T.ingame.keybindingsOverlay.moveMap}</label>
2020-05-09 14:45:23 +00:00
</div>
<div class="binding noPlacementOnly">
2020-05-10 16:24:50 +00:00
<code class="keybinding rightMouse"></code><i></i>
2020-05-17 10:12:13 +00:00
<code class="keybinding builtinKey">${T.global.keys.control}</code>+
2020-05-10 16:24:50 +00:00
<code class="keybinding leftMouse"></code>
2020-05-17 10:12:13 +00:00
<label>${T.ingame.keybindingsOverlay.removeBuildings}</label>
2020-05-09 14:45:23 +00:00
</div>
<div class="binding placementOnly">
2020-05-17 10:12:13 +00:00
<code class="keybinding rightMouse"></code><i></i>
2020-05-09 14:45:23 +00:00
<code class="keybinding">${getKeycode("building_abort_placement")}</code>
2020-05-17 10:12:13 +00:00
<label>${T.ingame.keybindingsOverlay.stopPlacement}</label>
2020-05-09 14:45:23 +00:00
</div>
<div class="binding placementOnly">
<code class="keybinding">${getKeycode("rotate_while_placing")}</code>
2020-05-17 10:12:13 +00:00
<label>${T.ingame.keybindingsOverlay.rotateBuilding}</label>
2020-05-09 14:45:23 +00:00
</div>
2020-05-10 16:24:50 +00:00
<div class="binding placementOnly">
2020-05-17 10:12:13 +00:00
<code class="keybinding builtinKey shift"> ${T.global.keys.shift}</code>
<label>${T.ingame.keybindingsOverlay.placeMultiple}</label>
2020-05-09 14:45:23 +00:00
</div>
2020-05-10 16:24:50 +00:00
<div class="binding placementOnly">
2020-05-17 10:12:13 +00:00
<code class="keybinding builtinKey">${T.global.keys.alt}</code>
<label>${T.ingame.keybindingsOverlay.reverseOrientation}</label>
</div>
<div class="binding placementOnly">
2020-05-17 10:12:13 +00:00
<code class="keybinding builtinKey">${T.global.keys.control}</code>
<label>${T.ingame.keybindingsOverlay.disableAutoOrientation}</label>
</div>
2020-05-13 08:41:00 +00:00
` +
(queryParamOptions.betaMode
? `
<div class="binding hudToggle">
<code class="keybinding">F2</code>
2020-05-17 10:12:13 +00:00
<label>${T.ingame.keybindingsOverlay.toggleHud}</label>
2020-05-13 08:41:00 +00:00
</div>
2020-05-09 14:45:23 +00:00
`
2020-05-13 08:41:00 +00:00
: "")
2020-05-09 14:45:23 +00:00
);
}
onSelectedBuildingForPlacementChanged(selectedMetaBuilding) {
this.element.classList.toggle("placementActive", !!selectedMetaBuilding);
}
update() {
this.shiftDownTracker.set(this.root.app.inputMgr.shiftIsDown);
}
}