diff --git a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java index 3e486f35043..a27bc73f4ca 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ChangeZoneEffect.java @@ -752,10 +752,10 @@ public class ChangeZoneEffect extends SpellAbilityEffect { if (optional) { String prompt; if (defined) { - prompt = Localizer.getInstance().getMessage("lblPutThatCardFromPlayerOriginToDestination", "{player's}", Lang.joinHomogenous(origin).toLowerCase(), destination.name().toLowerCase()); + prompt = Localizer.getInstance().getMessage("lblPutThatCardFromPlayerOriginToDestination", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase(), destination.name().toLowerCase()); } else { - prompt = Localizer.getInstance().getMessage("lblSearchPlayerZoneConfirm", "{player's}", Lang.joinHomogenous(origin).toLowerCase()); + prompt = Localizer.getInstance().getMessage("lblSearchPlayerZoneConfirm", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase()); } String message = MessageUtil.formatMessage(prompt , decider, player); if (!decider.getController().confirmAction(sa, PlayerActionConfirmMode.ChangeZoneGeneral, message)) { @@ -861,7 +861,7 @@ public class ChangeZoneEffect extends SpellAbilityEffect { final boolean champion = sa.hasParam("Champion"); final boolean forget = sa.hasParam("ForgetChanged"); final boolean imprint = sa.hasParam("Imprint"); - String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardFromPlayerZone", "{player's}", Lang.joinHomogenous(origin).toLowerCase()), decider, player); + String selectPrompt = sa.hasParam("SelectPrompt") ? sa.getParam("SelectPrompt") : MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardFromPlayerZone", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase()), decider, player); final String totalcmc = sa.getParam("WithTotalCMC"); int totcmc = AbilityUtils.calculateAmount(source, totalcmc, sa); @@ -875,9 +875,9 @@ public class ChangeZoneEffect extends SpellAbilityEffect { // new default messaging for multi select if (fetchList.size() > changeNum) { //Select up to %changeNum cards from %players %origin - selectPrompt = MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectUpToNumCardFromPlayerZone", String.valueOf(changeNum), "{player's}", Lang.joinHomogenous(origin).toLowerCase()), decider, player); + selectPrompt = MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectUpToNumCardFromPlayerZone", String.valueOf(changeNum), "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase()), decider, player); } else { - selectPrompt = MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardsFromPlayerZone", "{player's}", Lang.joinHomogenous(origin).toLowerCase()), decider, player); + selectPrompt = MessageUtil.formatMessage(Localizer.getInstance().getMessage("lblSelectCardsFromPlayerZone", "{player's}", Lang.joinHomogenous(origin, ZoneType.Accessors.GET_TRANSLATED_NAME).toLowerCase()), decider, player); } } // ensure that selection is within maximum allowed changeNum diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java index bac2d4a7887..e1cf5cd9527 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigEffect.java @@ -246,7 +246,7 @@ public class DigEffect extends SpellAbilityEffect { if (sa.hasParam("PrimaryPrompt")) { prompt = sa.getParam("PrimaryPrompt"); } else { - prompt = Localizer.getInstance().getMessage("lblChooseCardsPutIntoZone", destZone1.name()); + prompt = Localizer.getInstance().getMessage("lblChooseCardsPutIntoZone", destZone1.getTranslatedName()); if (destZone1.equals(ZoneType.Library)) { if (libraryPosition == -1) { prompt = Localizer.getInstance().getMessage("lblChooseCardPutOnTargetLibarayBottom", "{player's}"); diff --git a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java index dfa8b989fd5..b99c372277e 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/DigUntilEffect.java @@ -160,7 +160,7 @@ public class DigUntilEffect extends SpellAbilityEffect { final Card c = itr.next(); final ZoneType origin = c.getZone().getZoneType(); if (optionalFound && !p.getController().confirmAction(sa, null, - Localizer.getInstance().getMessage("lblDoYouWantPutCardToZone", foundDest.name()))) { + Localizer.getInstance().getMessage("lblDoYouWantPutCardToZone", foundDest.getTranslatedName()))) { continue; } else { Card m = null; diff --git a/forge-game/src/main/java/forge/game/zone/ZoneType.java b/forge-game/src/main/java/forge/game/zone/ZoneType.java index 3383a83cb14..e9157309546 100644 --- a/forge-game/src/main/java/forge/game/zone/ZoneType.java +++ b/forge-game/src/main/java/forge/game/zone/ZoneType.java @@ -1,32 +1,38 @@ package forge.game.zone; +import forge.util.Localizer; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import com.google.common.base.Function; + /** * The Enum Zone. */ public enum ZoneType { - Hand(true), - Library(true), - Graveyard(false), - Battlefield(false), - Exile(false), - Flashback(false), - Command(false), - Stack(false), - Sideboard(true), - Ante(false), - SchemeDeck(true), - PlanarDeck(true), - None(true); + Hand(true, Localizer.getInstance().getMessage("lblHandZone")), + Library(true, Localizer.getInstance().getMessage("lblLibraryZone")), + Graveyard(false, Localizer.getInstance().getMessage("lblGraveyardZone")), + Battlefield(false, Localizer.getInstance().getMessage("lblBattlefieldZone")), + Exile(false, Localizer.getInstance().getMessage("lblExileZone")), + Flashback(false, Localizer.getInstance().getMessage("lblFlashbackZone")), + Command(false, Localizer.getInstance().getMessage("lblCommandZone")), + Stack(false, Localizer.getInstance().getMessage("lblStackZone")), + Sideboard(true, Localizer.getInstance().getMessage("lblSideboardZone")), + Ante(false, Localizer.getInstance().getMessage("lblAnteZone")), + SchemeDeck(true, Localizer.getInstance().getMessage("lblSchemeDeckZone")), + PlanarDeck(true, Localizer.getInstance().getMessage("lblPlanarDeckZone")), + None(true, Localizer.getInstance().getMessage("lblNoneZone")); public static final List STATIC_ABILITIES_SOURCE_ZONES = Arrays.asList(Battlefield, Graveyard, Exile, Command/*, Hand*/); private final boolean holdsHiddenInfo; - ZoneType(boolean holdsHidden) { + private final String zoneName; + ZoneType(boolean holdsHidden, String name) { holdsHiddenInfo = holdsHidden; + zoneName = name; } public static ZoneType smartValueOf(final String value) { @@ -64,6 +70,10 @@ public enum ZoneType { return !holdsHiddenInfo; } + public String getTranslatedName() { + return zoneName; + } + public static boolean isHidden(final String origin) { List zone = ZoneType.listValueOf(origin); @@ -82,4 +92,13 @@ public enum ZoneType { public static boolean isKnown(final String origin) { return !isHidden(origin); } + + public static class Accessors { + public static Function GET_TRANSLATED_NAME = new Function() { + @Override + public String apply(final ZoneType arg0) { + return arg0.getTranslatedName(); + } + }; + } } diff --git a/forge-gui/src/main/java/forge/player/HumanPlay.java b/forge-gui/src/main/java/forge/player/HumanPlay.java index de51420b4b5..9fda7312c54 100644 --- a/forge-gui/src/main/java/forge/player/HumanPlay.java +++ b/forge-gui/src/main/java/forge/player/HumanPlay.java @@ -504,7 +504,7 @@ public class HumanPlay { // replace this with input CardCollection newList = new CardCollection(); for (int i = 0; i < nNeeded; i++) { - final Card c = p.getGame().getCard(SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblExileFromZone", from.toString()), CardView.getCollection(list))); + final Card c = p.getGame().getCard(SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblExileFromZone", from.getTranslatedName()), CardView.getCollection(list))); if (c == null) { return false; } @@ -540,7 +540,7 @@ public class HumanPlay { payableZone.add(player); } } - Player chosen = controller.getGame().getPlayer(SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblPutCardFromWhoseZone", from.toString()), PlayerView.getCollection(payableZone))); + Player chosen = controller.getGame().getPlayer(SGuiChoose.oneOrNone(Localizer.getInstance().getMessage("lblPutCardFromWhoseZone", from.getTranslatedName()), PlayerView.getCollection(payableZone))); if (chosen == null) { return false; } diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 29e7cbb0a82..650479a14a7 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -733,9 +733,9 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont @Override public void reveal(final List cards, final ZoneType zone, final PlayerView owner, String message) { if (StringUtils.isBlank(message)) { - message = localizer.getMessage("lblLookCardInPlayerZone", "{player's}", zone.name().toLowerCase()); + message = localizer.getMessage("lblLookCardInPlayerZone", "{player's}", zone.getTranslatedName().toLowerCase()); } else { - message += localizer.getMessage("lblPlayerZone", "{player's}", zone.name().toLowerCase()); + message += localizer.getMessage("lblPlayerZone", "{player's}", zone.getTranslatedName().toLowerCase()); } final String fm = MessageUtil.formatMessage(message, getLocalPlayerView(), owner); if (!cards.isEmpty()) { @@ -743,7 +743,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont getGui().reveal(fm, cards); endTempShowCards(); } else { - getGui().message(MessageUtil.formatMessage(localizer.getMessage("lblThereNoCardInPlayerZone", "{player's}", zone.name().toLowerCase()), + getGui().message(MessageUtil.formatMessage(localizer.getMessage("lblThereNoCardInPlayerZone", "{player's}", zone.getTranslatedName().toLowerCase()), player, owner), fm); } } @@ -2366,7 +2366,7 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont final ZoneType targetZone = repeatLast ? lastAddedZone : zone; String message = null; if (targetZone != ZoneType.Battlefield) { - message = localizer.getMessage("lblPutCardInWhichPlayerZone", targetZone.name().toLowerCase()); + message = localizer.getMessage("lblPutCardInWhichPlayerZone", targetZone.getTranslatedName().toLowerCase()); } else { if (noTriggers) {