mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
Refactor Event
This commit is contained in:
@@ -2,15 +2,14 @@ package forge.game.event;
|
|||||||
|
|
||||||
import forge.game.card.Card;
|
import forge.game.card.Card;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class GameEventRemoveSummoningSickness extends GameEvent {
|
public class GameEventTokenStateUpdate extends GameEvent {
|
||||||
|
|
||||||
public final Collection<Card> cards;
|
public final Collection<Card> cards;
|
||||||
|
public GameEventTokenStateUpdate(Card affected) {
|
||||||
public GameEventRemoveSummoningSickness(List<Card> affected) {
|
cards = Arrays.asList(affected);
|
||||||
cards = affected;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -37,7 +37,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
T visit(GameEventPlayerPoisoned event);
|
T visit(GameEventPlayerPoisoned event);
|
||||||
T visit(GameEventPlayerPriority event);
|
T visit(GameEventPlayerPriority event);
|
||||||
T visit(GameEventPlayerStatsChanged event);
|
T visit(GameEventPlayerStatsChanged event);
|
||||||
T visit(GameEventRemoveSummoningSickness event);
|
T visit(GameEventTokenStateUpdate event);
|
||||||
T visit(GameEventScry event);
|
T visit(GameEventScry event);
|
||||||
T visit(GameEventShuffle event);
|
T visit(GameEventShuffle event);
|
||||||
T visit(GameEventSpellAbilityCast gameEventSpellAbilityCast);
|
T visit(GameEventSpellAbilityCast gameEventSpellAbilityCast);
|
||||||
@@ -84,7 +84,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventPlayerPoisoned event) { return null; }
|
public T visit(GameEventPlayerPoisoned event) { return null; }
|
||||||
public T visit(GameEventPlayerPriority event) { return null; }
|
public T visit(GameEventPlayerPriority event) { return null; }
|
||||||
public T visit(GameEventPlayerStatsChanged event) { return null; }
|
public T visit(GameEventPlayerStatsChanged event) { return null; }
|
||||||
public T visit(GameEventRemoveSummoningSickness event) { return null; }
|
public T visit(GameEventTokenStateUpdate event) { return null; }
|
||||||
public T visit(GameEventScry event) { return null; }
|
public T visit(GameEventScry event) { return null; }
|
||||||
public T visit(GameEventShuffle event) { return null; }
|
public T visit(GameEventShuffle event) { return null; }
|
||||||
public T visit(GameEventSpellResolved event) { return null; }
|
public T visit(GameEventSpellResolved event) { return null; }
|
||||||
|
|||||||
@@ -73,7 +73,6 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
|
|
||||||
private final transient Stack<ExtraTurn> extraTurns = new Stack<>();
|
private final transient Stack<ExtraTurn> extraTurns = new Stack<>();
|
||||||
private final transient Map<PhaseType, Stack<PhaseType>> extraPhases = Maps.newEnumMap(PhaseType.class);
|
private final transient Map<PhaseType, Stack<PhaseType>> extraPhases = Maps.newEnumMap(PhaseType.class);
|
||||||
private final List<Card> toUpdate = new ArrayList<>();
|
|
||||||
|
|
||||||
private int nUpkeepsThisTurn = 0;
|
private int nUpkeepsThisTurn = 0;
|
||||||
private int nUpkeepsThisGame = 0;
|
private int nUpkeepsThisGame = 0;
|
||||||
@@ -178,11 +177,10 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
|
|
||||||
// Tokens starting game in play should suffer from Sum. Sickness
|
// Tokens starting game in play should suffer from Sum. Sickness
|
||||||
final CardCollectionView list = playerTurn.getCardsIncludePhasingIn(ZoneType.Battlefield);
|
final CardCollectionView list = playerTurn.getCardsIncludePhasingIn(ZoneType.Battlefield);
|
||||||
toUpdate.clear();
|
|
||||||
for (final Card c : list) {
|
for (final Card c : list) {
|
||||||
if (playerTurn.getTurn() > 0 || !c.isStartsGameInPlay()) {
|
if (playerTurn.getTurn() > 0 || !c.isStartsGameInPlay()) {
|
||||||
if (c.isSick() && c.isToken()) //add toupdate stacking tokens
|
if (c.isToken()) //update token stacking on battlefield
|
||||||
toUpdate.add(c);
|
game.fireEvent(new GameEventTokenStateUpdate(c));
|
||||||
|
|
||||||
c.setSickness(false);
|
c.setSickness(false);
|
||||||
}
|
}
|
||||||
@@ -193,8 +191,6 @@ public class PhaseHandler implements java.io.Serializable {
|
|||||||
|
|
||||||
final List<Card> lands = CardLists.filter(playerTurn.getLandsInPlay(), Presets.UNTAPPED);
|
final List<Card> lands = CardLists.filter(playerTurn.getLandsInPlay(), Presets.UNTAPPED);
|
||||||
playerTurn.setNumPowerSurgeLands(lands.size());
|
playerTurn.setNumPowerSurgeLands(lands.size());
|
||||||
if (!toUpdate.isEmpty()) //fire event toupdate stacking tokens
|
|
||||||
game.fireEvent(new GameEventRemoveSummoningSickness(toUpdate));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
game.fireEvent(new GameEventTurnPhase(playerTurn, phase, phaseType));
|
game.fireEvent(new GameEventTurnPhase(playerTurn, phase, phaseType));
|
||||||
|
|||||||
@@ -110,7 +110,8 @@ public class VField extends FContainer {
|
|||||||
if (!c.hasCardAttachments() &&
|
if (!c.hasCardAttachments() &&
|
||||||
cardName.equals(c.getCurrentState().getName()) &&
|
cardName.equals(c.getCurrentState().getName()) &&
|
||||||
card.hasSameCounters(c) &&
|
card.hasSameCounters(c) &&
|
||||||
card.isSick() == c.isSick() && //don't stack sick tokens on non sick - stack will refresh on event
|
card.isTapped() == c.isTapped() && // don't stack tapped tokens on untapped tokens
|
||||||
|
card.isSick() == c.isSick() && //don't stack sick tokens on non sick
|
||||||
card.isToken() == c.isToken()) { //don't stack tokens on top of non-tokens
|
card.isToken() == c.isToken()) { //don't stack tokens on top of non-tokens
|
||||||
CardAreaPanel cPanel = CardAreaPanel.get(c);
|
CardAreaPanel cPanel = CardAreaPanel.get(c);
|
||||||
while (cPanel.getNextPanelInStack() != null) {
|
while (cPanel.getNextPanelInStack() != null) {
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void visit(final GameEventRemoveSummoningSickness event) {
|
public Void visit(final GameEventTokenStateUpdate event) {
|
||||||
processCards(event.cards, cardsRefreshDetails);
|
processCards(event.cards, cardsRefreshDetails);
|
||||||
return processCards(event.cards, cardsUpdate);
|
return processCards(event.cards, cardsUpdate);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user