1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2026-03-02 03:39:21 +00:00

Add back copy/paste in puzzle mode. (#1230)

* added the new splitter

* Update base-en.yaml

* added the new splitter

Update changelog and update translation regarding 20 upgrade tiers, closes #907

* Update base-en.yaml

* Added back copy/paste in puzzle mode

* fixed rotating non-rotatable buildings as blueprints and made blocker non-rotatable
This commit is contained in:
Sense101
2021-06-24 17:45:48 +01:00
committed by GitHub
parent 1c23549b39
commit f7cc313ff4
6 changed files with 39 additions and 14 deletions

View File

@@ -27,6 +27,8 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
}
initialize() {
this.isCopyPasteFree = this.root.gameMode.getHasFreeCopyPaste();
this.root.hud.signals.buildingsSelectedForCopy.add(this.createBlueprintFromBuildings, this);
/** @type {TypedTrackedState<Blueprint?>} */
@@ -82,7 +84,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
update() {
const currentBlueprint = this.currentBlueprint.get();
this.domAttach.update(currentBlueprint && currentBlueprint.getCost() > 0);
this.domAttach.update(!this.isCopyPasteFree && currentBlueprint && currentBlueprint.getCost() > 0);
this.trackedCanAfford.set(currentBlueprint && currentBlueprint.canAfford(this.root));
}
@@ -114,7 +116,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
return;
}
if (!blueprint.canAfford(this.root)) {
if (!this.isCopyPasteFree && !blueprint.canAfford(this.root)) {
this.root.soundProxy.playUiError();
return;
}
@@ -122,8 +124,10 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
const worldPos = this.root.camera.screenToWorld(pos);
const tile = worldPos.toTileSpace();
if (blueprint.tryPlace(this.root, tile)) {
const cost = blueprint.getCost();
this.root.hubGoals.takeShapeByKey(this.root.gameMode.getBlueprintShapeKey(), cost);
if (!this.isCopyPasteFree) {
const cost = blueprint.getCost();
this.root.hubGoals.takeShapeByKey(this.root.gameMode.getBlueprintShapeKey(), cost);
}
this.root.soundProxy.playUi(SOUNDS.placeBuilding);
}
return STOP_PROPAGATION;
@@ -131,7 +135,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
}
/**
* Mose move handler
* Mouse move handler
*/
onMouseMove() {
// Prevent movement while blueprint is selected

View File

@@ -1,5 +1,6 @@
import { globalConfig } from "../../../core/config";
import { DrawParameters } from "../../../core/draw_parameters";
import { gMetaBuildingRegistry } from "../../../core/global_registries";
import { createLogger } from "../../../core/logging";
import { STOP_PROPAGATION } from "../../../core/signal";
import { formatBigNumberFull } from "../../../core/utils";
@@ -7,6 +8,8 @@ import { Vector } from "../../../core/vector";
import { ACHIEVEMENTS } from "../../../platform/achievement_provider";
import { T } from "../../../translations";
import { Blueprint } from "../../blueprint";
import { MetaBlockBuilding } from "../../buildings/block";
import { MetaConstantProducerBuilding } from "../../buildings/constant_producer";
import { enumMouseButton } from "../../camera";
import { Component } from "../../component";
import { Entity } from "../../entity";
@@ -260,7 +263,14 @@ export class HUDMassSelector extends BaseHUDPart {
for (let x = realTileStart.x; x <= realTileEnd.x; ++x) {
for (let y = realTileStart.y; y <= realTileEnd.y; ++y) {
const contents = this.root.map.getLayerContentXY(x, y, this.root.currentLayer);
if (contents && this.root.logic.canDeleteBuilding(contents)) {
const staticComp = contents.components.StaticMapEntity;
if (!staticComp.getMetaBuilding().getIsRemovable(this.root)) {
continue;
}
this.selectedUids.add(contents.uid);
}
}
@@ -320,6 +330,11 @@ export class HUDMassSelector extends BaseHUDPart {
renderedUids.add(uid);
const staticComp = contents.components.StaticMapEntity;
if (!staticComp.getMetaBuilding().getIsRemovable(this.root)) {
continue;
}
const bounds = staticComp.getTileSpaceBounds();
parameters.context.beginRoundedRect(
bounds.x * globalConfig.tileSize + boundsBorder,