From 98ac25ac29f21e6972d8685f4170aab035eacf36 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 13 Jul 2018 10:21:17 -0400 Subject: [PATCH] Fixed distributor --- .../world/blocks/distribution/OverflowGate.java | 4 +++- .../world/blocks/distribution/Splitter.java | 13 +++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java b/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java index 6fde022a52..929ffe12ca 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/OverflowGate.java @@ -30,7 +30,9 @@ public class OverflowGate extends Splitter{ } } - Tile getTileTarget(Tile tile, Item item, int from, boolean flip){ + @Override + Tile getTileTarget(Tile tile, Item item, Tile src, boolean flip){ + int from = tile.relativeTo(src.x, src.y); if(from == -1) return null; Tile to = tile.getNearby((from + 2) % 4); Tile edge = Edges.getFacingEdge(tile, to); diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Splitter.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Splitter.java index 462f28da1d..307405e9ca 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Splitter.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Splitter.java @@ -34,9 +34,10 @@ public class Splitter extends Block{ SplitterEntity entity = tile.entity(); if(entity.lastItem != null){ entity.time += 1f/speed * Timers.delta(); - Tile target = getTileTarget(tile, entity.lastItem, entity.lastInput); + Tile target = getTileTarget(tile, entity.lastItem, entity.lastInput, false); if(target != null && (entity.time >= 1f)){ + getTileTarget(tile, entity.lastItem, entity.lastInput, true); target.block().handleItem(entity.lastItem, target, Edges.getFacingEdge(tile, target)); entity.items.remove(entity.lastItem, 1); entity.lastItem = null; @@ -57,16 +58,16 @@ public class Splitter extends Block{ entity.items.add(item, 1); entity.lastItem = item; entity.time = 0f; - entity.lastInput = tile.relativeTo(source.x, source.y); + entity.lastInput = source; } - Tile getTileTarget(Tile tile, Item item, int from){ + Tile getTileTarget(Tile tile, Item item, Tile from, boolean set){ Array proximity = tile.entity.proximity(); int counter = tile.getDump(); for(int i = 0; i < proximity.size; i++){ Tile other = proximity.get((i + counter) % proximity.size); - if(tile.relativeTo(other.x, other.y) == from) continue; - tile.setDump((byte) ((tile.getDump() + 1) % proximity.size)); + if(tile == from) continue; + if(set) tile.setDump((byte) ((tile.getDump() + 1) % proximity.size)); if(other.block().acceptItem(item, other, Edges.getFacingEdge(tile, other))){ return other; } @@ -91,7 +92,7 @@ public class Splitter extends Block{ public class SplitterEntity extends TileEntity{ Item lastItem; - int lastInput; + Tile lastInput; float time; } }