package crazypants.enderio.machine.capbank;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
import crazypants.enderio.config.Config;
public class CapBankType {
public static final CapBankType CREATIVE = new CapBankType("CREATIVE", "tile.blockCapBank.creative", 500000, Config.capacitorBankTierTwoMaxStorageRF, false,
true,
"enderio:capacitorBank", "enderio:capacitorBankCreativeBorder", "enderio:capacitorBankInput", "enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
public static final CapBankType SIMPLE = new CapBankType("SIMPLE", "tile.blockCapBank.simple", Config.capacitorBankTierOneMaxIoRF,
Config.capacitorBankTierOneMaxStorageRF,
true,
false, "enderio:capacitorBank", "enderio:capacitorBankSimpleBorder", "enderio:capacitorBankInput", "enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
public static final CapBankType ACTIVATED = new CapBankType("ACTIVATED", "tile.blockCapBank.activated", Config.capacitorBankTierTwoMaxIoRF,
Config.capacitorBankTierTwoMaxStorageRF,
true,
false, "enderio:capacitorBank", "enderio:capacitorBankActivatedBorder", "enderio:capacitorBankInput", "enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
public static final CapBankType VIBRANT = new CapBankType("VIBRANT", "tile.blockCapBank.vibrant", Config.capacitorBankTierThreeMaxIoRF,
Config.capacitorBankTierThreeMaxStorageRF,
true, false, "enderio:capacitorBank", "enderio:capacitorBankVibrantBorder", "enderio:capacitorBankInput", "enderio:capacitorBankOutput",
"enderio:capacitorBankLocked");
private static final List<CapBankType> TYPES = new ArrayList<CapBankType>();
static {
TYPES.add(CREATIVE);
TYPES.add(SIMPLE);
TYPES.add(ACTIVATED);
TYPES.add(VIBRANT);
}
public static List<CapBankType> types() {
return TYPES;
}
public static int getMetaFromType(CapBankType type) {
for (int i = 0; i < TYPES.size(); i++) {
if(TYPES.get(i) == type) {
return i;
}
}
return 1;
}
public static CapBankType getTypeFromMeta(int meta) {
meta = MathHelper.clamp_int(meta, 0, TYPES.size() - 1);
return types().get(meta);
}
public static CapBankType getTypeFromUID(String uid) {
for (CapBankType type : TYPES) {
if(type.uid.equals(uid)) {
return type;
}
}
return ACTIVATED;
}
private final String uid;
private final String unlocalizedName;
private final int maxIO;
private final int maxStored;
private final boolean isMultiblock;
private final boolean isCreative;
private final String icon;
private final String borderIcon;
private final String inputIcon;
private final String outputIcon;
private final String lockedIcon;
public CapBankType(String uid, String unlocalizedName, int maxIO, int maxStored, boolean isMultiblock, boolean isCreative, String icon, String borderIcon,
String inputIcon, String outputIcon, String lockedIcon) {
this.uid = uid;
this.unlocalizedName = unlocalizedName;
this.maxIO = maxIO;
this.maxStored = maxStored;
this.isMultiblock = isMultiblock;
this.isCreative = isCreative;
this.icon = icon;
this.borderIcon = borderIcon;
this.inputIcon = inputIcon;
this.outputIcon = outputIcon;
this.lockedIcon = lockedIcon;
}
public int getMaxIO() {
return maxIO;
}
public int getMaxEnergyStored() {
return maxStored;
}
public boolean isMultiblock() {
return isMultiblock;
}
public boolean isCreative() {
return isCreative;
}
public String getUnlocalizedName() {
return unlocalizedName;
}
public String getIcon() {
return icon;
}
public String getBorderIcon() {
return borderIcon;
}
public String getInputIcon() {
return inputIcon;
}
public String getOutputIcon() {
return outputIcon;
}
public String getLockedIcon() {
return lockedIcon;
}
public String getUid() {
return uid;
}
public void writeTypeToNBT(NBTTagCompound nbtRoot) {
nbtRoot.setString("type", getUid());
}
public static CapBankType readTypeFromNBT(NBTTagCompound nbtRoot) {
if(nbtRoot == null || !nbtRoot.hasKey("type")) {
return ACTIVATED;
}
return getTypeFromUID(nbtRoot.getString("type"));
}
}