Unicopia/src/main/java/com/minelittlepony/unicopia/Affinity.java

70 lines
1.5 KiB
Java
Raw Normal View History

2020-09-23 17:19:28 +02:00
package com.minelittlepony.unicopia;
2020-01-27 11:05:22 +01:00
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
2020-01-16 12:35:46 +01:00
import net.minecraft.util.Formatting;
2020-01-16 12:35:46 +01:00
public enum Affinity {
GOOD(Formatting.BLUE, -1),
NEUTRAL(Formatting.WHITE, 0),
BAD(Formatting.RED, 1);
2020-01-16 12:35:46 +01:00
private final Formatting color;
private final int corruption;
2020-01-16 12:35:46 +01:00
private Affinity[] implications;
2020-01-16 12:35:46 +01:00
Affinity(Formatting color, int corruption) {
this.color = color;
this.corruption = corruption;
}
2020-01-16 12:35:46 +01:00
public Formatting getColourCode() {
return color;
}
public String getTranslationKey() {
return this == BAD ? "curse" : "spell";
}
2020-01-27 11:05:22 +01:00
public Text getName() {
2020-06-26 11:44:47 +02:00
return new TranslatableText("affinity." + getTranslationKey()).styled(s -> s.withColor(getColourCode()));
2019-03-11 19:50:06 +01:00
}
public int getCorruption() {
return corruption;
}
public boolean isNeutral() {
return this == NEUTRAL;
}
2020-09-23 17:19:28 +02:00
public boolean alignsWith(Affinity other) {
return isNeutral() || other.isNeutral() || this == other;
}
2020-01-16 12:35:46 +01:00
public Affinity[] getImplicators() {
if (implications != null) {
return implications;
}
if (this == NEUTRAL) {
implications = values();
} else {
2020-01-16 12:35:46 +01:00
implications = new Affinity[] { this };
}
return implications;
}
2019-02-08 16:56:28 +01:00
2020-01-16 12:35:46 +01:00
public static Affinity of(String s) {
2019-02-08 16:56:28 +01:00
try {
if (s != null)
return valueOf(s.toUpperCase());
} catch (Throwable e) {}
2020-01-16 12:35:46 +01:00
return Affinity.NEUTRAL;
2019-02-08 16:56:28 +01:00
}
}