From d19f30e9ab1863d8e63ae46b138c8f4064e8cc58 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 29 Aug 2021 21:11:42 +0800 Subject: [PATCH] Update Venture Effect --- forge-ai/src/main/java/forge/ai/PlayerControllerAi.java | 7 +++++++ .../java/forge/game/ability/effects/VentureEffect.java | 9 ++------- .../main/java/forge/game/player/PlayerController.java | 2 ++ .../main/java/forge/player/PlayerControllerHuman.java | 6 ++++++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java index 923d862b406..60821052be8 100644 --- a/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java +++ b/forge-ai/src/main/java/forge/ai/PlayerControllerAi.java @@ -1291,6 +1291,13 @@ public class PlayerControllerAi extends PlayerController { return SpellApiToAi.Converter.get(api).chooseCardName(player, sa, faces); } + @Override + public Card chooseDungeon(Player player, List dungeonCards, String message) { + //todo AI + int i = MyRandom.getRandom().nextInt(dungeonCards.size()); + return Card.fromPaperCard(dungeonCards.get(i), player); + } + @Override public List chooseCardsForSplice(SpellAbility sa, List cards) { // sort from best to worst diff --git a/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java b/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java index 6c17181028d..8c7cc036900 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/VentureEffect.java @@ -8,7 +8,6 @@ import com.google.common.base.Predicates; import forge.StaticData; import forge.card.CardRulesPredicates; -import forge.card.ICardFace; import forge.game.Game; import forge.game.ability.AbilityKey; import forge.game.ability.SpellAbilityEffect; @@ -45,13 +44,9 @@ public class VentureEffect extends SpellAbilityEffect { // Create a new dungeon card chosen by player in command zone. List dungeonCards = StaticData.instance().getVariantCards().getAllCards( Predicates.compose(CardRulesPredicates.Presets.IS_DUNGEON, PaperCard.FN_GET_RULES)); - List faces = new ArrayList<>(); - for (PaperCard pc : dungeonCards) { - faces.add(pc.getRules().getMainPart()); - } + String message = Localizer.getInstance().getMessage("lblChooseDungeon"); - String chosen = player.getController().chooseCardName(sa, faces, message); - Card dungeon = Card.fromPaperCard(StaticData.instance().getVariantCards().getUniqueByName(chosen), player); + Card dungeon = player.getController().chooseDungeon(player, dungeonCards, message); game.getTriggerHandler().suppressMode(TriggerType.ChangesZone); game.getAction().moveTo(ZoneType.Command, dungeon, sa); diff --git a/forge-game/src/main/java/forge/game/player/PlayerController.java b/forge-game/src/main/java/forge/game/player/PlayerController.java index a11be5b4fdd..73307e15989 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerController.java +++ b/forge-game/src/main/java/forge/game/player/PlayerController.java @@ -261,6 +261,8 @@ public abstract class PlayerController { public abstract String chooseCardName(SpellAbility sa, Predicate cpp, String valid, String message); public abstract String chooseCardName(SpellAbility sa, List faces, String message); + + public abstract Card chooseDungeon(Player player, List dungeonCards, String message); // better to have this odd method than those if playerType comparison in ChangeZone public abstract Card chooseSingleCardForZoneChange(ZoneType destination, List origin, SpellAbility sa, CardCollection fetchList, DelayedReveal delayedReveal, String selectPrompt, boolean isOptional, Player decider); diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index cfab29621f6..27dd70665c9 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -3235,6 +3235,12 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont return face == null ? "" : face.getName(); } + @Override + public Card chooseDungeon(Player player, List dungeonCards, String message) { + PaperCard dungeon = getGui().one(message, dungeonCards); + return Card.fromPaperCard(dungeon, player); + } + @Override public List chooseCardsForSplice(SpellAbility sa, List cards) { GameEntityViewMap gameCacheSplice = GameEntityView.getMap(cards);