diff --git a/src/js/game/buildings/block.js b/src/js/game/buildings/block.js index d6499648..be234352 100644 --- a/src/js/game/buildings/block.js +++ b/src/js/game/buildings/block.js @@ -19,7 +19,8 @@ export class MetaBlockBuilding extends MetaBuilding { * @returns */ getIsRemovable(root) { - return root.gameMode.getIsEditor(); + const settings = root.hud.parts.puzzleEditorSettings; + return settings ? !settings.getIsTestMode() : false; } /** diff --git a/src/js/game/buildings/constant_producer.js b/src/js/game/buildings/constant_producer.js index c1c502d0..3cee377f 100644 --- a/src/js/game/buildings/constant_producer.js +++ b/src/js/game/buildings/constant_producer.js @@ -23,7 +23,8 @@ export class MetaConstantProducerBuilding extends MetaBuilding { * @returns */ getIsRemovable(root) { - return root.gameMode.getIsEditor(); + const settings = root.hud.parts.puzzleEditorSettings; + return settings ? !settings.getIsTestMode() : false; } /** diff --git a/src/js/game/buildings/goal_acceptor.js b/src/js/game/buildings/goal_acceptor.js index dde720e3..eef6ac45 100644 --- a/src/js/game/buildings/goal_acceptor.js +++ b/src/js/game/buildings/goal_acceptor.js @@ -23,7 +23,8 @@ export class MetaGoalAcceptorBuilding extends MetaBuilding { * @returns */ getIsRemovable(root) { - return root.gameMode.getIsEditor(); + const settings = root.hud.parts.puzzleEditorSettings; + return settings ? !settings.getIsTestMode() : false; } /** diff --git a/src/js/game/hud/parts/base_toolbar.js b/src/js/game/hud/parts/base_toolbar.js index 186ca2de..28d205b0 100644 --- a/src/js/game/hud/parts/base_toolbar.js +++ b/src/js/game/hud/parts/base_toolbar.js @@ -123,7 +123,8 @@ export class HUDBaseToolbar extends BaseHUDPart { }); //lock icon for puzzle editor - if (this.root.gameMode.getIsEditor()) { + const settings = this.root.hud.parts.puzzleEditorSettings; + if (settings && !settings.getIsTestMode()) { itemContainer.classList.toggle("editor", true); if (!this.inRequiredBuildings(metaBuilding)) { const puzzleLock = makeDiv(itemContainer, null, ["puzzle-lock"]); @@ -260,7 +261,8 @@ export class HUDBaseToolbar extends BaseHUDPart { const handle = this.buildingHandles[metaBuilding.getId()]; if (handle.puzzleLocked) { - if (this.root.gameMode.getIsEditor()) { + const settings = this.root.hud.parts.puzzleEditorSettings; + if (settings && !settings.getIsTestMode()) { handle.puzzleLocked = false; handle.element.classList.toggle("unlocked", false); this.root.soundProxy.playUiClick(); diff --git a/src/js/game/hud/parts/puzzle_editor_settings.js b/src/js/game/hud/parts/puzzle_editor_settings.js index 54a36cd6..fe94d019 100644 --- a/src/js/game/hud/parts/puzzle_editor_settings.js +++ b/src/js/game/hud/parts/puzzle_editor_settings.js @@ -116,7 +116,7 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart { this.root.entityMgr.destroyEntity(entity); } this.root.entityMgr.processDestroyList(); - } else if (this.storedSolution.length) { + } else if (this.storedSolution.length > 0) { this.root.logic.performBulkOperation(() => { this.root.logic.performImmutableOperation(() => { for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) { @@ -275,4 +275,8 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart { this.element.querySelector(".zoneWidth > .value").textContent = String(mode.zoneWidth); this.element.querySelector(".zoneHeight > .value").textContent = String(mode.zoneHeight); } + + getIsTestMode() { + return this.testMode; + } } diff --git a/src/js/game/modes/puzzle_edit.js b/src/js/game/modes/puzzle_edit.js index 5569ae61..4d0e66c0 100644 --- a/src/js/game/modes/puzzle_edit.js +++ b/src/js/game/modes/puzzle_edit.js @@ -68,8 +68,6 @@ export class PuzzleEditGameMode extends PuzzleGameMode { } getIsEditor() { - /** @type {HUDPuzzleEditorSettings} */ - const editSettings = this.root.hud.parts.puzzleEditorSettings; - return !editSettings.testMode; + return true; } } diff --git a/src/js/game/systems/item_processor.js b/src/js/game/systems/item_processor.js index b57d735c..c35feee2 100644 --- a/src/js/game/systems/item_processor.js +++ b/src/js/game/systems/item_processor.js @@ -582,7 +582,8 @@ export class ItemProcessorSystem extends GameSystemWithFilter { ); } - if (this.root.gameMode.getIsEditor()) { + const settings = this.root.hud.parts.puzzleEditorSettings; + if (settings && !settings.getIsTestMode()) { // while playing in editor, assign the item goalComp.item = item; }