From e88ce078dfe444cad5c5b304ae7159ae764350db Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 29 Jul 2018 19:00:29 -0400 Subject: [PATCH] Fixed place distance not being respected --- .../anuke/mindustry/entities/traits/BuilderTrait.java | 8 ++++++-- core/src/io/anuke/mindustry/input/InputHandler.java | 3 +-- core/src/io/anuke/mindustry/maps/Sectors.java | 2 ++ core/src/io/anuke/mindustry/world/Block.java | 10 ++++++++++ .../src/io/anuke/mindustry/world/blocks/BlockPart.java | 1 + 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java index 35ace24606..0debb2ebd3 100644 --- a/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/BuilderTrait.java @@ -42,7 +42,7 @@ import static io.anuke.mindustry.Vars.world; */ public interface BuilderTrait extends Entity{ //these are not instance variables! - float placeDistance = 140f; + float placeDistance = 150f; float mineDistance = 70f; /** @@ -202,7 +202,11 @@ public interface BuilderTrait extends Entity{ Tile tile = world.tile(current.x, current.y); - if(!(tile.block() instanceof BuildBlock)){ + if(unit.distanceTo(tile) > placeDistance){ + return; + } + + if(!(tile.block() instanceof BuildBlock) ){ if(canCreateBlocks() && !current.remove && Build.validPlace(unit.getTeam(), current.x, current.y, current.recipe.result, current.rotation)){ Build.beginPlace(unit.getTeam(), current.x, current.y, current.recipe, current.rotation); }else if(canCreateBlocks() && current.remove && Build.validBreak(unit.getTeam(), current.x, current.y)){ diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index e22505d3e6..9fd32cde63 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -335,7 +335,7 @@ public abstract class InputHandler extends InputAdapter{ } public boolean validBreak(int x, int y){ - return Build.validBreak(player.getTeam(), x, y); + return Build.validBreak(player.getTeam(), x, y) && Vector2.dst(player.x, player.y, x * tilesize, y * tilesize) < Player.placeDistance; } public void placeBlock(int x, int y, Recipe recipe, int rotation){ @@ -344,7 +344,6 @@ public abstract class InputHandler extends InputAdapter{ } public void breakBlock(int x, int y){ - //todo multiplayer support Tile tile = world.tile(x, y).target(); player.addBuildRequest(new BuildRequest(tile.x, tile.y)); diff --git a/core/src/io/anuke/mindustry/maps/Sectors.java b/core/src/io/anuke/mindustry/maps/Sectors.java index 08e262fc2f..2232e9dfbc 100644 --- a/core/src/io/anuke/mindustry/maps/Sectors.java +++ b/core/src/io/anuke/mindustry/maps/Sectors.java @@ -37,9 +37,11 @@ public class Sectors{ logic.play(); sector.saveID = control.getSaves().addSave("sector-" + sector.packedPosition()).index; world.sectors().save(); + world.setSector(sector); }else{ try{ sector.getSave().load(); + world.setSector(sector); state.set(State.playing); }catch(Exception e){ Log.err(e); diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 7836cdddbd..8cc540fde4 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -149,6 +149,16 @@ public class Block extends BaseBlock implements Content{ return blocks.get(id); } + /**Populates the array with all blocks that produce this content.*/ + public static void getByProduction(Array arr, Content content){ + arr.clear(); + for(Block block : Block.all()){ + if(block.produces.get() == content){ + arr.add(block); + } + } + } + public boolean isLayer(Tile tile){ return true; } diff --git a/core/src/io/anuke/mindustry/world/blocks/BlockPart.java b/core/src/io/anuke/mindustry/world/blocks/BlockPart.java index dd90451dec..fdb3e34561 100644 --- a/core/src/io/anuke/mindustry/world/blocks/BlockPart.java +++ b/core/src/io/anuke/mindustry/world/blocks/BlockPart.java @@ -16,6 +16,7 @@ public class BlockPart extends Block{ super("blockpart"); solid = false; hasPower = hasItems = hasLiquids = true; + viewRange = -1; } @Override