diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index b5566e463a..6746e14984 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -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); diff --git a/core/src/mindustry/world/draw/DrawLiquid.java b/core/src/mindustry/world/draw/DrawLiquid.java index 16cfd14934..ae246a5c67 100644 --- a/core/src/mindustry/world/draw/DrawLiquid.java +++ b/core/src/mindustry/world/draw/DrawLiquid.java @@ -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.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 diff --git a/core/src/mindustry/world/draw/DrawMixer.java b/core/src/mindustry/world/draw/DrawMixer.java index 850ac5c6dd..a2ff14b7f8 100644 --- a/core/src/mindustry/world/draw/DrawMixer.java +++ b/core/src/mindustry/world/draw/DrawMixer.java @@ -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.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");