diff --git a/src/js/game/hud/parts/buildings_toolbar.js b/src/js/game/hud/parts/buildings_toolbar.js index f7a21a1b..e676a1f1 100644 --- a/src/js/game/hud/parts/buildings_toolbar.js +++ b/src/js/game/hud/parts/buildings_toolbar.js @@ -143,8 +143,25 @@ export class HUDBuildingsToolbar extends BaseHUDPart { return; } - this.root.soundProxy.playUiClick(); - this.sigBuildingSelected.dispatch(metaBuilding); - this.onSelectedPlacementBuildingChanged(metaBuilding); + let previouslySelected = false; + for (const buildingId in this.buildingHandles) { + const handle = this.buildingHandles[buildingId]; + if (handle.metaBuilding === metaBuilding) { + if (handle.index === this.lastSelectedIndex) { + previouslySelected = true; + } + break; + } + } + + const buildingPlacer = this.root.hud.parts.buildingPlacer; + + if (previouslySelected && buildingPlacer.currentMetaBuilding.get()) { + buildingPlacer.abortPlacement(); + } else { + this.root.soundProxy.playUiClick(); + this.sigBuildingSelected.dispatch(metaBuilding); + this.onSelectedPlacementBuildingChanged(metaBuilding); + } } } diff --git a/src/js/game/key_action_mapper.js b/src/js/game/key_action_mapper.js index 6aff0e88..9f17eb7f 100644 --- a/src/js/game/key_action_mapper.js +++ b/src/js/game/key_action_mapper.js @@ -362,7 +362,9 @@ export class KeyActionMapper { for (const key in this.keybindings) { /** @type {Keybinding} */ const binding = this.keybindings[key]; - if (binding.keyCode === keyCode /* && binding.shift === shift && binding.alt === alt */) { + + /* && binding.shift === shift && binding.alt === alt */ + if (binding.keyCode === keyCode && !binding.currentlyDown ) { binding.currentlyDown = true; /** @type {Signal} */