Liquid total bugfixes
This commit is contained in:
@@ -49,7 +49,7 @@ public class LiquidTurret extends Turret{
|
||||
consumes.add(new ConsumeLiquidFilter(i -> ammoTypes.containsKey(i), 1f){
|
||||
@Override
|
||||
public boolean valid(Building build){
|
||||
return build.liquids.total() > 0.001f;
|
||||
return build.liquids.currentAmount() >= 0.001f;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -78,7 +78,7 @@ public class LiquidTurret extends Turret{
|
||||
super.draw();
|
||||
|
||||
if(liquidRegion.found()){
|
||||
Drawf.liquid(liquidRegion, x + recoilOffset.x, y + recoilOffset.y, liquids.total() / liquidCapacity, liquids.current().color, rotation - 90);
|
||||
Drawf.liquid(liquidRegion, x + recoilOffset.x, y + recoilOffset.y, liquids.currentAmount() / liquidCapacity, liquids.current().color, rotation - 90);
|
||||
}
|
||||
if(topRegion.found()) Draw.rect(topRegion, x + recoilOffset.x, y + recoilOffset.y, rotation - 90);
|
||||
}
|
||||
@@ -140,7 +140,7 @@ public class LiquidTurret extends Turret{
|
||||
|
||||
@Override
|
||||
public boolean hasAmmo(){
|
||||
return ammoTypes.get(liquids.current()) != null && liquids.total() >= 1f / ammoTypes.get(liquids.current()).ammoMultiplier;
|
||||
return ammoTypes.get(liquids.current()) != null && liquids.currentAmount() >= 1f / ammoTypes.get(liquids.current()).ammoMultiplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,8 +31,8 @@ public class DirectionLiquidBridge extends DirectionBridge{
|
||||
public void draw(){
|
||||
Draw.rect(block.region, x, y);
|
||||
|
||||
if(liquids.total() > 0.001f){
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.total() / liquidCapacity, liquids.current().color);
|
||||
if(liquids.currentAmount() > 0.001f){
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color);
|
||||
}
|
||||
|
||||
Draw.rect(dirRegion, x, y, rotdeg());
|
||||
@@ -52,7 +52,7 @@ public class DirectionLiquidBridge extends DirectionBridge{
|
||||
}
|
||||
|
||||
if(link == null){
|
||||
if(liquids.total() > 0.0001f && timer(timerFlow, 1)){
|
||||
if(liquids.currentAmount() > 0.0001f && timer(timerFlow, 1)){
|
||||
moveLiquidForward(false, liquids.current());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ public class Conduit extends LiquidBlock implements Autotiler{
|
||||
public void updateTile(){
|
||||
smoothLiquid = Mathf.lerpDelta(smoothLiquid, liquids.currentAmount() / liquidCapacity, 0.05f);
|
||||
|
||||
if(liquids.total() > 0.001f && timer(timerFlow, 1)){
|
||||
if(liquids.currentAmount() > 0.001f && timer(timerFlow, 1)){
|
||||
moveLiquidForward(leaks, liquids.current());
|
||||
noSleep();
|
||||
}else{
|
||||
|
||||
@@ -33,8 +33,8 @@ public class LiquidBlock extends Block{
|
||||
float rotation = rotate ? rotdeg() : 0;
|
||||
Draw.rect(bottomRegion, x, y, rotation);
|
||||
|
||||
if(liquids.total() > 0.001f){
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.total() / liquidCapacity, liquids.current().color);
|
||||
if(liquids.currentAmount() > 0.001f){
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color);
|
||||
}
|
||||
|
||||
Draw.rect(topRegion, x, y, rotation);
|
||||
|
||||
@@ -15,7 +15,7 @@ public class LiquidRouter extends LiquidBlock{
|
||||
public class LiquidRouterBuild extends LiquidBuild{
|
||||
@Override
|
||||
public void updateTile(){
|
||||
if(liquids.total() > 0.01f){
|
||||
if(liquids.currentAmount() > 0.01f){
|
||||
dumpLiquid(liquids.current());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ public class PayloadLoader extends PayloadBlock{
|
||||
}
|
||||
|
||||
//load up liquids
|
||||
if(payload.block().hasLiquids && liquids.total() >= 0.001f){
|
||||
if(payload.block().hasLiquids && liquids.currentAmount() >= 0.001f){
|
||||
Liquid liq = liquids.current();
|
||||
float total = liquids.currentAmount();
|
||||
float flow = Math.min(Math.min(liquidsLoaded * edelta(), payload.block().liquidCapacity - payload.build.liquids.get(liq)), total);
|
||||
@@ -160,7 +160,7 @@ public class PayloadLoader extends PayloadBlock{
|
||||
public boolean shouldExport(){
|
||||
return payload != null && (
|
||||
exporting ||
|
||||
(payload.block().hasLiquids && liquids.total() >= 0.1f && payload.build.liquids.total() >= payload.block().liquidCapacity - 0.001f) ||
|
||||
(payload.block().hasLiquids && liquids.currentAmount() >= 0.1f && payload.build.liquids.currentAmount() >= payload.block().liquidCapacity - 0.001f) ||
|
||||
(payload.block().hasItems && items.any() && payload.block().separateItemCapacity && content.items().contains(i -> payload.build.items.get(i) >= payload.block().itemCapacity)));
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ public class BurnerGenerator extends ItemLiquidGenerator{
|
||||
}
|
||||
|
||||
if(hasLiquids && liquidRegion.found()){
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.total() / liquidCapacity, liquids.current().color);
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ public class ItemLiquidGenerator extends PowerGenerator{
|
||||
}
|
||||
|
||||
if(hasLiquids){
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.total() / liquidCapacity, liquids.current().color);
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -104,6 +104,10 @@ public class GenericCrafter extends Block{
|
||||
if(outputLiquids == null && outputLiquid != null){
|
||||
outputLiquids = new LiquidStack[]{outputLiquid};
|
||||
}
|
||||
//write back to outputLiquid, as it helps with sensing
|
||||
if(outputLiquid == null && outputLiquids != null && outputLiquids.length > 0){
|
||||
outputLiquid = outputLiquids[0];
|
||||
}
|
||||
outputsLiquid = outputLiquids != null;
|
||||
super.init();
|
||||
}
|
||||
@@ -236,6 +240,8 @@ public class GenericCrafter extends Block{
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.progress) return Mathf.clamp(progress);
|
||||
//attempt to prevent wild total liquid fluctuation, at least for crafters
|
||||
if(sensor == LAccess.totalLiquids && outputLiquid != null) return liquids.get(outputLiquid.liquid);
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import arc.graphics.g2d.*;
|
||||
import arc.util.*;
|
||||
import mindustry.game.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.logic.*;
|
||||
import mindustry.type.*;
|
||||
import mindustry.world.*;
|
||||
import mindustry.world.blocks.liquid.*;
|
||||
@@ -114,6 +115,12 @@ public class Pump extends LiquidBlock{
|
||||
amount = 0f;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double sense(LAccess sensor){
|
||||
if(sensor == LAccess.totalLiquids) return liquidDrop == null ? 0f : liquids.get(liquidDrop);
|
||||
return super.sense(sensor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProximityUpdate(){
|
||||
super.onProximityUpdate();
|
||||
|
||||
@@ -76,7 +76,7 @@ public class Separator extends Block{
|
||||
public void draw(){
|
||||
super.draw();
|
||||
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.total() / liquidCapacity, liquids.current().color);
|
||||
Drawf.liquid(liquidRegion, x, y, liquids.currentAmount() / liquidCapacity, liquids.current().color);
|
||||
|
||||
if(Core.atlas.isFound(spinnerRegion)){
|
||||
Draw.rect(spinnerRegion, x, y, totalProgress * spinnerSpeed);
|
||||
@@ -132,7 +132,7 @@ public class Separator extends Block{
|
||||
|
||||
@Override
|
||||
public boolean canDump(Building to, Item item){
|
||||
return !consumes.itemFilters.get(item.id);
|
||||
return !consumes.consumesItem(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user