ColorEnum: use ITranslatable interface

This commit is contained in:
Hans Mackowiak
2025-09-21 14:43:00 +02:00
parent a4378a20e5
commit 50b7543933
13 changed files with 26 additions and 33 deletions

View File

@@ -1,6 +1,8 @@
package forge.card;
import com.google.common.collect.ImmutableList;
import forge.util.ITranslatable;
import forge.util.Localizer;
/**
@@ -157,7 +159,7 @@ public final class MagicColor {
}
}
public enum Color {
public enum Color implements ITranslatable {
WHITE(Constant.WHITE, MagicColor.WHITE, "W", "lblWhite"),
BLUE(Constant.BLUE, MagicColor.BLUE, "U", "lblBlue"),
BLACK(Constant.BLACK, MagicColor.BLACK, "B", "lblBlack"),
@@ -188,6 +190,7 @@ public final class MagicColor {
}
}
@Override
public String getName() {
return name;
}
@@ -195,7 +198,8 @@ public final class MagicColor {
return shortName;
}
public String getLocalizedName() {
@Override
public String getTranslatedName() {
return Localizer.getInstance().getMessage(label);
}
@@ -205,10 +209,6 @@ public final class MagicColor {
public String getSymbol() {
return symbol;
}
@Override
public String toString() {
return getLocalizedName();
}
}
}

View File

@@ -994,7 +994,7 @@ public class DeckRecognizer {
private static String getMagicColourLabel(MagicColor.Color magicColor) {
if (magicColor == null) // Multicolour
return String.format("%s {W}{U}{B}{R}{G}", getLocalisedMagicColorName("Multicolour"));
return String.format("%s %s", magicColor.getLocalizedName(), magicColor.getSymbol());
return String.format("%s %s", magicColor.getTranslatedName(), magicColor.getSymbol());
}
private static final HashMap<Integer, String> manaSymbolsMap = new HashMap<Integer, String>() {{
@@ -1013,8 +1013,8 @@ public class DeckRecognizer {
if (magicColor2 == null || magicColor2 == MagicColor.Color.COLORLESS
|| magicColor1 == MagicColor.Color.COLORLESS)
return String.format("%s // %s", getMagicColourLabel(magicColor1), getMagicColourLabel(magicColor2));
String localisedName1 = magicColor1.getLocalizedName();
String localisedName2 = magicColor2.getLocalizedName();
String localisedName1 = magicColor1.getTranslatedName();
String localisedName2 = magicColor2.getTranslatedName();
String comboManaSymbol = manaSymbolsMap.get(magicColor1.getColorMask() | magicColor2.getColorMask());
return String.format("%s/%s {%s}", localisedName1, localisedName2, comboManaSymbol);
}

View File

@@ -52,9 +52,4 @@ public interface IPaperCard extends InventoryItem, Serializable {
default String getUntranslatedType() {
return getRules().getType().toString();
}
@Override
default String getUntranslatedOracle() {
return getRules().getOracleText();
}
}

View File

@@ -10,13 +10,11 @@ public interface ITranslatable extends IHasName {
default String getUntranslatedName() {
return getName();
}
default String getTranslatedName() {
return getName();
}
default String getUntranslatedType() {
return "";
}
default String getUntranslatedOracle() {
return "";
}
}

View File

@@ -7849,8 +7849,8 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
return currentState.getUntranslatedType();
}
@Override
public String getUntranslatedOracle() {
return currentState.getUntranslatedOracle();
public String getTranslatedName() {
return CardTranslation.getTranslatedName(this);
}
@Override

View File

@@ -40,6 +40,7 @@ import forge.game.spellability.SpellAbilityPredicates;
import forge.game.spellability.SpellPermanent;
import forge.game.staticability.StaticAbility;
import forge.game.trigger.Trigger;
import forge.util.CardTranslation;
import forge.util.ITranslatable;
import forge.util.IterableUtil;
import forge.util.collect.FCollection;
@@ -946,7 +947,7 @@ public class CardState extends GameObject implements IHasSVars, ITranslatable {
}
@Override
public String getUntranslatedOracle() {
return getOracleText();
public String getTranslatedName() {
return CardTranslation.getTranslatedName(this);
}
}

View File

@@ -1841,8 +1841,8 @@ public class CardView extends GameEntityView {
}
@Override
public String getUntranslatedOracle() {
return getOracleText();
public String getTranslatedName() {
return CardTranslation.getTranslatedName(this);
}
}

View File

@@ -3,7 +3,6 @@ package forge.game.event;
import forge.card.CardStateName;
import forge.game.card.Card;
import forge.game.player.Player;
import forge.util.CardTranslation;
import forge.util.Lang;
public record GameEventDoorChanged(Player activatingPlayer, Card card, CardStateName state, boolean unlock) implements GameEvent {
@@ -15,7 +14,7 @@ public record GameEventDoorChanged(Player activatingPlayer, Card card, CardState
@Override
public String toString() {
String doorName = CardTranslation.getTranslatedName(card.getState(state));
String doorName = card.getState(state).getTranslatedName();
StringBuilder sb = new StringBuilder();
sb.append(activatingPlayer);

View File

@@ -242,7 +242,7 @@ public abstract class ReplacementEffect extends TriggerReplacementBase {
String desc = AbilityUtils.applyDescriptionTextChangeEffects(getParam("Description"), this);
ITranslatable nameSource = getHostName(this);
desc = CardTranslation.translateMultipleDescriptionText(desc, nameSource);
String translatedName = CardTranslation.getTranslatedName(nameSource);
String translatedName = nameSource.getTranslatedName();
desc = TextUtil.fastReplace(desc, "CARDNAME", translatedName);
desc = TextUtil.fastReplace(desc, "NICKNAME", Lang.getInstance().getNickName(translatedName));
if (desc.contains("EFFECTSOURCE")) {

View File

@@ -1121,7 +1121,7 @@ public abstract class SpellAbility extends CardTraitBase implements ISpellAbilit
if (node.getHostCard() != null && !desc.isEmpty()) {
ITranslatable nameSource = getHostName(node);
desc = CardTranslation.translateMultipleDescriptionText(desc, nameSource);
String translatedName = CardTranslation.getTranslatedName(nameSource);
String translatedName = nameSource.getTranslatedName();
desc = TextUtil.fastReplace(desc, "CARDNAME", translatedName);
desc = TextUtil.fastReplace(desc, "NICKNAME", Lang.getInstance().getNickName(translatedName));
if (node.getOriginalHost() != null) {

View File

@@ -206,7 +206,7 @@ public class StaticAbility extends CardTraitBase implements IIdentifiable, Clone
if (hasParam("Description") && !this.isSuppressed()) {
ITranslatable nameSource = getHostName(this);
String desc = CardTranslation.translateSingleDescriptionText(getParam("Description"), nameSource);
String translatedName = CardTranslation.getTranslatedName(nameSource);
String translatedName = nameSource.getTranslatedName();
desc = TextUtil.fastReplace(desc, "CARDNAME", translatedName);
desc = TextUtil.fastReplace(desc, "NICKNAME", Lang.getInstance().getNickName(translatedName));

View File

@@ -124,7 +124,7 @@ public abstract class Trigger extends TriggerReplacementBase {
String desc = getParam("TriggerDescription");
if (!desc.contains("ABILITY")) {
desc = CardTranslation.translateSingleDescriptionText(getParam("TriggerDescription"), nameSource);
String translatedName = CardTranslation.getTranslatedName(nameSource);
String translatedName = nameSource.getTranslatedName();
desc = TextUtil.fastReplace(desc,"CARDNAME", translatedName);
desc = TextUtil.fastReplace(desc,"NICKNAME", Lang.getInstance().getNickName(translatedName));
if (desc.contains("ORIGINALHOST") && this.getOriginalHost() != null) {
@@ -218,7 +218,7 @@ public abstract class Trigger extends TriggerReplacementBase {
result = TextUtil.fastReplace(result, "ABILITY", saDesc);
result = CardTranslation.translateMultipleDescriptionText(result, sa.getHostCard());
String translatedName = CardTranslation.getTranslatedName(sa.getHostCard());
String translatedName = sa.getHostCard().getTranslatedName();
result = TextUtil.fastReplace(result,"CARDNAME", translatedName);
result = TextUtil.fastReplace(result,"NICKNAME", Lang.getInstance().getNickName(translatedName));
}

View File

@@ -451,7 +451,7 @@ public class CardDetailUtil {
if (card.getMarkedColors() != null && !card.getMarkedColors().isColorless()) {
area.append("\n");
area.append("(").append(Localizer.getInstance().getMessage("lblSelected")).append(": ");
area.append(Lang.joinHomogenous(card.getMarkedColors().stream().map(MagicColor.Color::getLocalizedName).collect(Collectors.toList())));
area.append(Lang.joinHomogenous(card.getMarkedColors().stream().map(MagicColor.Color::getTranslatedName).collect(Collectors.toList())));
area.append(")");
}