package crazypants.enderio.machine;
import net.minecraft.util.EnumChatFormatting;
import crazypants.enderio.EnderIO;
import crazypants.enderio.conduit.ConnectionMode;
public enum IoMode {
NONE("gui.machine.ioMode.none"),
PULL("gui.machine.ioMode.pull"),
PUSH("gui.machine.ioMode.push"),
PUSH_PULL("gui.machine.ioMode.pullPush"),
DISABLED("gui.machine.ioMode.disabled");
private final String unlocalisedName;
IoMode(String unlocalisedName) {
this.unlocalisedName = unlocalisedName;
}
public String getUnlocalisedName() {
return unlocalisedName;
}
public static ConnectionMode getNext(ConnectionMode mode) {
int ord = mode.ordinal() + 1;
if(ord >= ConnectionMode.values().length) {
ord = 0;
}
return ConnectionMode.values()[ord];
}
public static ConnectionMode getPrevious(ConnectionMode mode) {
int ord = mode.ordinal() - 1;
if(ord < 0) {
ord = ConnectionMode.values().length - 1;
}
return ConnectionMode.values()[ord];
}
public boolean pulls() {
return this == PULL || this == PUSH_PULL;
}
public boolean pushes() {
return this == PUSH || this == PUSH_PULL;
}
public boolean canOutput() {
return pushes() || this == NONE;
}
public boolean canRecieveInput() {
return pulls() || this == NONE;
}
public String getLocalisedName() {
return EnderIO.lang.localize(unlocalisedName);
}
public String colorLocalisedName() {
String loc = getLocalisedName();
switch (this) {
case DISABLED:
return EnumChatFormatting.RED + loc;
case NONE:
return EnumChatFormatting.GRAY + loc;
case PULL:
return EnumChatFormatting.AQUA + loc;
case PUSH:
return EnumChatFormatting.GOLD + loc;
case PUSH_PULL:
return String.format(EnderIO.lang.localize(this.getUnlocalisedName() + ".colored"), EnumChatFormatting.GOLD, EnumChatFormatting.WHITE, EnumChatFormatting.AQUA);
default: return loc;
}
}
public IoMode next() {
int index = ordinal() + 1;
if(index >= values().length) {
index = 0;
}
return values()[index];
}
}