From c8816816340bc2d103467fe282f1783a13106135 Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Tue, 26 Mar 2024 00:21:32 -0700 Subject: [PATCH] Add consumers for other liquid fields Temperature, heat capacity, viscosity, and explosiveness --- .../world/consumers/ConsumeItemCharged.java | 1 - .../world/consumers/ConsumeItemExplosive.java | 1 - .../world/consumers/ConsumeItemFlammable.java | 1 - .../consumers/ConsumeItemRadioactive.java | 1 - .../consumers/ConsumeLiquidExplosive.java | 32 +++++++++++++++++++ .../world/consumers/ConsumeLiquidFilter.java | 12 ++++++- .../consumers/ConsumeLiquidFlammable.java | 13 ++++---- .../consumers/ConsumeLiquidHeatCapacity.java | 32 +++++++++++++++++++ .../consumers/ConsumeLiquidTemperature.java | 32 +++++++++++++++++++ .../consumers/ConsumeLiquidViscosity.java | 32 +++++++++++++++++++ .../consumers/ConsumeLiquidsDynamic.java | 14 ++++---- 11 files changed, 152 insertions(+), 19 deletions(-) create mode 100644 core/src/mindustry/world/consumers/ConsumeLiquidExplosive.java create mode 100644 core/src/mindustry/world/consumers/ConsumeLiquidHeatCapacity.java create mode 100644 core/src/mindustry/world/consumers/ConsumeLiquidTemperature.java create mode 100644 core/src/mindustry/world/consumers/ConsumeLiquidViscosity.java diff --git a/core/src/mindustry/world/consumers/ConsumeItemCharged.java b/core/src/mindustry/world/consumers/ConsumeItemCharged.java index a06bd71e00..91cb01fa6b 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemCharged.java +++ b/core/src/mindustry/world/consumers/ConsumeItemCharged.java @@ -1,6 +1,5 @@ package mindustry.world.consumers; -import mindustry.gen.*; import mindustry.type.*; import mindustry.world.meta.*; diff --git a/core/src/mindustry/world/consumers/ConsumeItemExplosive.java b/core/src/mindustry/world/consumers/ConsumeItemExplosive.java index 43b807a58b..c7ee0840a9 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemExplosive.java +++ b/core/src/mindustry/world/consumers/ConsumeItemExplosive.java @@ -1,6 +1,5 @@ package mindustry.world.consumers; -import mindustry.gen.*; import mindustry.type.*; import mindustry.world.meta.*; diff --git a/core/src/mindustry/world/consumers/ConsumeItemFlammable.java b/core/src/mindustry/world/consumers/ConsumeItemFlammable.java index dcd9432f6c..840d7158a6 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemFlammable.java +++ b/core/src/mindustry/world/consumers/ConsumeItemFlammable.java @@ -1,6 +1,5 @@ package mindustry.world.consumers; -import mindustry.gen.*; import mindustry.type.*; import mindustry.world.meta.*; diff --git a/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java b/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java index 866ccef898..0d0f11f1d6 100644 --- a/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java +++ b/core/src/mindustry/world/consumers/ConsumeItemRadioactive.java @@ -1,6 +1,5 @@ package mindustry.world.consumers; -import mindustry.gen.*; import mindustry.type.*; import mindustry.world.meta.*; diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidExplosive.java b/core/src/mindustry/world/consumers/ConsumeLiquidExplosive.java new file mode 100644 index 0000000000..3134d145ca --- /dev/null +++ b/core/src/mindustry/world/consumers/ConsumeLiquidExplosive.java @@ -0,0 +1,32 @@ +package mindustry.world.consumers; + +import mindustry.type.*; +import mindustry.world.meta.*; + +public class ConsumeLiquidExplosive extends ConsumeLiquidFilter{ + public float minExplosiveness; + + public ConsumeLiquidExplosive(float minExplosiveness, float amount){ + this.amount = amount; + this.minExplosiveness = minExplosiveness; + this.filter = liquid -> liquid.heatCapacity >= this.minExplosiveness; + } + + public ConsumeLiquidExplosive(float amount){ + this(0.2f, amount); + } + + public ConsumeLiquidExplosive(){ + this(0.2f); + } + + @Override + public void display(Stats stats){ + stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.explosiveness, amount * 60f, filter)); + } + + @Override + public float liquidEfficiencyMultiplier(Liquid liquid){ + return liquid.explosiveness; + } +} diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java b/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java index 7dbaab7043..fd55d6c597 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquidFilter.java @@ -53,7 +53,13 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{ if(ed <= 0.00000001f) return 0f; return liq != null ? Math.min(build.liquids.get(liq) / (amount * ed * multiplier.get(build)), 1f) : 0f; } - + + @Override + public float efficiencyMultiplier(Building build){ + var liq = getConsumed(build); + return liq == null ? 0 : liquidEfficiencyMultiplier(liq); + } + public @Nullable Liquid getConsumed(Building build){ if(filter.get(build.liquids.current()) && build.liquids.currentAmount() > 0){ return build.liquids.current(); @@ -74,4 +80,8 @@ public class ConsumeLiquidFilter extends ConsumeLiquidBase{ public void display(Stats stats){ stats.add(booster ? Stat.booster : Stat.input, StatValues.liquids(filter, amount * 60f, true)); } + + public float liquidEfficiencyMultiplier(Liquid liquid){ + return 1f; + } } diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java b/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java index 0ab32aa70a..df2826b0e7 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquidFlammable.java @@ -1,6 +1,6 @@ package mindustry.world.consumers; -import mindustry.gen.*; +import mindustry.type.*; import mindustry.world.meta.*; public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{ @@ -20,14 +20,13 @@ public class ConsumeLiquidFlammable extends ConsumeLiquidFilter{ this(0.2f); } - @Override - public float efficiencyMultiplier(Building build){ - var liq = getConsumed(build); - return liq == null ? 0f : liq.flammability; - } - @Override public void display(Stats stats){ stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.flammability, amount * 60f, filter)); } + + @Override + public float liquidEfficiencyMultiplier(Liquid liquid){ + return liquid.flammability; + } } diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidHeatCapacity.java b/core/src/mindustry/world/consumers/ConsumeLiquidHeatCapacity.java new file mode 100644 index 0000000000..3d5975626d --- /dev/null +++ b/core/src/mindustry/world/consumers/ConsumeLiquidHeatCapacity.java @@ -0,0 +1,32 @@ +package mindustry.world.consumers; + +import mindustry.type.*; +import mindustry.world.meta.*; + +public class ConsumeLiquidHeatCapacity extends ConsumeLiquidFilter{ + public float minHeatCapacity; + + public ConsumeLiquidHeatCapacity(float minHeatCapacity, float amount){ + this.amount = amount; + this.minHeatCapacity = minHeatCapacity; + this.filter = liquid -> liquid.heatCapacity >= this.minHeatCapacity; + } + + public ConsumeLiquidHeatCapacity(float amount){ + this(0.2f, amount); + } + + public ConsumeLiquidHeatCapacity(){ + this(0.2f); + } + + @Override + public void display(Stats stats){ + stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.heatCapacity, amount * 60f, filter)); + } + + @Override + public float liquidEfficiencyMultiplier(Liquid liquid){ + return liquid.heatCapacity; + } +} diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidTemperature.java b/core/src/mindustry/world/consumers/ConsumeLiquidTemperature.java new file mode 100644 index 0000000000..ca58f2798c --- /dev/null +++ b/core/src/mindustry/world/consumers/ConsumeLiquidTemperature.java @@ -0,0 +1,32 @@ +package mindustry.world.consumers; + +import mindustry.type.*; +import mindustry.world.meta.*; + +public class ConsumeLiquidTemperature extends ConsumeLiquidFilter{ + public float minTemperature; + + public ConsumeLiquidTemperature(float minTemperature, float amount){ + this.amount = amount; + this.minTemperature = minTemperature; + this.filter = liquid -> liquid.temperature >= this.minTemperature; + } + + public ConsumeLiquidTemperature(float amount){ + this(0.2f, amount); + } + + public ConsumeLiquidTemperature(){ + this(0.2f); + } + + @Override + public void display(Stats stats){ + stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.temperature, amount * 60f, filter)); + } + + @Override + public float liquidEfficiencyMultiplier(Liquid liquid){ + return liquid.temperature; + } +} diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidViscosity.java b/core/src/mindustry/world/consumers/ConsumeLiquidViscosity.java new file mode 100644 index 0000000000..8f51569e7d --- /dev/null +++ b/core/src/mindustry/world/consumers/ConsumeLiquidViscosity.java @@ -0,0 +1,32 @@ +package mindustry.world.consumers; + +import mindustry.type.*; +import mindustry.world.meta.*; + +public class ConsumeLiquidViscosity extends ConsumeLiquidFilter{ + public float minViscosity; + + public ConsumeLiquidViscosity(float minViscosity, float amount){ + this.amount = amount; + this.minViscosity = minViscosity; + this.filter = liquid -> liquid.viscosity >= this.minViscosity; + } + + public ConsumeLiquidViscosity(float amount){ + this(0.2f, amount); + } + + public ConsumeLiquidViscosity(){ + this(0.2f); + } + + @Override + public void display(Stats stats){ + stats.add(booster ? Stat.booster : Stat.input, StatValues.liquidEffMultiplier(l -> l.viscosity, amount * 60f, filter)); + } + + @Override + public float liquidEfficiencyMultiplier(Liquid liquid){ + return liquid.viscosity; + } +} diff --git a/core/src/mindustry/world/consumers/ConsumeLiquidsDynamic.java b/core/src/mindustry/world/consumers/ConsumeLiquidsDynamic.java index 9079658629..ae82560ef4 100644 --- a/core/src/mindustry/world/consumers/ConsumeLiquidsDynamic.java +++ b/core/src/mindustry/world/consumers/ConsumeLiquidsDynamic.java @@ -1,12 +1,12 @@ package mindustry.world.consumers; -import arc.func.Func; -import arc.scene.ui.layout.Table; -import mindustry.Vars; -import mindustry.gen.Building; -import mindustry.type.LiquidStack; -import mindustry.ui.ReqImage; -import mindustry.world.Block; +import arc.func.*; +import arc.scene.ui.layout.*; +import mindustry.*; +import mindustry.gen.*; +import mindustry.type.*; +import mindustry.ui.*; +import mindustry.world.*; public class ConsumeLiquidsDynamic extends Consume{ public final Func liquids;