From bdf958ed17f664e1e4275f69b800f90f1fafad74 Mon Sep 17 00:00:00 2001 From: MEEP of Faith <54301439+MEEPofFaith@users.noreply.github.com> Date: Thu, 8 Apr 2021 07:05:37 -0700 Subject: [PATCH] Copy ItemStack functions over to LiquidStack (#5080) --- core/src/mindustry/type/LiquidStack.java | 55 +++++++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/type/LiquidStack.java b/core/src/mindustry/type/LiquidStack.java index 4afdd9c034..241c3e6ca3 100644 --- a/core/src/mindustry/type/LiquidStack.java +++ b/core/src/mindustry/type/LiquidStack.java @@ -1,8 +1,10 @@ package mindustry.type; +import arc.math.*; +import arc.struct.*; import mindustry.content.*; -public class LiquidStack{ +public class LiquidStack implements Comparable{ public Liquid liquid; public float amount; @@ -13,9 +15,60 @@ public class LiquidStack{ /** serialization only*/ protected LiquidStack(){ + //prevent nulls. liquid = Liquids.water; } + public LiquidStack set(Liquid liquid, float amount){ + this.liquid = liquid; + this.amount = amount; + return this; + } + + public LiquidStack copy(){ + return new LiquidStack(liquid, amount); + } + + public boolean equals(LiquidStack other){ + return other != null && other.liquid == liquid && other.amount == amount; + } + + public static LiquidStack[] mult(LiquidStack[] stacks, float amount){ + LiquidStack[] copy = new LiquidStack[stacks.length]; + for(int i = 0; i < copy.length; i++){ + copy[i] = new LiquidStack(stacks[i].liquid, Mathf.round(stacks[i].amount * amount)); + } + return copy; + } + + public static LiquidStack[] with(Object... items){ + LiquidStack[] stacks = new LiquidStack[items.length / 2]; + for(int i = 0; i < items.length; i += 2){ + stacks[i / 2] = new LiquidStack((Liquid)items[i], ((Number)items[i + 1]).intValue()); + } + return stacks; + } + + public static Seq list(Object... items){ + Seq stacks = new Seq<>(items.length / 2); + for(int i = 0; i < items.length; i += 2){ + stacks.add(new LiquidStack((Liquid)items[i], ((Number)items[i + 1]).intValue())); + } + return stacks; + } + + @Override + public int compareTo(LiquidStack liquidStack){ + return liquid.compareTo(liquidStack.liquid); + } + + @Override + public boolean equals(Object o){ + if(this == o) return true; + if(!(o instanceof LiquidStack stack)) return false; + return amount == stack.amount && liquid == stack.liquid; + } + @Override public String toString(){ return "LiquidStack{" +