Made teleporters use power as well
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -123,8 +123,8 @@ public class Turret extends Block{
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptItem(Item item, Tile dest, Tile source){
|
||||
return item == ammo && dest.<TurretEntity>entity().ammo < maxammo;
|
||||
public boolean acceptItem(Item item, Tile tile, Tile source){
|
||||
return item == ammo && tile.<TurretEntity>entity().ammo < maxammo;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -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.<ConveyorEntity>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.<ConveyorEntity>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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<Tile> removal = new Array<>();
|
||||
private Array<Tile> 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<String> 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<Tile> 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<Tile> 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
|
||||
|
||||
@@ -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()];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user