Input liquid drawing for DrawLiquid and DrawMixer (#5906)

This commit is contained in:
Matthew Peng
2021-09-04 07:18:44 -07:00
committed by GitHub
parent 3901ae1720
commit b004146015
3 changed files with 42 additions and 4 deletions

View File

@@ -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);

View File

@@ -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

View File

@@ -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");