added UI updates in PumpEffect and on Attachment changes

This commit is contained in:
Maxmtg
2013-07-03 08:44:01 +00:00
parent cca6e94a71
commit 2e4ec0e402
4 changed files with 31 additions and 16 deletions

View File

@@ -18,9 +18,7 @@ import forge.card.staticability.StaticAbility;
import forge.card.trigger.Trigger; import forge.card.trigger.Trigger;
import forge.card.trigger.TriggerHandler; import forge.card.trigger.TriggerHandler;
import forge.game.Game; import forge.game.Game;
import forge.game.event.GameEvent;
import forge.game.event.GameEventCardStatsChanged; import forge.game.event.GameEventCardStatsChanged;
import forge.game.event.IGameEventVisitor;
public class AnimateEffect extends AnimateEffectBase { public class AnimateEffect extends AnimateEffectBase {

View File

@@ -14,6 +14,7 @@ import forge.card.cardfactory.CardFactoryUtil;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.TargetRestrictions; import forge.card.spellability.TargetRestrictions;
import forge.game.Game; import forge.game.Game;
import forge.game.event.GameEventCardStatsChanged;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.ZoneType; import forge.game.zone.ZoneType;
import forge.util.Aggregates; import forge.util.Aggregates;
@@ -85,6 +86,7 @@ public class PumpEffect extends SpellAbilityEffect {
game.getEndOfTurn().addUntil(untilEOT); game.getEndOfTurn().addUntil(untilEOT);
} }
} }
sa.getActivatingPlayer().getGame().fireEvent(new GameEventCardStatsChanged(applyTo));
} }
private void applyPump(final SpellAbility sa, final Player p, final List<String> keywords) { private void applyPump(final SpellAbility sa, final Player p, final List<String> keywords) {

View File

@@ -13,6 +13,7 @@ import forge.FThreads;
import forge.game.Game; import forge.game.Game;
import forge.game.event.GameEvent; import forge.game.event.GameEvent;
import forge.game.event.GameEventAnteCardsSelected; import forge.game.event.GameEventAnteCardsSelected;
import forge.game.event.GameEventCardAttachment;
import forge.game.event.GameEventCardChangeZone; import forge.game.event.GameEventCardChangeZone;
import forge.game.event.GameEventCardCounters; import forge.game.event.GameEventCardCounters;
import forge.game.event.GameEventCardDamaged; import forge.game.event.GameEventCardDamaged;
@@ -35,6 +36,7 @@ import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.zone.PlayerZone; import forge.game.zone.PlayerZone;
import forge.game.zone.Zone;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.match.CMatchUI; import forge.gui.match.CMatchUI;
@@ -200,39 +202,52 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override @Override
public Void visit(GameEventCardChangeZone event) { public Void visit(GameEventCardChangeZone event) {
updateTwoZones(event.from, event.to);
return null;
}
private void updateTwoZones(Zone z1, Zone z2) {
boolean needUpdate = false; boolean needUpdate = false;
synchronized (zonesToUpdate) { synchronized (zonesToUpdate) {
needUpdate = zonesToUpdate.isEmpty(); needUpdate = zonesToUpdate.isEmpty();
if ( event.from instanceof PlayerZone && !zonesToUpdate.contains(event.from) ) { if ( z1 instanceof PlayerZone && !zonesToUpdate.contains(z1) ) {
zonesToUpdate.add((PlayerZone)event.from); zonesToUpdate.add((PlayerZone)z1);
} }
if ( event.to instanceof PlayerZone && !zonesToUpdate.contains(event.to) ) { if ( z2 instanceof PlayerZone && !zonesToUpdate.contains(z2) ) {
zonesToUpdate.add((PlayerZone)event.to); zonesToUpdate.add((PlayerZone)z2);
} }
} }
if( needUpdate ) if( needUpdate )
FThreads.invokeInEdtNowOrLater(updZones); 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 @Override
public Void visit(GameEventCardTapped event) { public Void visit(GameEventCardTapped event) {
// TODO Smart partial updates // TODO Smart partial updates
PlayerZone z = (PlayerZone) event.card.getGame().getZoneOf(event.card); return updateZone((PlayerZone) event.card.getGame().getZoneOf(event.card));
return updateZone(z);
} }
@Override @Override
public Void visit(GameEventCardDamaged event) { public Void visit(GameEventCardDamaged event) {
PlayerZone z = (PlayerZone) event.damaged.getGame().getZoneOf(event.damaged); // TODO Smart partial updates
return updateZone(z); return updateZone((PlayerZone) event.damaged.getGame().getZoneOf(event.damaged));
} }
@Override @Override
public Void visit(GameEventCardCounters event) { public Void visit(GameEventCardCounters event) {
PlayerZone z = (PlayerZone) event.target.getGame().getZoneOf(event.target); // TODO Smart partial updates
return updateZone(z); return updateZone((PlayerZone) event.target.getGame().getZoneOf(event.target));
} }
private Void updateZone(PlayerZone z) { private Void updateZone(PlayerZone z) {

View File

@@ -499,11 +499,11 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
*/ */
public void setupPlayZone() { public void setupPlayZone() {
FThreads.assertExecutedByEdt(true); FThreads.assertExecutedByEdt(true);
setupPlayZone(model); recalculateCardPanels(model);
} }
public void setupPlayZone(final List<Card> model) { private void recalculateCardPanels(final List<Card> model) {
List<Card> oldCards, toDelete; List<Card> oldCards, toDelete;
oldCards = new ArrayList<Card>(); oldCards = new ArrayList<Card>();
for (final CardPanel cpa : getCardPanels()) { for (final CardPanel cpa : getCardPanels()) {