From cac29c4ecc720de7a71575456d25d44963e2bd9a Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 10 May 2023 12:48:41 -0400 Subject: [PATCH] Placeable overlays --- core/src/mindustry/entities/comp/BuilderComp.java | 2 +- core/src/mindustry/world/Build.java | 2 +- core/src/mindustry/world/blocks/ConstructBlock.java | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuilderComp.java b/core/src/mindustry/entities/comp/BuilderComp.java index 286149ba85..0f77f2a940 100644 --- a/core/src/mindustry/entities/comp/BuilderComp.java +++ b/core/src/mindustry/entities/comp/BuilderComp.java @@ -54,7 +54,7 @@ abstract class BuilderComp implements Posc, Statusc, Teamc, Rotc{ BuildPlan plan = it.next(); Tile tile = world.tile(plan.x, plan.y); if(tile == null || (plan.breaking && tile.block() == Blocks.air) || (!plan.breaking && ((tile.build != null && tile.build.rotation == plan.rotation) || !plan.block.rotate) && - (tile.block() == plan.block || (plan.block != null && plan.block.isFloor() && plan.block == tile.floor())))){ + (tile.block() == plan.block || (plan.block != null && (plan.block.isOverlay() && plan.block == tile.overlay() || (plan.block.isFloor() && plan.block == tile.floor())))))){ it.remove(); } diff --git a/core/src/mindustry/world/Build.java b/core/src/mindustry/world/Build.java index 30f2b4c163..5a06e8f2ce 100644 --- a/core/src/mindustry/world/Build.java +++ b/core/src/mindustry/world/Build.java @@ -169,7 +169,7 @@ public class Build{ return false; } - if(type.isFloor() && tile.floor == type){ + if((type.isFloor() && tile.floor() == type) || (type.isOverlay() && tile.overlay() == type)){ return false; } diff --git a/core/src/mindustry/world/blocks/ConstructBlock.java b/core/src/mindustry/world/blocks/ConstructBlock.java index 5dd9c35885..f663ff4763 100644 --- a/core/src/mindustry/world/blocks/ConstructBlock.java +++ b/core/src/mindustry/world/blocks/ConstructBlock.java @@ -73,7 +73,10 @@ public class ConstructBlock extends Block{ float healthf = tile.build == null ? 1f : tile.build.healthf(); Seq prev = tile.build instanceof ConstructBuild co ? co.prevBuild : null; - if(block instanceof Floor floor){ + if(block instanceof OverlayFloor overlay){ + tile.setOverlay(overlay); + tile.setBlock(Blocks.air); + }else if(block instanceof Floor floor){ tile.setFloorUnder(floor); tile.setBlock(Blocks.air); }else{