From 5447c71790f1ed6c827ec35eef6fde8cdbeebf57 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 22 Nov 2018 08:39:05 -0500 Subject: [PATCH] Removed junction item voiding --- .../mindustry/graphics/BlockRenderer.java | 2 +- .../world/blocks/distribution/Junction.java | 73 ++++--------------- 2 files changed, 14 insertions(+), 61 deletions(-) diff --git a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java index 2b34127e2a..5b679ccdf4 100644 --- a/core/src/io/anuke/mindustry/graphics/BlockRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/BlockRenderer.java @@ -21,7 +21,7 @@ import static io.anuke.ucore.core.Core.camera; public class BlockRenderer{ private final static int initialRequests = 32 * 32; - private final static int expandr = 4; + private final static int expandr = 6; private FloorRenderer floorRenderer; diff --git a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java index 9027fb632c..88359454cc 100644 --- a/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/distribution/Junction.java @@ -1,6 +1,5 @@ package io.anuke.mindustry.world.blocks.distribution; -import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.NumberUtils; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.type.Item; @@ -8,10 +7,9 @@ import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.meta.BlockGroup; import io.anuke.ucore.core.Timers; -import io.anuke.ucore.function.Consumer; import io.anuke.ucore.util.Bits; -import static io.anuke.mindustry.Vars.*; +import static io.anuke.mindustry.Vars.content; public class Junction extends Block{ protected float speed = 26; //frames taken to go through this junction @@ -34,8 +32,8 @@ public class Junction extends Block{ public void update(Tile tile){ JunctionEntity entity = tile.entity(); - for(int i = 0; i < 2; i++){ - Buffer buffer = (i == 0 ? entity.bx : entity.by); + for(int i = 0; i < 4; i++){ + Buffer buffer = entity.buffers[i]; if(buffer.index > 0){ if(buffer.index > buffer.items.length) buffer.index = buffer.items.length; @@ -44,17 +42,11 @@ public class Junction extends Block{ if(Timers.time() >= time + speed || Timers.time() < time){ - int val = Bits.getRightInt(l); - - Item item = content.item(Bits.getLeftShort(val)); - int direction = Bits.getRightShort(val); - Tile dest = tile.getNearby(direction); + Item item = content.item(Bits.getRightInt(l)); + Tile dest = tile.getNearby(i); + //skip blocks that don't want the item, keep waiting until they do if(dest == null || !dest.block().acceptItem(item, dest, tile)){ - if(buffer.index > 1 && Bits.getRightShort(Bits.getRightInt(buffer.items[1])) != direction){ - System.arraycopy(buffer.items, 1, buffer.items, 0, buffer.index - 1); - buffer.index--; - } continue; } @@ -69,25 +61,19 @@ public class Junction extends Block{ @Override public void handleItem(Item item, Tile tile, Tile source){ JunctionEntity entity = tile.entity(); - boolean x = tile.x == source.x; - long value = Bits.packLong(NumberUtils.floatToIntBits(Timers.time()), Bits.packInt((short) item.id, source.relativeTo(tile.x, tile.y))); - if(x){ - entity.bx.add(value); - }else{ - entity.by.add(value); - } + long value = Bits.packLong(NumberUtils.floatToIntBits(Timers.time()), item.id); + int relative = source.relativeTo(tile.x, tile.y); + entity.buffers[relative].add(value); } @Override public boolean acceptItem(Item item, Tile tile, Tile source){ JunctionEntity entity = tile.entity(); - boolean x = tile.x == source.x; + int relative = source.relativeTo(tile.x, tile.y); - if(entity == null || entity.bx == null || entity.by == null || (x && entity.bx.full()) || (!x && entity.by.full())) + if(entity == null || relative == -1 || entity.buffers[relative].full()) return false; - int dir = source.relativeTo(tile.x, tile.y); - if(dir == -1) return false; - Tile to = tile.getNearby(dir); + Tile to = tile.getNearby(relative); return to != null && to.block().acceptItem(item, to, tile); } @@ -96,41 +82,8 @@ public class Junction extends Block{ return new JunctionEntity(); } - @Override - public Array getDebugInfo(Tile tile){ - JunctionEntity entity = tile.entity(); - Array arr = super.getDebugInfo(tile); - for(int i = 0; i < 4; i++){ - arr.add("nearby." + i); - arr.add(tile.getNearby(i)); - } - - Consumer write = b -> { - for(int i = 0; i < b.index; i++){ - long l = b.items[i]; - float time = NumberUtils.intBitsToFloat(Bits.getLeftInt(l)); - int val = Bits.getRightInt(l); - Item item = content.item(Bits.getLeftShort(val)); - int direction = Bits.getRightShort(val); - Tile dest = tile.getNearby(direction); - arr.add(" bufferx.item"); - arr.add(time + " | " + item.name + " | " + dest.block() + ":" + dest.floor()); - } - }; - - arr.add("buffer.bx"); - arr.add(entity.bx.index); - write.accept(entity.bx); - arr.add("buffer.by"); - arr.add(entity.bx.index); - write.accept(entity.by); - - return arr; - } - class JunctionEntity extends TileEntity{ - Buffer bx = new Buffer(); - Buffer by = new Buffer(); + Buffer[] buffers = {new Buffer(), new Buffer(), new Buffer(), new Buffer()}; } class Buffer{