diff --git a/core/src/io/anuke/mindustry/world/Block.java b/core/src/io/anuke/mindustry/world/Block.java index 0b5c19e8ae..f52300c119 100644 --- a/core/src/io/anuke/mindustry/world/Block.java +++ b/core/src/io/anuke/mindustry/world/Block.java @@ -137,7 +137,7 @@ public class Block{ tile.entity.addItem(item, 1); } - public boolean acceptItem(Item item, Tile dest, Tile source){ + public boolean acceptItem(Item item, Tile tile, Tile source){ return false; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java b/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java index 8223915c67..005288795b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/BlockPart.java @@ -31,8 +31,8 @@ public class BlockPart extends Block implements PowerAcceptor, LiquidAcceptor{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - return dest.getLinked().block().acceptItem(item, dest.getLinked(), source); + public boolean acceptItem(Item item, Tile tile, Tile source){ + return tile.getLinked().block().acceptItem(item, tile.getLinked(), source); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java index abf97f32d5..5216e7a517 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java @@ -28,7 +28,7 @@ public class CoreBlock extends Block { } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ + public boolean acceptItem(Item item, Tile tile, Tile source){ return true; } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java index c8d73ccd78..b69b85e08d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/PowerTurret.java @@ -14,7 +14,6 @@ import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.PowerAcceptor; import io.anuke.ucore.core.Draw; -import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Mathf; import io.anuke.ucore.util.Strings; @@ -70,7 +69,7 @@ public class PowerTurret extends Turret implements PowerAcceptor{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ + public boolean acceptItem(Item item, Tile tile, Tile source){ return false; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index 38391da0f0..67ae84b3f2 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -123,8 +123,8 @@ public class Turret extends Block{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - return item == ammo && dest.entity().ammo < maxammo; + public boolean acceptItem(Item item, Tile tile, Tile source){ + return item == ammo && tile.entity().ammo < maxammo; } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java index 89e9def39e..5f5feba780 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java @@ -128,11 +128,11 @@ public class Conveyor extends Block{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - int direction = source == null ? 0 : Math.abs(source.relativeTo(dest.x, dest.y) - dest.getRotation()); - float minitem = dest.entity().minitem; + public boolean acceptItem(Item item, Tile tile, Tile source){ + int direction = source == null ? 0 : Math.abs(source.relativeTo(tile.x, tile.y) - tile.getRotation()); + float minitem = tile.entity().minitem; return (((direction == 0) && minitem > 0.05f) || - ((direction %2 == 1) && minitem > 0.52f)) && (source == null || !(source.block().rotate && (source.getRotation() + 2) % 4 == dest.getRotation())); + ((direction %2 == 1) && minitem > 0.52f)) && (source == null || !(source.block().rotate && (source.getRotation() + 2) % 4 == tile.getRotation())); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java index 159a1008ab..c32b5967ef 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Junction.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.world.blocks.types.distribution; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; -import io.anuke.ucore.UCore; import io.anuke.ucore.core.Timers; public class Junction extends Block{ @@ -32,11 +31,11 @@ public class Junction extends Block{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - int dir = source.relativeTo(dest.x, dest.y); + public boolean acceptItem(Item item, Tile tile, Tile source){ + int dir = source.relativeTo(tile.x, tile.y); if(dir == -1) return false; - Tile to = dest.getNearby()[dir]; - return to != null && to.block().acceptItem(item, to, dest); + Tile to = tile.getNearby()[dir]; + return to != null && to.block().acceptItem(item, to, tile); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidItemJunction.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidItemJunction.java index 5a04f45f26..cbd9f9dd7d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidItemJunction.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/LiquidItemJunction.java @@ -53,12 +53,12 @@ public class LiquidItemJunction extends LiquidBlock{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - int dir = source.relativeTo(dest.x, dest.y); + public boolean acceptItem(Item item, Tile tile, Tile source){ + int dir = source.relativeTo(tile.x, tile.y); - if((dir+dest.getRotation()) % 2 == 0) return false; + if((dir+ tile.getRotation()) % 2 == 0) return false; - Tile to = dest.getNearby()[dir]; - return to != null && to.block().acceptItem(item, to, dest); + Tile to = tile.getNearby()[dir]; + return to != null && to.block().acceptItem(item, to, tile); } } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java index f96e75c26a..3162acde1c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java @@ -53,8 +53,8 @@ public class Router extends Block{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - int items = dest.entity.totalItems(); + public boolean acceptItem(Item item, Tile tile, Tile source){ + int items = tile.entity.totalItems(); return items < capacity; } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java index 7576b43139..3cad9e690b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Sorter.java @@ -38,11 +38,11 @@ public class Sorter extends Junction implements Configurable{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ + public boolean acceptItem(Item item, Tile tile, Tile source){ if(source.block() instanceof Sorter) return false; - Tile to = getTileTarget(item, dest, source, false); + Tile to = getTileTarget(item, tile, source, false); - return to != null && to.block().acceptItem(item, to, dest); + return to != null && to.block().acceptItem(item, to, tile); } @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java index d0ce8d0d1f..e8e814922d 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Teleporter.java @@ -5,21 +5,22 @@ import com.badlogic.gdx.utils.Array; import com.badlogic.gdx.utils.ObjectSet; import io.anuke.mindustry.entities.TileEntity; import io.anuke.mindustry.resource.Item; -import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.Tile; import io.anuke.mindustry.world.blocks.types.Configurable; +import io.anuke.mindustry.world.blocks.types.PowerBlock; import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Timers; import io.anuke.ucore.scene.ui.ButtonGroup; import io.anuke.ucore.scene.ui.ImageButton; import io.anuke.ucore.scene.ui.layout.Table; import io.anuke.ucore.util.Mathf; +import io.anuke.ucore.util.Strings; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; -public class Teleporter extends Block implements Configurable{ +public class Teleporter extends PowerBlock implements Configurable{ public static final Color[] colorArray = {Color.ROYAL, Color.ORANGE, Color.SCARLET, Color.FOREST, Color.PURPLE, Color.GOLD, Color.PINK, Color.BLACK}; public static final int colors = colorArray.length; @@ -29,6 +30,8 @@ public class Teleporter extends Block implements Configurable{ private Array removal = new Array<>(); private Array returns = new Array<>(); + protected float powerPerItem = 1f; + static{ for(int i = 0; i < colors; i ++){ teleporters[i] = new ObjectSet<>(); @@ -40,6 +43,13 @@ public class Teleporter extends Block implements Configurable{ update = true; solid = true; health = 80; + powerCapacity = 30f; + } + + @Override + public void getStats(Array list){ + super.getStats(list); + list.add("[powerinfo]Power/item: " + Strings.toFixed(powerPerItem, 1)); } @Override @@ -103,18 +113,22 @@ public class Teleporter extends Block implements Configurable{ @Override public void handleItem(Item item, Tile tile, Tile source){ + PowerEntity entity = tile.entity(); + Array links = findLinks(tile); if(links.size > 0){ Tile target = links.get(Mathf.random(0, links.size-1)); target.entity.addItem(item, 1); } + + entity.power -= powerPerItem; } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - Array links = findLinks(dest); - return links.size > 0; + public boolean acceptItem(Item item, Tile tile, Tile source){ + PowerEntity entity = tile.entity(); + return entity.power >= powerPerItem && findLinks(tile).size > 0; } @Override @@ -147,7 +161,7 @@ public class Teleporter extends Block implements Configurable{ return returns; } - public static class TeleporterEntity extends TileEntity{ + public static class TeleporterEntity extends PowerEntity{ public byte color = 0; @Override diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java index 4b15db240d..15961d2937 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/TunnelConveyor.java @@ -34,10 +34,10 @@ public class TunnelConveyor extends Block{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ - int rot = source.relativeTo(dest.x, dest.y); - if(rot != (dest.getRotation() + 2)%4) return false; - Tile tunnel = getDestTunnel(dest, item); + public boolean acceptItem(Item item, Tile tile, Tile source){ + int rot = source.relativeTo(tile.x, tile.y); + if(rot != (tile.getRotation() + 2)%4) return false; + Tile tunnel = getDestTunnel(tile, item); if(tunnel != null){ Tile to = tunnel.getNearby()[tunnel.getRotation()]; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java index 17762f97ee..f8417e8c4a 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/NuclearReactor.java @@ -19,7 +19,6 @@ import io.anuke.ucore.core.Draw; import io.anuke.ucore.core.Effects; import io.anuke.ucore.core.Timers; import io.anuke.ucore.util.Mathf; -import io.anuke.ucore.util.Strings; import io.anuke.ucore.util.Tmp; //TODO possibly proken diff --git a/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java b/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java index a92548cec5..f0bea03f46 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/production/Smelter.java @@ -91,16 +91,16 @@ public class Smelter extends Block{ } @Override - public boolean acceptItem(Item item, Tile dest, Tile source){ + public boolean acceptItem(Item item, Tile tile, Tile source){ int amount = 0; boolean isInput = false; for(Item req : inputs){ if(req == item) isInput = true; - amount += dest.entity.getItem(req); + amount += tile.entity.getItem(req); } - return (isInput && amount < capacity) || (item == fuel && dest.entity.getItem(fuel) < capacity); + return (isInput && amount < capacity) || (item == fuel && tile.entity.getItem(fuel) < capacity); } @Override