tests: added tests for non-stack delayed trigger and details docs about problem

This commit is contained in:
Oleg Agafonov 2024-04-11 22:06:58 +04:00
parent 7fa4648316
commit 367defd995
7 changed files with 234 additions and 17 deletions

View file

@ -71,7 +71,6 @@ public class GameState implements Serializable, Copyable<GameState> {
private final Map<UUID, LookedAt> lookedAt = new HashMap<>();
private final Revealed companion;
private DelayedTriggeredAbilities delayed;
private SpecialActions specialActions;
private Watchers watchers;
private Turn turn;
@ -94,8 +93,9 @@ public class GameState implements Serializable, Copyable<GameState> {
private boolean gameOver;
private boolean paused;
private ContinuousEffects effects;
private TriggeredAbilities triggers;
private List<TriggeredAbility> triggered = new ArrayList<>();
private TriggeredAbilities triggers; // all normal triggers
private DelayedTriggeredAbilities delayed; // all delayed triggers
private List<TriggeredAbility> triggered = new ArrayList<>(); // raised triggers, waiting to resolve (can contains both normal and delayed)
private Combat combat;
private Map<String, Object> values = new HashMap<>();
private Map<UUID, Zone> zones = new HashMap<>();
@ -233,6 +233,7 @@ public class GameState implements Serializable, Copyable<GameState> {
}
public void restore(GameState state) {
// no needs in copy here cause GameState already copied on save and it will be used only one time here
this.activePlayerId = state.activePlayerId;
this.playerList.setCurrent(state.activePlayerId);
this.playerByOrderId = state.playerByOrderId;
@ -1175,6 +1176,8 @@ public class GameState implements Serializable, Copyable<GameState> {
public void addTriggeredAbility(TriggeredAbility ability) {
this.triggered.add(ability);
System.out.println("added: " + triggered.size());
System.out.println(triggered.stream().map(Ability::toString).collect(Collectors.joining("\r\n")));
}
public void removeTriggeredAbility(TriggeredAbility ability) {