Merge branch 'combatPhaseHandlerFix' into 'master'

Combat: initConstraints before Declare Attackers

See merge request core-developers/forge!2281
This commit is contained in:
Hans Mackowiak
2019-11-14 11:12:31 +00:00
2 changed files with 9 additions and 5 deletions

View File

@@ -50,7 +50,7 @@ import java.util.Map.Entry;
*/ */
public class Combat { public class Combat {
private final Player playerWhoAttacks; private final Player playerWhoAttacks;
private final AttackConstraints attackConstraints; private AttackConstraints attackConstraints;
// Defenders, as they are attacked by hostile forces // Defenders, as they are attacked by hostile forces
private final FCollection<GameEntity> attackableEntries = new FCollection<>(); private final FCollection<GameEntity> attackableEntries = new FCollection<>();
@@ -71,10 +71,6 @@ public class Combat {
public Combat(final Player attacker) { public Combat(final Player attacker) {
playerWhoAttacks = attacker; playerWhoAttacks = attacker;
// Create keys for all possible attack targets
attackableEntries.addAll(CombatUtil.getAllPossibleDefenders(playerWhoAttacks));
attackConstraints = new AttackConstraints(this);
} }
public Combat(Combat combat, GameObjectMap map) { public Combat(Combat combat, GameObjectMap map) {
@@ -119,6 +115,13 @@ public class Combat {
attackConstraints = new AttackConstraints(this); attackConstraints = new AttackConstraints(this);
} }
public void initConstraints() {
// Create keys for all possible attack targets
attackableEntries.addAll(CombatUtil.getAllPossibleDefenders(playerWhoAttacks));
attackConstraints = new AttackConstraints(this);
}
@Override @Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();

View File

@@ -283,6 +283,7 @@ public class PhaseHandler implements java.io.Serializable {
case COMBAT_DECLARE_ATTACKERS: case COMBAT_DECLARE_ATTACKERS:
if (!playerTurn.hasLost()) { if (!playerTurn.hasLost()) {
combat.initConstraints();
game.getStack().freezeStack(); game.getStack().freezeStack();
declareAttackersTurnBasedAction(); declareAttackersTurnBasedAction();
game.getStack().unfreezeStack(); game.getStack().unfreezeStack();