From 2c59288969cb27c9fb2ae9c4e61ca3a4a234f5b2 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 1 Nov 2019 17:30:09 -0400 Subject: [PATCH] Auto-junctions --- .../src/io/anuke/mindustry/input/InputHandler.java | 2 ++ core/src/io/anuke/mindustry/world/Block.java | 5 +++++ .../world/blocks/distribution/Conduit.java | 14 ++++++++++++++ .../world/blocks/distribution/Conveyor.java | 14 +++++++++++++- ios/src/io/anuke/mindustry/IOSLauncher.java | 4 ---- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 0e3d32db87..14e72520b4 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -526,6 +526,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ req.animScale = 1f; lineRequests.add(req); }); + + lineRequests.each(req -> req.block = req.block.getReplacement(req, lineRequests)); } protected void updateLine(int x1, int y1){ diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index e8643b8b4a..e52eda26cb 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -551,6 +551,11 @@ public class Block extends BlockStorage{ return (other != this || rotate) && this.group != BlockGroup.none && other.group == this.group; } + /** @return a possible replacement for this block when placed in a line by the player. */ + public Block getReplacement(BuildRequest req, Array requests){ + return this; + } + public float handleDamage(Tile tile, float amount){ return amount; } diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java index b073a57743..281ea6b512 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conduit.java @@ -1,9 +1,13 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.*; +import io.anuke.arc.collection.*; +import io.anuke.arc.func.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; +import io.anuke.arc.math.geom.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.type.*; @@ -61,6 +65,16 @@ public class Conduit extends LiquidBlock implements Autotiler{ Draw.rect(topRegions[bits[0]], req.drawx(), req.drawy(), topRegions[bits[0]].getWidth() * Draw.scl * req.animScale, topRegions[bits[0]].getHeight() * Draw.scl * req.animScale, req.rotation * 90); } + @Override + public Block getReplacement(BuildRequest req, Array requests){ + Boolf cont = p -> requests.contains(o -> o.x == req.x + p.x && o.y == req.y + p.y && o.rotation == req.rotation && (req.block instanceof Conduit || req.block instanceof LiquidJunction)); + return cont.get(Geometry.d4(req.rotation)) && + cont.get(Geometry.d4(req.rotation - 2)) && + req.tile() != null && + req.tile().block() instanceof Conduit && + Mathf.mod(req.tile().rotation() - req.rotation, 2) == 1 ? Blocks.liquidJunction : this; + } + @Override public void transformCase(int num, int[] bits){ bits[0] = num == 0 ? 3 : num == 1 ? 6 : num == 2 ? 2 : num == 3 ? 4 : num == 4 ? 5 : num == 5 ? 1 : 0; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java index e352859758..a5e847218d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Conveyor.java @@ -2,16 +2,18 @@ package io.anuke.mindustry.world.blocks.distribution; import io.anuke.arc.*; import io.anuke.arc.collection.*; +import io.anuke.arc.func.*; import io.anuke.arc.graphics.g2d.*; import io.anuke.arc.math.*; import io.anuke.arc.math.geom.*; import io.anuke.arc.util.*; +import io.anuke.mindustry.content.*; import io.anuke.mindustry.entities.traits.BuilderTrait.*; import io.anuke.mindustry.entities.type.*; import io.anuke.mindustry.gen.*; import io.anuke.mindustry.graphics.*; import io.anuke.mindustry.type.*; -import io.anuke.mindustry.ui.Cicon; +import io.anuke.mindustry.ui.*; import io.anuke.mindustry.world.*; import io.anuke.mindustry.world.blocks.*; import io.anuke.mindustry.world.meta.*; @@ -247,6 +249,16 @@ public class Conveyor extends Block implements Autotiler{ return true; } + @Override + public Block getReplacement(BuildRequest req, Array requests){ + Boolf cont = p -> requests.contains(o -> o.x == req.x + p.x && o.y == req.y + p.y && o.rotation == req.rotation && (req.block instanceof Conveyor || req.block instanceof Junction)); + return cont.get(Geometry.d4(req.rotation)) && + cont.get(Geometry.d4(req.rotation - 2)) && + req.tile() != null && + req.tile().block() instanceof Conveyor && + Mathf.mod(req.tile().rotation() - req.rotation, 2) == 1 ? Blocks.junction : this; + } + @Override public int removeStack(Tile tile, Item item, int amount){ ConveyorEntity entity = tile.entity(); diff --git a/ios/src/io/anuke/mindustry/IOSLauncher.java b/ios/src/io/anuke/mindustry/IOSLauncher.java index 30ebd5a082..7bc46ef935 100644 --- a/ios/src/io/anuke/mindustry/IOSLauncher.java +++ b/ios/src/io/anuke/mindustry/IOSLauncher.java @@ -35,7 +35,6 @@ public class IOSLauncher extends IOSApplication.Delegate{ Scl.setAddition(-0.5f); } - //IOSApplicationConfiguration config = new IOSApplicationConfiguration(); return new IOSApplication(new ClientLauncher(){ @Override @@ -103,7 +102,6 @@ public class IOSLauncher extends IOSApplication.Delegate{ NSURL url = new NSURL(to.file()); UIActivityViewController p = new UIActivityViewController(Collections.singletonList(url), null); - //p.getPopoverPresentationController().setSourceView(UIApplication.getSharedApplication().getKeyWindow().getRootViewController().getView()); //DispatchQueue.getMainQueue().sync(() -> { UIApplication.getSharedApplication().getKeyWindow().getRootViewController() @@ -135,7 +133,6 @@ public class IOSLauncher extends IOSApplication.Delegate{ @Override public boolean openURL(UIApplication app, NSURL url, UIApplicationOpenURLOptions options){ - System.out.println("Opened URL: " + url.getPath()); openURL(url); return false; } @@ -145,7 +142,6 @@ public class IOSLauncher extends IOSApplication.Delegate{ boolean b = super.didFinishLaunching(application, options); if(options != null && options.has(UIApplicationLaunchOptions.Keys.URL())){ - System.out.println("Opened URL at launch: " + ((NSURL)options.get(UIApplicationLaunchOptions.Keys.URL())).getPath()); openURL(((NSURL)options.get(UIApplicationLaunchOptions.Keys.URL()))); }