/**
* Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
* <p/>
* BuildCraft is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* http://www.mod-buildcraft.com/MMPL-1.0.txt
*/
package buildcraft.transport.gates;
import java.util.Locale;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import buildcraft.core.lib.utils.StringUtils;
public final class GateDefinition {
private GateDefinition() {
}
public static String getLocalizedName(GateMaterial material, GateLogic logic) {
if (material == GateMaterial.REDSTONE) {
return StringUtils.localize("gate.name.basic");
} else {
return String.format(StringUtils.localize("gate.name"), StringUtils.localize("gate.material." + material.getTag()),
StringUtils.localize("gate.logic." + logic.getTag()));
}
}
public enum GateMaterial {
REDSTONE("gate_interface_1.png", 146, 1, 0, 0, 1),
IRON("gate_interface_2.png", 164, 2, 0, 0, 2),
GOLD("gate_interface_3.png", 200, 4, 1, 0, 3),
DIAMOND("gate_interface_4.png", 200, 8, 1, 0, 4),
EMERALD("gate_interface_5.png", 200, 4, 3, 3, 4),
QUARTZ("gate_interface_6.png", 164, 2, 1, 1, 3);
public static final GateMaterial[] VALUES = values();
public final ResourceLocation guiFile;
public final int guiHeight;
public final int numSlots;
public final int numTriggerParameters;
public final int numActionParameters;
public final int maxWireColor;
@SideOnly(Side.CLIENT)
private IIcon iconBlock;
@SideOnly(Side.CLIENT)
private IIcon iconItem;
GateMaterial(String guiFile, int guiHeight, int numSlots, int triggerParameterSlots,
int actionParameterSlots, int maxWireColor) {
this.guiFile = new ResourceLocation("buildcrafttransport:textures/gui/" + guiFile);
this.guiHeight = guiHeight;
this.numSlots = numSlots;
this.numTriggerParameters = triggerParameterSlots;
this.numActionParameters = actionParameterSlots;
this.maxWireColor = maxWireColor;
}
@SideOnly(Side.CLIENT)
public IIcon getIconBlock() {
return iconBlock;
}
@SideOnly(Side.CLIENT)
public IIcon getIconItem() {
return iconItem;
}
public String getTag() {
return name().toLowerCase(Locale.ENGLISH);
}
@SideOnly(Side.CLIENT)
public void registerBlockIcon(IIconRegister iconRegister) {
if (this != REDSTONE) {
iconBlock = iconRegister.registerIcon("buildcrafttransport:gates/gate_material_" + getTag());
}
}
@SideOnly(Side.CLIENT)
public void registerItemIcon(IIconRegister iconRegister) {
if (this != REDSTONE) {
iconItem = iconRegister.registerIcon("buildcrafttransport:gates/gate_material_" + getTag());
}
}
public static GateMaterial fromOrdinal(int ordinal) {
if (ordinal < 0 || ordinal >= VALUES.length) {
return REDSTONE;
}
return VALUES[ordinal];
}
}
public enum GateLogic {
AND, OR;
public static final GateLogic[] VALUES = values();
@SideOnly(Side.CLIENT)
private IIcon iconLit;
@SideOnly(Side.CLIENT)
private IIcon iconDark;
@SideOnly(Side.CLIENT)
private IIcon iconItem;
@SideOnly(Side.CLIENT)
private IIcon iconGate;
@SideOnly(Side.CLIENT)
public IIcon getIconLit() {
return iconLit;
}
@SideOnly(Side.CLIENT)
public IIcon getIconDark() {
return iconDark;
}
@SideOnly(Side.CLIENT)
public IIcon getGateIcon() {
return iconGate;
}
@SideOnly(Side.CLIENT)
public IIcon getIconItem() {
return iconItem;
}
public String getTag() {
return name().toLowerCase(Locale.ENGLISH);
}
@SideOnly(Side.CLIENT)
public void registerBlockIcon(IIconRegister iconRegister) {
iconLit = iconRegister.registerIcon("buildcrafttransport:gates/gate_" + getTag() + "_lit");
iconDark = iconRegister.registerIcon("buildcrafttransport:gates/gate_" + getTag() + "_dark");
iconGate = iconRegister.registerIcon("buildcrafttransport:gates/gate_" + getTag());
}
@SideOnly(Side.CLIENT)
public void registerItemIcon(IIconRegister iconRegister) {
iconItem = iconRegister.registerIcon("buildcrafttransport:gates/gate_logic_" + getTag());
}
public static GateLogic fromOrdinal(int ordinal) {
if (ordinal < 0 || ordinal >= VALUES.length) {
return AND;
}
return VALUES[ordinal];
}
}
}