Disable automatic rotation for buildings except belts

pull/33/head
Tobias Springer 4 years ago
parent d2864e7385
commit a26ef05543

@ -65,6 +65,10 @@ export class MetaBeltBaseBuilding extends MetaBuilding {
return true;
}
getRotateAutomaticallyWhilePlacing() {
return true;
}
/**
* Creates the entity at the given location
* @param {Entity} entity

@ -97,18 +97,21 @@ export class HUDBuildingPlacer extends BaseHUDPart {
return;
}
if (this.currentMetaBuilding.get() && this.lastDragTile) {
const metaBuilding = this.currentMetaBuilding.get();
if (metaBuilding && this.lastDragTile) {
const oldPos = this.lastDragTile;
const newPos = this.root.camera.screenToWorld(pos).toTileSpace();
if (!oldPos.equals(newPos)) {
const delta = newPos.sub(oldPos);
const angleDeg = Math_degrees(delta.angle());
this.currentBaseRotation = (Math.round(angleDeg / 90) * 90 + 360) % 360;
// Holding alt inverts the placement
if (this.root.app.inputMgr.altIsDown) {
this.currentBaseRotation = (180 + this.currentBaseRotation) % 360;
if (metaBuilding.getRotateAutomaticallyWhilePlacing()) {
const delta = newPos.sub(oldPos);
const angleDeg = Math_degrees(delta.angle());
this.currentBaseRotation = (Math.round(angleDeg / 90) * 90 + 360) % 360;
// Holding alt inverts the placement
if (this.root.app.inputMgr.altIsDown) {
this.currentBaseRotation = (180 + this.currentBaseRotation) % 360;
}
}
// - Using bresenhams algorithmus

@ -57,6 +57,13 @@ export class MetaBuilding {
return false;
}
/**
* Whether to rotate automatically in the dragging direction while placing
*/
getRotateAutomaticallyWhilePlacing() {
return false;
}
/**
* Returns a preview sprite
* @returns {AtlasSprite}

Loading…
Cancel
Save