Implemented more armor blocks and liquid router
This commit is contained in:
@@ -14,6 +14,8 @@ public enum Recipe{
|
||||
ironwall(distribution, Blocks.ironwall, stack(Item.iron, 5)),
|
||||
steelwall(distribution, Blocks.steelwall, stack(Item.steel, 5)),
|
||||
titaniumwall(distribution, Blocks.titaniumwall, stack(Item.titanium, 5)),
|
||||
duriumwall(distribution, Blocks.diriumwall, stack(Item.dirium, 5)),
|
||||
compositewall(distribution, Blocks.compositewall, stack(Item.dirium, 5), stack(Item.titanium, 5), stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
conveyor(distribution, ProductionBlocks.conveyor, stack(Item.stone, 1)),
|
||||
fastconveyor(distribution, ProductionBlocks.steelconveyor, stack(Item.steel, 1)),
|
||||
router(distribution, ProductionBlocks.router, stack(Item.stone, 3)),
|
||||
@@ -43,8 +45,11 @@ public enum Recipe{
|
||||
coalpurifier(production, ProductionBlocks.coalpurifier, stack(Item.steel, 20), stack(Item.iron, 20)),
|
||||
|
||||
conduit(distribution, ProductionBlocks.conduit, stack(Item.steel, 1)),
|
||||
liquidrouter(distribution, ProductionBlocks.liquidrouter, stack(Item.steel, 5)),
|
||||
pump(production, ProductionBlocks.pump, stack(Item.steel, 20));
|
||||
|
||||
|
||||
|
||||
public Block result;
|
||||
public ItemStack[] requirements;
|
||||
public Section section;
|
||||
|
||||
@@ -108,7 +108,15 @@ public class Blocks{
|
||||
}},
|
||||
|
||||
titaniumwall = new Wall("titaniumwall"){{
|
||||
health = 140;
|
||||
health = 150;
|
||||
formalName = "titanium wall";
|
||||
}},
|
||||
diriumwall = new Wall("duriumwall"){{
|
||||
health = 190;
|
||||
formalName = "dirium wall";
|
||||
}},
|
||||
compositewall = new Wall("compositewall"){{
|
||||
health = 270;
|
||||
formalName = "composite wall";
|
||||
}};
|
||||
}
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
package io.anuke.mindustry.world.blocks;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
|
||||
import io.anuke.mindustry.Inventory;
|
||||
import io.anuke.mindustry.Renderer;
|
||||
import io.anuke.mindustry.Vars;
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
@@ -43,6 +39,10 @@ public class ProductionBlocks{
|
||||
|
||||
}},
|
||||
|
||||
liquidrouter = new LiquidRouter("liquidrouter"){{
|
||||
|
||||
}},
|
||||
|
||||
conveyor = new Conveyor("conveyor"){{
|
||||
|
||||
}},
|
||||
@@ -53,49 +53,7 @@ public class ProductionBlocks{
|
||||
formalName = "steel conveyor";
|
||||
}},
|
||||
|
||||
router = new Block("router"){
|
||||
private ObjectMap<Tile, Byte> lastmap = new ObjectMap<>();
|
||||
int maxitems = 20;
|
||||
{
|
||||
update = true;
|
||||
solid = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
if(Timers.get(tile, 2) && tile.entity.totalItems() > 0){
|
||||
if(lastmap.get(tile, (byte)-1) != tile.rotation)
|
||||
tryDump(tile, tile.rotation, null);
|
||||
|
||||
tile.rotation ++;
|
||||
tile.rotation %= 4;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleItem(Tile tile, Item item, Tile source){
|
||||
super.handleItem(tile, item, source);
|
||||
lastmap.put(tile, (byte)tile.relativeTo(source.x, source.y));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(Item item, Tile dest, Tile source){
|
||||
int items = dest.entity.totalItems();
|
||||
return items < maxitems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawPixelOverlay(Tile tile){
|
||||
|
||||
float fract = (float)tile.entity.totalItems()/maxitems;
|
||||
|
||||
Renderer.drawBar(Color.GREEN, tile.worldx(), tile.worldy() + 13, fract);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description(){
|
||||
return "Split input materials into 3 directions.";
|
||||
}
|
||||
router = new Router("router"){
|
||||
},
|
||||
|
||||
junction = new Block("junction"){
|
||||
|
||||
@@ -75,7 +75,7 @@ public class Conduit extends Block{
|
||||
if(flow <= 0f || entity.liquidAmount < flow) return;
|
||||
|
||||
if(other.acceptLiquid(next, tile, liquid, flow)){
|
||||
other.addLiquid(next, tile, liquid, flow);
|
||||
other.handleLiquid(next, tile, liquid, flow);
|
||||
entity.liquidAmount -= flow;
|
||||
}
|
||||
}
|
||||
@@ -87,7 +87,7 @@ public class Conduit extends Block{
|
||||
return entity.liquidAmount + amount < liquidCapacity && (entity.liquid == liquid || entity.liquidAmount <= 0.01f);
|
||||
}
|
||||
|
||||
public void addLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
ConduitEntity entity = tile.entity();
|
||||
entity.liquid = liquid;
|
||||
entity.liquidAmount += amount;
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.ucore.core.Draw;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
public class LiquidRouter extends Conduit{
|
||||
private ObjectMap<Tile, Byte> lastmap = new ObjectMap<>();
|
||||
|
||||
public LiquidRouter(String name) {
|
||||
super(name);
|
||||
rotate = false;
|
||||
solid = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
|
||||
if(Timers.get(tile, 2) && entity.liquidAmount > 0){
|
||||
if(lastmap.get(tile, (byte)-1) != tile.rotation){
|
||||
tryMoveLiquid(tile, tile.getNearby()[tile.rotation]);
|
||||
}
|
||||
|
||||
tile.rotation ++;
|
||||
tile.rotation %= 4;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
super.handleLiquid(tile, source, liquid, amount);
|
||||
lastmap.put(tile, (byte)tile.relativeTo(source.x, source.y));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Tile tile){
|
||||
ConduitEntity entity = tile.entity();
|
||||
Draw.rect(name(), tile.worldx(), tile.worldy());
|
||||
|
||||
Draw.color(Color.ROYAL);
|
||||
Draw.alpha(entity.liquidAmount / liquidCapacity);
|
||||
Draw.rect("blank", tile.worldx(), tile.worldy(), 2, 2);
|
||||
Draw.color();
|
||||
}
|
||||
|
||||
}
|
||||
58
core/src/io/anuke/mindustry/world/blocks/types/Router.java
Normal file
58
core/src/io/anuke/mindustry/world/blocks/types/Router.java
Normal file
@@ -0,0 +1,58 @@
|
||||
package io.anuke.mindustry.world.blocks.types;
|
||||
|
||||
import com.badlogic.gdx.graphics.Color;
|
||||
import com.badlogic.gdx.utils.ObjectMap;
|
||||
|
||||
import io.anuke.mindustry.Renderer;
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
public class Router extends Block{
|
||||
private ObjectMap<Tile, Byte> lastmap = new ObjectMap<>();
|
||||
int maxitems = 20;
|
||||
|
||||
public Router(String name) {
|
||||
super(name);
|
||||
update = true;
|
||||
solid = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
if(Timers.get(tile, 2) && tile.entity.totalItems() > 0){
|
||||
if(lastmap.get(tile, (byte)-1) != tile.rotation)
|
||||
tryDump(tile, tile.rotation, null);
|
||||
|
||||
tile.rotation ++;
|
||||
tile.rotation %= 4;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleItem(Tile tile, Item item, Tile source){
|
||||
super.handleItem(tile, item, source);
|
||||
lastmap.put(tile, (byte)tile.relativeTo(source.x, source.y));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean accept(Item item, Tile dest, Tile source){
|
||||
int items = dest.entity.totalItems();
|
||||
return items < maxitems;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawPixelOverlay(Tile tile){
|
||||
|
||||
float fract = (float)tile.entity.totalItems()/maxitems;
|
||||
|
||||
Renderer.drawBar(Color.GREEN, tile.worldx(), tile.worldy() + 13, fract);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String description(){
|
||||
return "Split input materials into 3 directions.";
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user