You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.2 KiB
34 lines
1.2 KiB
import { STOP_PROPAGATION } from "../../../core/signal";
|
|
import { Vector } from "../../../core/vector";
|
|
import { enumMouseButton } from "../../camera";
|
|
import { BaseHUDPart } from "../base_hud_part";
|
|
|
|
export class HUDLeverToggle extends BaseHUDPart {
|
|
initialize() {
|
|
this.root.camera.downPreHandler.add(this.downPreHandler, this);
|
|
}
|
|
|
|
/**
|
|
* @param {Vector} pos
|
|
* @param {enumMouseButton} button
|
|
*/
|
|
downPreHandler(pos, button) {
|
|
const tile = this.root.camera.screenToWorld(pos).toTileSpace();
|
|
const contents = this.root.map.getLayerContentXY(tile.x, tile.y, "regular");
|
|
if (contents) {
|
|
const leverComp = contents.components.Lever;
|
|
if (leverComp) {
|
|
if (button === enumMouseButton.left) {
|
|
leverComp.toggled = !leverComp.toggled;
|
|
return STOP_PROPAGATION;
|
|
} else if (button === enumMouseButton.right) {
|
|
if (!this.root.hud.parts.buildingPlacer.currentMetaBuilding) {
|
|
this.root.logic.tryDeleteBuilding(contents);
|
|
}
|
|
return STOP_PROPAGATION;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|