mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
ensure that SAVs are used for player decision
Fixes: core-developers/forge#390 Signed-off-by: Jamin W. Collins <jamin.collins@gmail.com>
This commit is contained in:
@@ -1537,23 +1537,38 @@ public class PlayerControllerHuman extends PlayerController implements IGameCont
|
|||||||
}
|
}
|
||||||
if (needPrompt) {
|
if (needPrompt) {
|
||||||
List<Integer> savedOrder = orderedSALookup.get(saLookupKey);
|
List<Integer> savedOrder = orderedSALookup.get(saLookupKey);
|
||||||
|
List<SpellAbilityView> orderedSAVs = Lists.newArrayList();
|
||||||
|
|
||||||
|
// create a mapping between a spell's view and the spell itself
|
||||||
|
HashMap<SpellAbilityView, SpellAbility> spellViewCache = new HashMap<>();
|
||||||
|
for (SpellAbility spellAbility : orderedSAs) {
|
||||||
|
spellViewCache.put(spellAbility.getView(), spellAbility);
|
||||||
|
}
|
||||||
|
|
||||||
if (savedOrder != null) {
|
if (savedOrder != null) {
|
||||||
orderedSAs = Lists.newArrayList();
|
orderedSAVs = Lists.newArrayList();
|
||||||
for (Integer index : savedOrder) {
|
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) {
|
if (savedOrder != null) {
|
||||||
boolean preselect = FModel.getPreferences()
|
boolean preselect = FModel.getPreferences()
|
||||||
.getPrefBoolean(FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER);
|
.getPrefBoolean(FPref.UI_PRESELECT_PREVIOUS_ABILITY_ORDER);
|
||||||
orderedSAs = getGui().order("Reorder simultaneous abilities", "Resolve first", 0, 0,
|
orderedSAVs = getGui().order("Reorder simultaneous abilities", "Resolve first", 0, 0,
|
||||||
preselect ? Lists.<SpellAbility>newArrayList() : orderedSAs,
|
preselect ? Lists.<SpellAbilityView>newArrayList() : orderedSAVs,
|
||||||
preselect ? orderedSAs : Lists.<SpellAbility>newArrayList(), null, false);
|
preselect ? orderedSAVs : Lists.<SpellAbilityView>newArrayList(), null, false);
|
||||||
} else {
|
} else {
|
||||||
orderedSAs = getGui().order("Select order for simultaneous abilities", "Resolve first", orderedSAs,
|
orderedSAVs = getGui().order("Select order for simultaneous abilities", "Resolve first", orderedSAVs,
|
||||||
null);
|
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
|
// save order to avoid needing to prompt a second time to order
|
||||||
// the same abilities
|
// the same abilities
|
||||||
savedOrder = Lists.newArrayListWithCapacity(activePlayerSAs.size());
|
savedOrder = Lists.newArrayListWithCapacity(activePlayerSAs.size());
|
||||||
|
|||||||
Reference in New Issue
Block a user