From 1c0cb07a2e7e93ee5abc64c20369d7ab0cb4341a Mon Sep 17 00:00:00 2001 From: tool4ever Date: Wed, 1 Jan 2025 18:24:47 +0100 Subject: [PATCH] Remove obsolete GameEvent (#6736) --- .../ability/effects/ProtectAllEffect.java | 3 +++ .../game/ability/effects/ProtectEffect.java | 3 +++ .../src/main/java/forge/game/card/Card.java | 6 ----- .../game/event/GameEventTokenStateUpdate.java | 24 ------------------- .../forge/game/event/IGameEventVisitor.java | 2 -- .../java/forge/game/phase/PhaseHandler.java | 2 -- .../toolbox/imaging/FCardImageRenderer.java | 3 +-- .../src/forge/screens/match/MatchScreen.java | 1 - .../gui/control/FControlGameEventHandler.java | 24 +++++++------------ .../properties/ForgePreferences.java | 2 +- 10 files changed, 16 insertions(+), 54 deletions(-) delete mode 100644 forge-game/src/main/java/forge/game/event/GameEventTokenStateUpdate.java diff --git a/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java index 5f7700b86ff..5031114928f 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ProtectAllEffect.java @@ -15,6 +15,7 @@ import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardCollectionView; import forge.game.card.CardLists; +import forge.game.event.GameEventCardStatsChanged; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; @@ -87,6 +88,7 @@ public class ProtectAllEffect extends SpellAbilityEffect { for (final Card tgtC : list) { tgtC.addChangedCardKeywords(gainsKWList, null, false, timestamp, null, true); + game.fireEvent(new GameEventCardStatsChanged(tgtC)); if (!"Permanent".equals(sa.getParam("Duration"))) { // If not Permanent, remove protection at EOT @@ -97,6 +99,7 @@ public class ProtectAllEffect extends SpellAbilityEffect { public void run() { if (tgtC.isInPlay()) { tgtC.removeChangedCardKeywords(timestamp, 0, true); + game.fireEvent(new GameEventCardStatsChanged(tgtC)); } } }; diff --git a/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java b/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java index 10235488e75..e9e453ec50b 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/ProtectEffect.java @@ -18,6 +18,7 @@ import forge.game.ability.SpellAbilityEffect; import forge.game.card.Card; import forge.game.card.CardCollection; import forge.game.card.CardUtil; +import forge.game.event.GameEventCardStatsChanged; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.util.Lang; @@ -154,6 +155,7 @@ public class ProtectEffect extends SpellAbilityEffect { } tgtC.addChangedCardKeywords(gainsKWList, null, false, timestamp, null, true); + game.fireEvent(new GameEventCardStatsChanged(tgtC)); if (!"Permanent".equals(sa.getParam("Duration"))) { // If not Permanent, remove protection at EOT @@ -164,6 +166,7 @@ public class ProtectEffect extends SpellAbilityEffect { public void run() { if (tgtC.isInPlay()) { tgtC.removeChangedCardKeywords(timestamp, 0, true); + game.fireEvent(new GameEventCardStatsChanged(tgtC)); } } }; diff --git a/forge-game/src/main/java/forge/game/card/Card.java b/forge-game/src/main/java/forge/game/card/Card.java index fff4ec72284..a15b8c35ba1 100644 --- a/forge-game/src/main/java/forge/game/card/Card.java +++ b/forge-game/src/main/java/forge/game/card/Card.java @@ -5150,8 +5150,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr if (updateView) { updateKeywords(); - if (isToken()) - game.fireEvent(new GameEventTokenStateUpdate(this)); } } @@ -5239,8 +5237,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr changed |= changedCardKeywordsByText.remove(timestamp, staticId) != null; if (updateView) { updateKeywords(); - if (isToken()) - game.fireEvent(new GameEventTokenStateUpdate(this)); } return changed; } @@ -5515,8 +5511,6 @@ public class Card extends GameEntity implements Comparable, IHasSVars, ITr if (change && updateView) { getView().updateCantHaveKeyword(this); updateKeywords(); - if (isToken()) - game.fireEvent(new GameEventTokenStateUpdate(this)); } return change; } diff --git a/forge-game/src/main/java/forge/game/event/GameEventTokenStateUpdate.java b/forge-game/src/main/java/forge/game/event/GameEventTokenStateUpdate.java deleted file mode 100644 index d50826be1f2..00000000000 --- a/forge-game/src/main/java/forge/game/event/GameEventTokenStateUpdate.java +++ /dev/null @@ -1,24 +0,0 @@ -package forge.game.event; - -import java.util.Arrays; -import java.util.Collection; -import java.util.List; - -import forge.game.card.Card; - -public class GameEventTokenStateUpdate extends GameEvent { - - public final Collection cards; - public GameEventTokenStateUpdate(Card affected) { - cards = Arrays.asList(affected); - } - - public GameEventTokenStateUpdate(List affected) { - cards = affected; - } - - @Override - public T visit(IGameEventVisitor visitor) { - return visitor.visit(this); - } -} diff --git a/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java b/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java index eb058425a24..ec0db2c7714 100644 --- a/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java +++ b/forge-game/src/main/java/forge/game/event/IGameEventVisitor.java @@ -42,7 +42,6 @@ public interface IGameEventVisitor { T visit(GameEventPlayerStatsChanged event); T visit(GameEventRandomLog event); T visit(GameEventRollDie event); - T visit(GameEventTokenStateUpdate event); T visit(GameEventScry event); T visit(GameEventShuffle event); T visit(GameEventSpellAbilityCast event); @@ -98,7 +97,6 @@ public interface IGameEventVisitor { public T visit(GameEventPlayerStatsChanged event) { return null; } public T visit(GameEventRandomLog event) { return null; } public T visit(GameEventRollDie event) { return null; } - public T visit(GameEventTokenStateUpdate event) { return null; } public T visit(GameEventScry event) { return null; } public T visit(GameEventShuffle event) { return null; } public T visit(GameEventSpellResolved event) { return null; } diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index bb165eee0e0..cb7a69014ea 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -185,8 +185,6 @@ public class PhaseHandler implements java.io.Serializable { final int lands = CardLists.count(playerTurn.getLandsInPlay(), CardPredicates.UNTAPPED); playerTurn.setNumPowerSurgeLands(lands); } - //update tokens - game.fireEvent(new GameEventTokenStateUpdate(playerTurn.getTokensInPlay())); // Replacement effects final Map repRunParams = AbilityKey.mapFromAffected(playerTurn); diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java b/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java index 4b6fb7c1070..6af3dcc96be 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/imaging/FCardImageRenderer.java @@ -207,10 +207,9 @@ public class FCardImageRenderer { final String leftText = needTranslation ? CardTranslation.getTranslatedOracle(leftState) : leftState.getOracleText(); final CardStateView rightState = card.getRightSplitState(); String rightText = needTranslation ? CardTranslation.getTranslatedOracle(rightState) : rightState.getOracleText(); - boolean isAftermath = (rightState.getKeywordKey().contains("Aftermath")); BufferedImage leftArt = null; BufferedImage rightArt = null; - if (isAftermath) { + if (rightState.hasAftermath()) { if (art != null) { int leftWidth = Math.round(art.getWidth() * 0.61328125f); leftArt = art.getSubimage(0, 0, leftWidth, art.getHeight()); diff --git a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java index a84d7ea77d8..89d09b1bc0c 100644 --- a/forge-gui-mobile/src/forge/screens/match/MatchScreen.java +++ b/forge-gui-mobile/src/forge/screens/match/MatchScreen.java @@ -788,7 +788,6 @@ public class MatchScreen extends FScreen { public void forceRevalidate() { for (VPlayerPanel playerPanel : getPlayerPanels().values()) { playerPanel.revalidate(true); - } } diff --git a/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java b/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java index b9d7de4590a..413ce30f8c1 100644 --- a/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java +++ b/forge-gui/src/main/java/forge/gui/control/FControlGameEventHandler.java @@ -190,10 +190,13 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { @Override public Void visit(final GameEventTurnPhase ev) { needPhaseUpdate = true; - if (ev.phaseDesc == "dev") - needSaveState = false; - else - needSaveState = true; + needSaveState = !"dev".equals(ev.phaseDesc); + + Player ap = ev.playerTurn; + boolean refreshField = !ap.getTokensInPlay().isEmpty() || (FModel.getPreferences().getPrefBoolean(FPref.UI_STACK_CREATURES) && !ap.getCreaturesInPlay().isEmpty()); + if (refreshField) { + updateZone(ap, ZoneType.Battlefield); + } return processEvent(); } @@ -207,10 +210,6 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { public Void visit(final GameEventTurnBegan event) { turnUpdate = event.turnOwner.getView(); processPlayer(event.turnOwner, livesUpdate); - if (FModel.getPreferences().getPrefBoolean(FPref.UI_STACK_CREATURES) && event.turnOwner != null) { - // anything except stack will get here - updateZone(event.turnOwner, ZoneType.Battlefield); - } return processEvent(); } @@ -408,7 +407,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { @Override public Void visit(final GameEventCardChangeZone event) { - if(GuiBase.getInterface().isLibgdxPort()) { + if (GuiBase.getInterface().isLibgdxPort()) { updateZone(event.from); return updateZone(event.to); } else { @@ -458,13 +457,6 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { return processCard(event.land, cardsRefreshDetails); } - @Override - public Void visit(final GameEventTokenStateUpdate event) { - refreshFieldUpdate = true; - processCards(event.cards, cardsRefreshDetails); - return processCards(event.cards, cardsUpdate); - } - @Override public Void visit(final GameEventCardRegenerated event) { refreshFieldUpdate = true; diff --git a/forge-gui/src/main/java/forge/localinstance/properties/ForgePreferences.java b/forge-gui/src/main/java/forge/localinstance/properties/ForgePreferences.java index 7675c9b4385..98ac11a79c9 100644 --- a/forge-gui/src/main/java/forge/localinstance/properties/ForgePreferences.java +++ b/forge-gui/src/main/java/forge/localinstance/properties/ForgePreferences.java @@ -96,6 +96,7 @@ public class ForgePreferences extends PreferencesStore { UI_SR_OPTIMIZE ("false"), UI_OPEN_PACKS_INDIV ("false"), UI_STACK_CREATURES ("false"), + UI_TOKENS_IN_SEPARATE_ROW("false"), UI_UPLOAD_DRAFT ("false"), UI_SCALE_LARGER ("true"), UI_RENDER_BLACK_BORDERS ("true"), @@ -135,7 +136,6 @@ public class ForgePreferences extends PreferencesStore { UI_STACK_EFFECT_NOTIFICATION_POLICY ("Never"), UI_LAND_PLAYED_NOTIFICATION_POLICY ("Never"), UI_PAUSE_WHILE_MINIMIZED("false"), - UI_TOKENS_IN_SEPARATE_ROW("false"), // Display tokens in their own battlefield row. UI_DISPLAY_CURRENT_COLORS(ForgeConstants.DISP_CURRENT_COLORS_NEVER), UI_FILTER_LANDS_BY_COLOR_IDENTITY("true"), UI_ALLOW_ESC_TO_END_TURN ("false"),