diff --git a/core/assets-raw/sprites/blocks/logic/world-switch-on.png b/core/assets-raw/sprites/blocks/logic/world-switch-on.png new file mode 100644 index 0000000000..54f03c820c Binary files /dev/null and b/core/assets-raw/sprites/blocks/logic/world-switch-on.png differ diff --git a/core/assets-raw/sprites/blocks/logic/world-switch.png b/core/assets-raw/sprites/blocks/logic/world-switch.png new file mode 100644 index 0000000000..b7c65601a9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/logic/world-switch.png differ diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index b1a6b32aca..d72941dee9 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -586,3 +586,4 @@ 63096=fast|status-fast-ui 63095=ranai|ranai 63094=cat|cat +63093=world-switch|block-world-switch-ui diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index f7b63bc6a4..6d7f4623f4 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -160,7 +160,7 @@ public class Blocks{ //logic message, switchBlock, microProcessor, logicProcessor, hyperProcessor, largeLogicDisplay, logicDisplay, memoryCell, memoryBank, canvas, reinforcedMessage, - worldProcessor, worldCell, worldMessage, + worldProcessor, worldCell, worldMessage, worldSwitch, //campaign launchPad, interplanetaryAccelerator @@ -5944,6 +5944,13 @@ public class Blocks{ privileged = true; }}; + worldSwitch = new SwitchBlock("world-switch"){{ + requirements(Category.logic, BuildVisibility.editorOnly, with()); + + targetable = false; + privileged = true; + }}; + //endregion } } diff --git a/core/src/mindustry/world/blocks/logic/SwitchBlock.java b/core/src/mindustry/world/blocks/logic/SwitchBlock.java index 8ed7723abf..c3e579e456 100644 --- a/core/src/mindustry/world/blocks/logic/SwitchBlock.java +++ b/core/src/mindustry/world/blocks/logic/SwitchBlock.java @@ -8,6 +8,8 @@ import mindustry.gen.*; import mindustry.world.*; import mindustry.world.meta.*; +import static mindustry.Vars.state; + public class SwitchBlock extends Block{ public Sound clickSound = Sounds.click; @@ -25,7 +27,26 @@ public class SwitchBlock extends Block{ config(Boolean.class, (SwitchBuild entity, Boolean b) -> entity.enabled = b); } + public boolean accessible(){ + return !privileged || state.rules.editor; + } + + @Override + public boolean canBreak(Tile tile){ + return accessible(); + } + public class SwitchBuild extends Building{ + @Override + public void damage(float damage){ + if(privileged) return; + super.damage(damage); + } + + @Override + public boolean collide(Bullet other){ + return !privileged; + } @Override public boolean configTapped(){