From 2f1bdc57670e914ae4f79d44068cc97c47236421 Mon Sep 17 00:00:00 2001 From: CCTV-1 Date: Tue, 28 Jan 2020 09:17:23 +0800 Subject: [PATCH] support choose localization card name --- .../java/forge/game/card/CardFaceView.java | 30 ++++++++++++++----- .../forge/player/PlayerControllerHuman.java | 18 +++++++---- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/forge-game/src/main/java/forge/game/card/CardFaceView.java b/forge-game/src/main/java/forge/game/card/CardFaceView.java index 89bc857b003..435bde9c43a 100644 --- a/forge-game/src/main/java/forge/game/card/CardFaceView.java +++ b/forge-game/src/main/java/forge/game/card/CardFaceView.java @@ -3,24 +3,40 @@ package forge.game.card; import java.io.Serializable; public class CardFaceView implements Serializable, Comparable { - private String name; + /** + * + */ + private static final long serialVersionUID = 1874016432028306386L; + private String displayName; + private String oracleName; - public CardFaceView(String faceName) { - this.name = faceName; + public CardFaceView(String displayName) { + this(displayName, displayName); } - public String getName() { return name;} + public CardFaceView(String displayFaceName, String oracleFaceName ) { + this.displayName = displayFaceName; + this.oracleName = oracleFaceName; + } + + public String getName() { return displayName;} public void setName(String name) { - this.name = name; + this.displayName = name; + } + + public String getOracleName() { return oracleName; } + + public void setOracleName(String name) { + this.oracleName = name; } public String toString() { - return name; + return displayName; } @Override public int compareTo(CardFaceView o) { - return this.getName().compareTo(o.getName()); + return this.getOracleName().compareTo(o.getOracleName()); } } \ No newline at end of file diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 37bcafa370d..618b21e6239 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1561,12 +1561,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont CardFaceView cardFaceView; List choices = new ArrayList<>(); for (ICardFace cardFace : cards) { - cardFaceView = new CardFaceView(cardFace.getName()); + cardFaceView = new CardFaceView(CardTranslation.getTranslatedName(cardFace.getName()), cardFace.getName()); choices.add(cardFaceView); } Collections.sort(choices); cardFaceView = getGui().one(message, choices); - return StaticData.instance().getCommonCards().getFaceByName(cardFaceView.getName()); + return StaticData.instance().getCommonCards().getFaceByName(cardFaceView.getOracleName()); } @Override @@ -1960,7 +1960,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont } public class DevModeCheats implements IDevModeCheats { - private ICardFace lastAdded; + private CardFaceView lastAdded; private ZoneType lastAddedZone; private Player lastAddedPlayer; private SpellAbility lastAddedSA; @@ -2363,15 +2363,21 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont final CardDb carddb = FModel.getMagicDb().getCommonCards(); final List faces = Lists.newArrayList(carddb.getAllFaces()); - Collections.sort(faces); + List choices = new ArrayList<>(); + CardFaceView cardFaceView; + for (ICardFace cardFace : faces) { + cardFaceView = new CardFaceView(CardTranslation.getTranslatedName(cardFace.getName()), cardFace.getName()); + choices.add(cardFaceView); + } + Collections.sort(choices); // use standard forge's list selection dialog - final ICardFace f = repeatLast ? lastAdded : getGui().oneOrNone(localizer.getMessage("lblNameTheCard"), faces); + final CardFaceView f = repeatLast ? lastAdded : getGui().oneOrNone(localizer.getMessage("lblNameTheCard"), choices); if (f == null) { return; } - final PaperCard c = carddb.getUniqueByName(f.getName()); + final PaperCard c = carddb.getUniqueByName(f.getOracleName()); final Card forgeCard = Card.fromPaperCard(c, p); game.getAction().invoke(new Runnable() {