Fixed distributor
This commit is contained in:
@@ -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;
|
if(from == -1) return null;
|
||||||
Tile to = tile.getNearby((from + 2) % 4);
|
Tile to = tile.getNearby((from + 2) % 4);
|
||||||
Tile edge = Edges.getFacingEdge(tile, to);
|
Tile edge = Edges.getFacingEdge(tile, to);
|
||||||
|
|||||||
@@ -34,9 +34,10 @@ public class Splitter extends Block{
|
|||||||
SplitterEntity entity = tile.entity();
|
SplitterEntity entity = tile.entity();
|
||||||
if(entity.lastItem != null){
|
if(entity.lastItem != null){
|
||||||
entity.time += 1f/speed * Timers.delta();
|
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)){
|
if(target != null && (entity.time >= 1f)){
|
||||||
|
getTileTarget(tile, entity.lastItem, entity.lastInput, true);
|
||||||
target.block().handleItem(entity.lastItem, target, Edges.getFacingEdge(tile, target));
|
target.block().handleItem(entity.lastItem, target, Edges.getFacingEdge(tile, target));
|
||||||
entity.items.remove(entity.lastItem, 1);
|
entity.items.remove(entity.lastItem, 1);
|
||||||
entity.lastItem = null;
|
entity.lastItem = null;
|
||||||
@@ -57,16 +58,16 @@ public class Splitter extends Block{
|
|||||||
entity.items.add(item, 1);
|
entity.items.add(item, 1);
|
||||||
entity.lastItem = item;
|
entity.lastItem = item;
|
||||||
entity.time = 0f;
|
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<Tile> proximity = tile.entity.proximity();
|
Array<Tile> proximity = tile.entity.proximity();
|
||||||
int counter = tile.getDump();
|
int counter = tile.getDump();
|
||||||
for(int i = 0; i < proximity.size; i++){
|
for(int i = 0; i < proximity.size; i++){
|
||||||
Tile other = proximity.get((i + counter) % proximity.size);
|
Tile other = proximity.get((i + counter) % proximity.size);
|
||||||
if(tile.relativeTo(other.x, other.y) == from) continue;
|
if(tile == from) continue;
|
||||||
tile.setDump((byte) ((tile.getDump() + 1) % proximity.size));
|
if(set) tile.setDump((byte) ((tile.getDump() + 1) % proximity.size));
|
||||||
if(other.block().acceptItem(item, other, Edges.getFacingEdge(tile, other))){
|
if(other.block().acceptItem(item, other, Edges.getFacingEdge(tile, other))){
|
||||||
return other;
|
return other;
|
||||||
}
|
}
|
||||||
@@ -91,7 +92,7 @@ public class Splitter extends Block{
|
|||||||
|
|
||||||
public class SplitterEntity extends TileEntity{
|
public class SplitterEntity extends TileEntity{
|
||||||
Item lastItem;
|
Item lastItem;
|
||||||
int lastInput;
|
Tile lastInput;
|
||||||
float time;
|
float time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user