Disable automatic rotation for buildings except belts

This commit is contained in:
Tobias Springer 2020-05-10 19:01:33 +02:00
parent d2864e7385
commit a26ef05543
3 changed files with 21 additions and 7 deletions

View File

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

View File

@ -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;
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;
// Holding alt inverts the placement
if (this.root.app.inputMgr.altIsDown) {
this.currentBaseRotation = (180 + this.currentBaseRotation) % 360;
}
}
// - Using bresenhams algorithmus

View File

@ -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}