support choose localization card name

This commit is contained in:
CCTV-1
2020-01-28 09:17:23 +08:00
parent 8a0ba4f27a
commit 2f1bdc5767
2 changed files with 35 additions and 13 deletions

View File

@@ -3,24 +3,40 @@ package forge.game.card;
import java.io.Serializable; import java.io.Serializable;
public class CardFaceView implements Serializable, Comparable<CardFaceView> { public class CardFaceView implements Serializable, Comparable<CardFaceView> {
private String name; /**
*
*/
private static final long serialVersionUID = 1874016432028306386L;
private String displayName;
private String oracleName;
public CardFaceView(String faceName) { public CardFaceView(String displayName) {
this.name = faceName; 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) { 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() { public String toString() {
return name; return displayName;
} }
@Override @Override
public int compareTo(CardFaceView o) { public int compareTo(CardFaceView o) {
return this.getName().compareTo(o.getName()); return this.getOracleName().compareTo(o.getOracleName());
} }
} }

View File

@@ -1561,12 +1561,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
CardFaceView cardFaceView; CardFaceView cardFaceView;
List<CardFaceView> choices = new ArrayList<>(); List<CardFaceView> choices = new ArrayList<>();
for (ICardFace cardFace : cards) { for (ICardFace cardFace : cards) {
cardFaceView = new CardFaceView(cardFace.getName()); cardFaceView = new CardFaceView(CardTranslation.getTranslatedName(cardFace.getName()), cardFace.getName());
choices.add(cardFaceView); choices.add(cardFaceView);
} }
Collections.sort(choices); Collections.sort(choices);
cardFaceView = getGui().one(message, choices); cardFaceView = getGui().one(message, choices);
return StaticData.instance().getCommonCards().getFaceByName(cardFaceView.getName()); return StaticData.instance().getCommonCards().getFaceByName(cardFaceView.getOracleName());
} }
@Override @Override
@@ -1960,7 +1960,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
} }
public class DevModeCheats implements IDevModeCheats { public class DevModeCheats implements IDevModeCheats {
private ICardFace lastAdded; private CardFaceView lastAdded;
private ZoneType lastAddedZone; private ZoneType lastAddedZone;
private Player lastAddedPlayer; private Player lastAddedPlayer;
private SpellAbility lastAddedSA; private SpellAbility lastAddedSA;
@@ -2363,15 +2363,21 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
final CardDb carddb = FModel.getMagicDb().getCommonCards(); final CardDb carddb = FModel.getMagicDb().getCommonCards();
final List<ICardFace> faces = Lists.newArrayList(carddb.getAllFaces()); final List<ICardFace> faces = Lists.newArrayList(carddb.getAllFaces());
Collections.sort(faces); List<CardFaceView> 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 // 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) { if (f == null) {
return; return;
} }
final PaperCard c = carddb.getUniqueByName(f.getName()); final PaperCard c = carddb.getUniqueByName(f.getOracleName());
final Card forgeCard = Card.fromPaperCard(c, p); final Card forgeCard = Card.fromPaperCard(c, p);
game.getAction().invoke(new Runnable() { game.getAction().invoke(new Runnable() {