import { makeDiv } from "../../../core/utils"; import { T } from "../../../translations"; import { getStringForKeyCode, KEYMAPPINGS } from "../../key_action_mapper"; import { BaseHUDPart } from "../base_hud_part"; import { TrackedState } from "../../../core/tracked_state"; import { MetaBuilding } from "../../meta_building"; export class HUDKeybindingOverlay extends BaseHUDPart { initialize() { this.root.hud.signals.selectedPlacementBuildingChanged.add( this.onSelectedBuildingForPlacementChanged, this ); this.trackedMapOverviewActive = new TrackedState(this.applyCssClasses, this); } createElements(parent) { const mapper = this.root.keyMapper; const getKeycode = id => { return getStringForKeyCode(mapper.getBinding(id).keyCode); }; this.element = makeDiv( parent, "ingame_HUD_KeybindingOverlay", [], `
${getKeycode(KEYMAPPINGS.navigation.mapMoveUp)} ${getKeycode(KEYMAPPINGS.navigation.mapMoveLeft)} ${getKeycode(KEYMAPPINGS.navigation.mapMoveDown)} ${getKeycode(KEYMAPPINGS.navigation.mapMoveRight)}
${getKeycode( KEYMAPPINGS.massSelect.massSelectStart )}+
${getKeycode(KEYMAPPINGS.placement.abortBuildingPlacement)}
${getKeycode(KEYMAPPINGS.placement.rotateWhilePlacing)}
` + (this.root.app.settings.getAllSettings().alwaysMultiplace ? "" : `
${getKeycode( KEYMAPPINGS.placementModifiers.placeMultiple )}
`) + `
${getKeycode( KEYMAPPINGS.placementModifiers.lockBeltDirection )}
${getKeycode(KEYMAPPINGS.placement.switchDirectionLockSide)}
` ); } /** * * @param {MetaBuilding} selectedMetaBuilding */ onSelectedBuildingForPlacementChanged(selectedMetaBuilding) { this.element.classList.toggle("placementActive", !!selectedMetaBuilding); this.element.classList.toggle( "hasDirectionLock", selectedMetaBuilding && selectedMetaBuilding.getHasDirectionLockAvailable() ); } applyCssClasses() { this.element.classList.toggle("mapOverviewActive", this.root.camera.getIsMapOverlayActive()); } update() { this.trackedMapOverviewActive.set(this.root.camera.getIsMapOverlayActive()); } }