Input liquid drawing for DrawLiquid and DrawMixer (#5906)
This commit is contained in:
@@ -609,7 +609,7 @@ public class Blocks implements ContentList{
|
||||
rotate = false;
|
||||
solid = true;
|
||||
outputsLiquid = true;
|
||||
drawer = new DrawMixer();
|
||||
drawer = new DrawMixer(true);
|
||||
|
||||
consumes.power(1f);
|
||||
consumes.item(Items.titanium);
|
||||
|
||||
@@ -3,18 +3,36 @@ package mindustry.world.draw;
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.production.*;
|
||||
import mindustry.world.blocks.production.GenericCrafter.*;
|
||||
import mindustry.world.consumers.*;
|
||||
|
||||
public class DrawLiquid extends DrawBlock{
|
||||
public TextureRegion liquid, top;
|
||||
public TextureRegion inLiquid, liquid, top;
|
||||
public boolean useOutputSprite = false;
|
||||
|
||||
public DrawLiquid(){
|
||||
}
|
||||
|
||||
public DrawLiquid(boolean useOutputSprite){
|
||||
this.useOutputSprite = useOutputSprite;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(GenericCrafterBuild build){
|
||||
Draw.rect(build.block.region, build.x, build.y);
|
||||
GenericCrafter type = (GenericCrafter)build.block;
|
||||
|
||||
if((inLiquid.found() || useOutputSprite) && type.consumes.has(ConsumeType.liquid)){
|
||||
Liquid input = type.consumes.<ConsumeLiquid>get(ConsumeType.liquid).liquid;
|
||||
Drawf.liquid(useOutputSprite ? liquid : inLiquid, build.x, build.y,
|
||||
build.liquids.get(input) / type.liquidCapacity,
|
||||
input.color
|
||||
);
|
||||
}
|
||||
|
||||
if(type.outputLiquid != null && build.liquids.get(type.outputLiquid.liquid) > 0){
|
||||
Drawf.liquid(liquid, build.x, build.y,
|
||||
build.liquids.get(type.outputLiquid.liquid) / type.liquidCapacity,
|
||||
@@ -29,6 +47,7 @@ public class DrawLiquid extends DrawBlock{
|
||||
public void load(Block block){
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
liquid = Core.atlas.find(block.name + "-liquid");
|
||||
inLiquid = Core.atlas.find(block.name + "-input-liquid");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -2,19 +2,37 @@ package mindustry.world.draw;
|
||||
|
||||
import arc.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.production.*;
|
||||
import mindustry.world.blocks.production.GenericCrafter.*;
|
||||
import mindustry.world.consumers.*;
|
||||
|
||||
public class DrawMixer extends DrawBlock{
|
||||
public TextureRegion liquid, top, bottom;
|
||||
public TextureRegion inLiquid, liquid, top, bottom;
|
||||
public boolean useOutputSprite;
|
||||
|
||||
public DrawMixer(){
|
||||
}
|
||||
|
||||
public DrawMixer(boolean useOutputSprite){
|
||||
this.useOutputSprite = useOutputSprite;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(GenericCrafterBuild build){
|
||||
float rotation = build.block.rotate ? build.rotdeg() : 0;
|
||||
|
||||
Draw.rect(bottom, build.x, build.y, rotation);
|
||||
|
||||
if((inLiquid.found() || useOutputSprite) && build.block.consumes.has(ConsumeType.liquid)){
|
||||
Liquid input = build.block.consumes.<ConsumeLiquid>get(ConsumeType.liquid).liquid;
|
||||
Drawf.liquid(useOutputSprite ? liquid : inLiquid, build.x, build.y,
|
||||
build.liquids.get(input) / build.block.liquidCapacity,
|
||||
input.color
|
||||
);
|
||||
}
|
||||
|
||||
if(build.liquids.total() > 0.001f){
|
||||
Draw.color(((GenericCrafter)build.block).outputLiquid.liquid.color);
|
||||
Draw.alpha(build.liquids.get(((GenericCrafter)build.block).outputLiquid.liquid) / build.block.liquidCapacity);
|
||||
@@ -27,6 +45,7 @@ public class DrawMixer extends DrawBlock{
|
||||
|
||||
@Override
|
||||
public void load(Block block){
|
||||
inLiquid = Core.atlas.find(block.name + "-input-liquid");
|
||||
liquid = Core.atlas.find(block.name + "-liquid");
|
||||
top = Core.atlas.find(block.name + "-top");
|
||||
bottom = Core.atlas.find(block.name + "-bottom");
|
||||
|
||||
Reference in New Issue
Block a user