mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
added UI updates in PumpEffect and on Attachment changes
This commit is contained in:
@@ -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 {
|
||||||
|
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user