From 2e4ec0e4023a19a7a19797e8624fed45daafd01c Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Wed, 3 Jul 2013 08:44:01 +0000 Subject: [PATCH] added UI updates in PumpEffect and on Attachment changes --- .../card/ability/effects/AnimateEffect.java | 2 - .../card/ability/effects/PumpEffect.java | 2 + .../control/FControlGameEventHandler.java | 39 +++++++++++++------ src/main/java/forge/view/arcane/PlayArea.java | 4 +- 4 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/main/java/forge/card/ability/effects/AnimateEffect.java b/src/main/java/forge/card/ability/effects/AnimateEffect.java index 32ab2f85c90..8e3a89f575e 100644 --- a/src/main/java/forge/card/ability/effects/AnimateEffect.java +++ b/src/main/java/forge/card/ability/effects/AnimateEffect.java @@ -18,9 +18,7 @@ import forge.card.staticability.StaticAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.game.Game; -import forge.game.event.GameEvent; import forge.game.event.GameEventCardStatsChanged; -import forge.game.event.IGameEventVisitor; public class AnimateEffect extends AnimateEffectBase { diff --git a/src/main/java/forge/card/ability/effects/PumpEffect.java b/src/main/java/forge/card/ability/effects/PumpEffect.java index 4bf0df612ca..0451b130d0d 100644 --- a/src/main/java/forge/card/ability/effects/PumpEffect.java +++ b/src/main/java/forge/card/ability/effects/PumpEffect.java @@ -14,6 +14,7 @@ import forge.card.cardfactory.CardFactoryUtil; import forge.card.spellability.SpellAbility; import forge.card.spellability.TargetRestrictions; import forge.game.Game; +import forge.game.event.GameEventCardStatsChanged; import forge.game.player.Player; import forge.game.zone.ZoneType; import forge.util.Aggregates; @@ -85,6 +86,7 @@ public class PumpEffect extends SpellAbilityEffect { game.getEndOfTurn().addUntil(untilEOT); } } + sa.getActivatingPlayer().getGame().fireEvent(new GameEventCardStatsChanged(applyTo)); } private void applyPump(final SpellAbility sa, final Player p, final List keywords) { diff --git a/src/main/java/forge/control/FControlGameEventHandler.java b/src/main/java/forge/control/FControlGameEventHandler.java index 32c9582fd9f..378f21e9fae 100644 --- a/src/main/java/forge/control/FControlGameEventHandler.java +++ b/src/main/java/forge/control/FControlGameEventHandler.java @@ -13,6 +13,7 @@ import forge.FThreads; import forge.game.Game; import forge.game.event.GameEvent; import forge.game.event.GameEventAnteCardsSelected; +import forge.game.event.GameEventCardAttachment; import forge.game.event.GameEventCardChangeZone; import forge.game.event.GameEventCardCounters; import forge.game.event.GameEventCardDamaged; @@ -35,6 +36,7 @@ import forge.game.phase.PhaseHandler; import forge.game.phase.PhaseType; import forge.game.player.Player; import forge.game.zone.PlayerZone; +import forge.game.zone.Zone; import forge.gui.GuiDialog; import forge.gui.SOverlayUtils; import forge.gui.match.CMatchUI; @@ -200,39 +202,52 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base { @Override public Void visit(GameEventCardChangeZone event) { + updateTwoZones(event.from, event.to); + return null; + } + + private void updateTwoZones(Zone z1, Zone z2) { boolean needUpdate = false; synchronized (zonesToUpdate) { needUpdate = zonesToUpdate.isEmpty(); - if ( event.from instanceof PlayerZone && !zonesToUpdate.contains(event.from) ) { - zonesToUpdate.add((PlayerZone)event.from); + if ( z1 instanceof PlayerZone && !zonesToUpdate.contains(z1) ) { + zonesToUpdate.add((PlayerZone)z1); } - if ( event.to instanceof PlayerZone && !zonesToUpdate.contains(event.to) ) { - zonesToUpdate.add((PlayerZone)event.to); + if ( z2 instanceof PlayerZone && !zonesToUpdate.contains(z2) ) { + zonesToUpdate.add((PlayerZone)z2); } } if( needUpdate ) FThreads.invokeInEdtNowOrLater(updZones); - return null; + } + + @Override + public Void visit(GameEventCardAttachment event) { + // TODO Auto-generated method stub + Game game = event.equipment.getGame(); + PlayerZone zEq = (PlayerZone)game.getZoneOf(event.equipment); + Zone z1 = event.oldEntiy instanceof Card ? game.getZoneOf((Card)event.oldEntiy) : null; + Zone z2 = event.newTarget instanceof Card ? game.getZoneOf((Card)event.newTarget) : null; + updateTwoZones(z1, z2); + return updateZone(zEq); } @Override public Void visit(GameEventCardTapped event) { // TODO Smart partial updates - PlayerZone z = (PlayerZone) event.card.getGame().getZoneOf(event.card); - return updateZone(z); + return updateZone((PlayerZone) event.card.getGame().getZoneOf(event.card)); } @Override public Void visit(GameEventCardDamaged event) { - PlayerZone z = (PlayerZone) event.damaged.getGame().getZoneOf(event.damaged); - return updateZone(z); + // TODO Smart partial updates + return updateZone((PlayerZone) event.damaged.getGame().getZoneOf(event.damaged)); } - @Override public Void visit(GameEventCardCounters event) { - PlayerZone z = (PlayerZone) event.target.getGame().getZoneOf(event.target); - return updateZone(z); + // TODO Smart partial updates + return updateZone((PlayerZone) event.target.getGame().getZoneOf(event.target)); } private Void updateZone(PlayerZone z) { diff --git a/src/main/java/forge/view/arcane/PlayArea.java b/src/main/java/forge/view/arcane/PlayArea.java index 33ad4c60a50..27f43d8904e 100644 --- a/src/main/java/forge/view/arcane/PlayArea.java +++ b/src/main/java/forge/view/arcane/PlayArea.java @@ -499,11 +499,11 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen */ public void setupPlayZone() { FThreads.assertExecutedByEdt(true); - setupPlayZone(model); + recalculateCardPanels(model); } - public void setupPlayZone(final List model) { + private void recalculateCardPanels(final List model) { List oldCards, toDelete; oldCards = new ArrayList(); for (final CardPanel cpa : getCardPanels()) {