Copy ItemStack functions over to LiquidStack (#5080)

This commit is contained in:
MEEP of Faith 2021-04-08 07:05:37 -07:00 committed by GitHub
parent 5fc4e1f5a5
commit bdf958ed17
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,10 @@
package mindustry.type; package mindustry.type;
import arc.math.*;
import arc.struct.*;
import mindustry.content.*; import mindustry.content.*;
public class LiquidStack{ public class LiquidStack implements Comparable<LiquidStack>{
public Liquid liquid; public Liquid liquid;
public float amount; public float amount;
@ -13,9 +15,60 @@ public class LiquidStack{
/** serialization only*/ /** serialization only*/
protected LiquidStack(){ protected LiquidStack(){
//prevent nulls.
liquid = Liquids.water; 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<LiquidStack> list(Object... items){
Seq<LiquidStack> 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 @Override
public String toString(){ public String toString(){
return "LiquidStack{" + return "LiquidStack{" +