aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gregtech/api/util/GasSpargingRecipe.java
blob: 493c31dc65ffb6b8dc46ed84078ac007495f57c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package gregtech.api.util;

import gtPlusPlus.api.objects.data.AutoMap;
import gtPlusPlus.core.util.data.ArrayUtils;
import gtPlusPlus.core.util.minecraft.ItemUtils;
import gtPlusPlus.core.util.minecraft.MaterialUtils;
import net.minecraftforge.fluids.FluidStack;

public class GasSpargingRecipe implements Comparable<GasSpargingRecipe> {

	public final FluidStack mInputGas;
	public final FluidStack mInputSpentFuel;
	public final FluidStack mOutputSpargedFuel;
	public final int[] mMaxOutputQuantity;
	public final FluidStack[] mFluidInputs;
	public final FluidStack[] mFluidOutputs;
	public final int mDuration;
	public final int mEUt;

	public GasSpargingRecipe(FluidStack aSpargeGas, FluidStack aSpentFuel, FluidStack aSpargedFuel, FluidStack[] aOutputs, int[] aMaxOutputQuantity) {
		mInputGas = aSpargeGas;
		mInputSpentFuel = aSpentFuel;
		mOutputSpargedFuel = aSpargedFuel;
		mFluidInputs = new FluidStack[] {mInputGas, mInputSpentFuel};
		aOutputs = ArrayUtils.insertElementAtIndex(aOutputs, 0, aSpargeGas);
		aOutputs = ArrayUtils.insertElementAtIndex(aOutputs, 1, aSpargedFuel);
		mFluidOutputs = aOutputs;
		mMaxOutputQuantity = aMaxOutputQuantity;
		mDuration = 20 * 60 * 5;
		mEUt = MaterialUtils.getVoltageForTier(3);
	}

	@Override
	public boolean equals(Object o) {
		if (o instanceof GasSpargingRecipe) {
			GasSpargingRecipe i = (GasSpargingRecipe) o;
			if (this.mInputGas.equals(i.mInputGas) && this.mInputSpentFuel.equals(i.mInputSpentFuel)) {
				return true;
			}
		}
		return false;
	}

	public int getMaxOutput(int aIndex) {
		if (aIndex == 0) {
			return mInputGas.amount * 100;
		}
		else if (aIndex == 1) {
			return mOutputSpargedFuel.amount * 100;
		}
		aIndex -= 2;
		if ((aIndex < 0) || (aIndex >= this.mMaxOutputQuantity.length)) {
			return 10000;
		}
		return this.mMaxOutputQuantity[aIndex];
	}

	public boolean isValid() {
		if (mInputGas == null || mInputGas.amount <= 0 ||
				mInputSpentFuel == null || mInputSpentFuel.amount <= 0 ||
				mFluidOutputs == null || mFluidOutputs.length < 1 ||
				mMaxOutputQuantity == null || mMaxOutputQuantity.length < 1 ||
				mFluidOutputs.length != mMaxOutputQuantity.length) {
			return false;
		}
		return true;
	}
	
	public boolean containsInputs(FluidStack aSpargeGas, FluidStack aSpentFuel) {
		if (aSpargeGas != null && aSpargeGas.getFluid().equals(this.mInputGas.getFluid())) {
			if (aSpentFuel != null && aSpentFuel.getFluid().equals(this.mInputSpentFuel.getFluid())) {
				return true;
			}
		}
		return false;
	}

	@Override
	public int compareTo(GasSpargingRecipe o) {
		if (o.mFluidOutputs.length > this.mFluidOutputs.length) {
			return 1;
		} else if (o.mFluidOutputs.length == this.mFluidOutputs.length) {
			return 0;
		} else {
			return -1;
		}
	}
	
	public String[] getRecipeInfo() {
		AutoMap<String> result = new AutoMap<String>();
		result.put("Input "+ItemUtils.getArrayStackNames(mFluidInputs));
		result.put("Output "+ItemUtils.getArrayStackNames(mFluidOutputs));
		result.put("Duration: "+mDuration);
		result.put("EU/t: "+mEUt);	
		String s[] = result.toArray();	
		return s;
	}

}