From 1d5a3b01841ba7bb2ed7d54675586b7e6fa88c9d Mon Sep 17 00:00:00 2001 From: "Jamin W. Collins" Date: Tue, 27 Mar 2018 18:10:50 -0600 Subject: [PATCH] ensure that SAVs are used for player decision Fixes: core-developers/forge#390 Signed-off-by: Jamin W. Collins --- .../forge/player/PlayerControllerHuman.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java index 576888b80e6..d0a385110d2 100644 --- a/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java +++ b/forge-gui/src/main/java/forge/player/PlayerControllerHuman.java @@ -1537,23 +1537,38 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont } if (needPrompt) { List savedOrder = orderedSALookup.get(saLookupKey); + List orderedSAVs = Lists.newArrayList(); + + // create a mapping between a spell's view and the spell itself + HashMap spellViewCache = new HashMap<>(); + for (SpellAbility spellAbility : orderedSAs) { + spellViewCache.put(spellAbility.getView(), spellAbility); + } if (savedOrder != null) { - orderedSAs = Lists.newArrayList(); + orderedSAVs = Lists.newArrayList(); for (Integer index : savedOrder) { - orderedSAs.add(activePlayerSAs.get(index)); + orderedSAVs.add(activePlayerSAs.get(index).getView()); + } + } else { + for (SpellAbility spellAbility : orderedSAs) { + orderedSAVs.add(spellAbility.getView()); } } if (savedOrder != null) { boolean preselect = FModel.getPreferences() .getPrefBoolean(FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER); - orderedSAs = getGui().order("Reorder simultaneous abilities", "Resolve first", 0, 0, - preselect ? Lists.newArrayList() : orderedSAs, - preselect ? orderedSAs : Lists.newArrayList(), null, false); + orderedSAVs = getGui().order("Reorder simultaneous abilities", "Resolve first", 0, 0, + preselect ? Lists.newArrayList() : orderedSAVs, + preselect ? orderedSAVs : Lists.newArrayList(), null, false); } else { - orderedSAs = getGui().order("Select order for simultaneous abilities", "Resolve first", orderedSAs, + orderedSAVs = getGui().order("Select order for simultaneous abilities", "Resolve first", orderedSAVs, null); } + orderedSAs = Lists.newArrayList(); + for (SpellAbilityView spellAbilityView : orderedSAVs) { + orderedSAs.add(spellViewCache.get(spellAbilityView)); + } // save order to avoid needing to prompt a second time to order // the same abilities savedOrder = Lists.newArrayListWithCapacity(activePlayerSAs.size());