88 lines
2.3 KiB
Java
88 lines
2.3 KiB
Java
package magic.model;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public enum MagicManaType {
|
|
|
|
Colorless("colorless","{C}"),
|
|
White("white","{W}"),
|
|
Blue("blue","{U}"),
|
|
Black("black","{B}"),
|
|
Red("red","{R}"),
|
|
Green("green","{G}"),
|
|
Snow("snow","{S}"),
|
|
NONE("none","{N}")
|
|
;
|
|
|
|
private static final List<MagicManaType> ALL_COLORS = Collections.unmodifiableList(
|
|
Arrays.asList(White,Blue,Black,Red,Green)
|
|
);
|
|
|
|
// Colorless must be in front.
|
|
private static final List<MagicManaType> ALL_TYPES = Collections.unmodifiableList(
|
|
Arrays.asList(Colorless,White,Blue,Black,Red,Green,Snow)
|
|
);
|
|
|
|
public static final int NR_OF_TYPES = ALL_TYPES.size();
|
|
|
|
private final String name;
|
|
private final String text;
|
|
|
|
private MagicManaType(final String name, final String text) {
|
|
this.name=name;
|
|
this.text=text;
|
|
}
|
|
|
|
public boolean isValid() {
|
|
return this != MagicManaType.NONE;
|
|
}
|
|
|
|
public String getName() {
|
|
return name;
|
|
}
|
|
|
|
public String getText() {
|
|
return text;
|
|
}
|
|
|
|
public static MagicManaType get(final String name) {
|
|
for (final MagicManaType type : values()) {
|
|
if (type.toString().equalsIgnoreCase(name)) {
|
|
return type;
|
|
}
|
|
}
|
|
throw new RuntimeException("unknown mana type \"" + name + "\"");
|
|
}
|
|
|
|
public static List<MagicManaType> getList(final String name) {
|
|
if ("one mana of any color".equals(name)) {
|
|
return ALL_COLORS;
|
|
} else {
|
|
final String[] tokens = name.split("( or |, or |, )");
|
|
final MagicManaType[] types = new MagicManaType[tokens.length];
|
|
for (int i = 0; i < tokens.length; i++) {
|
|
types[i] = get(tokens[i]);
|
|
}
|
|
return Arrays.asList(types);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return text;
|
|
}
|
|
|
|
public MagicColor getColor() {
|
|
switch (this) {
|
|
case Black: return MagicColor.Black;
|
|
case Blue: return MagicColor.Blue;
|
|
case Green: return MagicColor.Green;
|
|
case Red: return MagicColor.Red;
|
|
case White: return MagicColor.White;
|
|
default: throw new RuntimeException("No color available for MagicManaType " + this);
|
|
}
|
|
}
|
|
}
|