Event: use Record

This commit is contained in:
Hans Mackowiak
2025-08-27 22:05:11 +02:00
parent 223aeb1bff
commit d6f585a80c
72 changed files with 225 additions and 770 deletions

View File

@@ -29,25 +29,25 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventGameOutcome ev) {
// Turn number counted from the starting player
int lastTurn = (int)Math.ceil((float)ev.result.getLastTurnNumber() / 2.0);
int lastTurn = (int)Math.ceil((float)ev.result().getLastTurnNumber() / 2.0);
log.add(GameLogEntryType.GAME_OUTCOME, localizer.getMessage("lblTurn") + " " + lastTurn);
for (String outcome : ev.result.getOutcomeStrings()) {
for (String outcome : ev.result().getOutcomeStrings()) {
log.add(GameLogEntryType.GAME_OUTCOME, outcome);
}
return generateSummary(ev.history);
return generateSummary(ev.history());
}
@Override
public GameLogEntry visit(GameEventScry ev) {
String scryOutcome = "";
if (ev.toTop > 0 && ev.toBottom > 0) {
scryOutcome = localizer.getMessage("lblLogScryTopBottomLibrary").replace("%s", ev.player.toString()).replace("%top", String.valueOf(ev.toTop)).replace("%bottom", String.valueOf(ev.toBottom));
} else if (ev.toBottom == 0) {
scryOutcome = localizer.getMessage("lblLogScryTopLibrary").replace("%s", ev.player.toString()).replace("%top", String.valueOf(ev.toTop));
if (ev.toTop() > 0 && ev.toBottom() > 0) {
scryOutcome = localizer.getMessage("lblLogScryTopBottomLibrary").replace("%s", ev.player().toString()).replace("%top", String.valueOf(ev.toTop())).replace("%bottom", String.valueOf(ev.toBottom()));
} else if (ev.toBottom() == 0) {
scryOutcome = localizer.getMessage("lblLogScryTopLibrary").replace("%s", ev.player().toString()).replace("%top", String.valueOf(ev.toTop()));
} else {
scryOutcome = localizer.getMessage("lblLogScryBottomLibrary").replace("%s", ev.player.toString()).replace("%bottom", String.valueOf(ev.toBottom));
scryOutcome = localizer.getMessage("lblLogScryBottomLibrary").replace("%s", ev.player().toString()).replace("%bottom", String.valueOf(ev.toBottom()));
}
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, scryOutcome);
@@ -57,12 +57,12 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
public GameLogEntry visit(GameEventSurveil ev) {
String surveilOutcome = "";
if (ev.toLibrary > 0 && ev.toGraveyard > 0) {
surveilOutcome = localizer.getMessage("lblLogSurveiledToLibraryGraveyard", ev.player.toString(), String.valueOf(ev.toLibrary), String.valueOf(ev.toGraveyard));
} else if (ev.toGraveyard == 0) {
surveilOutcome = localizer.getMessage("lblLogSurveiledToLibrary", ev.player.toString(), String.valueOf(ev.toLibrary));
if (ev.toLibrary() > 0 && ev.toGraveyard() > 0) {
surveilOutcome = localizer.getMessage("lblLogSurveiledToLibraryGraveyard", ev.player().toString(), String.valueOf(ev.toLibrary()), String.valueOf(ev.toGraveyard()));
} else if (ev.toGraveyard() == 0) {
surveilOutcome = localizer.getMessage("lblLogSurveiledToLibrary", ev.player().toString(), String.valueOf(ev.toLibrary()));
} else {
surveilOutcome = localizer.getMessage("lblLogSurveiledToGraveyard", ev.player.toString(), String.valueOf(ev.toGraveyard));
surveilOutcome = localizer.getMessage("lblLogSurveiledToGraveyard", ev.player().toString(), String.valueOf(ev.toGraveyard()));
}
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, surveilOutcome);
@@ -70,26 +70,26 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventSpellResolved ev) {
String messageForLog = ev.hasFizzled ? localizer.getMessage("lblLogCardAbilityFizzles", ev.spell.getHostCard().toString()) : ev.spell.getStackDescription();
String messageForLog = ev.hasFizzled() ? localizer.getMessage("lblLogCardAbilityFizzles", ev.spell().getHostCard().toString()) : ev.spell().getStackDescription();
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, messageForLog);
}
@Override
public GameLogEntry visit(GameEventSpellAbilityCast event) {
String player = event.sa.getActivatingPlayer().getName();
String action = event.sa.isSpell() ? localizer.getMessage("lblCast")
: event.sa.isTrigger() ? localizer.getMessage("lblTriggered")
String player = event.sa().getActivatingPlayer().getName();
String action = event.sa().isSpell() ? localizer.getMessage("lblCast")
: event.sa().isTrigger() ? localizer.getMessage("lblTriggered")
: localizer.getMessage("lblActivated");
String object = event.si.getStackDescription().startsWith("Morph ")
String object = event.si().getStackDescription().startsWith("Morph ")
? localizer.getMessage("lblMorph")
: event.sa.getHostCard().toString();
: event.sa().getHostCard().toString();
String messageForLog = "";
if (event.sa.getTargetRestrictions() != null) {
if (event.sa().getTargetRestrictions() != null) {
StringBuilder sb = new StringBuilder();
for (TargetChoices ch : event.sa.getAllTargetChoices()) {
for (TargetChoices ch : event.sa().getAllTargetChoices()) {
if (null != ch) {
sb.append(ch);
}
@@ -104,18 +104,18 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventCardModeChosen ev) {
if (!ev.log) {
if (!ev.log()) {
return null;
}
String modeChoiceOutcome;
if (ev.random) {
modeChoiceOutcome = localizer.getMessage("lblLogRandomMode", ev.cardName, ev.mode);
if (ev.random()) {
modeChoiceOutcome = localizer.getMessage("lblLogRandomMode", ev.cardName(), ev.mode());
} else {
modeChoiceOutcome = localizer.getMessage("lblLogPlayerChosenModeForCard",
ev.player.toString(), ev.mode, ev.cardName);
ev.player().toString(), ev.mode(), ev.cardName());
}
String name = CardTranslation.getTranslatedName(ev.cardName);
String name = CardTranslation.getTranslatedName(ev.cardName());
modeChoiceOutcome = TextUtil.fastReplace(modeChoiceOutcome, "CARDNAME", name);
modeChoiceOutcome = TextUtil.fastReplace(modeChoiceOutcome, "NICKNAME",
Lang.getInstance().getNickName(name));
@@ -124,7 +124,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventRandomLog ev) {
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, ev.message);
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, ev.message());
}
private static GameLogEntry generateSummary(final Collection<GameOutcome> gamesPlayed) {
@@ -152,8 +152,8 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(final GameEventPlayerControl event) {
final LobbyPlayer newLobbyPlayer = event.newLobbyPlayer;
final Player p = event.player;
final LobbyPlayer newLobbyPlayer = event.newLobbyPlayer();
final Player p = event.player();
final String message;
if (newLobbyPlayer == null) {
@@ -166,23 +166,23 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventTurnPhase ev) {
Player p = ev.playerTurn;
return new GameLogEntry(GameLogEntryType.PHASE, ev.phaseDesc + Lang.getInstance().getPossessedObject(p.getName(), ev.phase.nameForUi));
Player p = ev.playerTurn();
return new GameLogEntry(GameLogEntryType.PHASE, ev.phaseDesc() + Lang.getInstance().getPossessedObject(p.getName(), ev.phase().nameForUi));
}
@Override
public GameLogEntry visit(GameEventCardDamaged event) {
String additionalLog = "";
if (event.type == DamageType.Deathtouch) {
if (event.type() == DamageType.Deathtouch) {
additionalLog = localizer.getMessage("lblDeathtouch");
}
if (event.type == DamageType.M1M1Counters) {
if (event.type() == DamageType.M1M1Counters) {
additionalLog = localizer.getMessage("lblAsM1M1Counters");
}
if (event.type == DamageType.LoyaltyLoss) {
additionalLog = localizer.getMessage("lblRemovingNLoyaltyCounter", String.valueOf(event.amount));
if (event.type() == DamageType.LoyaltyLoss) {
additionalLog = localizer.getMessage("lblRemovingNLoyaltyCounter", String.valueOf(event.amount()));
}
String message = localizer.getMessage("lblSourceDealsNDamageToDest", event.source.toString(), String.valueOf(event.amount), additionalLog, event.card.toString());
String message = localizer.getMessage("lblSourceDealsNDamageToDest", event.source().toString(), String.valueOf(event.amount()), additionalLog, event.card().toString());
return new GameLogEntry(GameLogEntryType.DAMAGE, message);
}
@@ -191,43 +191,43 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
*/
@Override
public GameLogEntry visit(GameEventLandPlayed ev) {
String message = localizer.getMessage("lblLogPlayerPlayedLand", ev.player.toString(), ev.land.toString());
String message = localizer.getMessage("lblLogPlayerPlayedLand", ev.player().toString(), ev.land().toString());
return new GameLogEntry(GameLogEntryType.LAND, message);
}
@Override
public GameLogEntry visit(GameEventTurnBegan event) {
String message = localizer.getMessage("lblLogTurnNOwnerByPlayer", String.valueOf(event.turnNumber), event.turnOwner.toString());
String message = localizer.getMessage("lblLogTurnNOwnerByPlayer", String.valueOf(event.turnNumber()), event.turnOwner().toString());
return new GameLogEntry(GameLogEntryType.TURN, message);
}
@Override
public GameLogEntry visit(GameEventPlayerDamaged ev) {
String extra = ev.infect ? localizer.getMessage("lblLogAsPoisonCounters") : "";
String damageType = ev.combat ? localizer.getMessage("lblCombat") : localizer.getMessage("lblNonCombat");
String message = localizer.getMessage("lblLogSourceDealsNDamageOfTypeToDest", ev.source.toString(),
String.valueOf(ev.amount), damageType, ev.target.toString(), extra);
String extra = ev.infect() ? localizer.getMessage("lblLogAsPoisonCounters") : "";
String damageType = ev.combat() ? localizer.getMessage("lblCombat") : localizer.getMessage("lblNonCombat");
String message = localizer.getMessage("lblLogSourceDealsNDamageOfTypeToDest", ev.source().toString(),
String.valueOf(ev.amount()), damageType, ev.target().toString(), extra);
return new GameLogEntry(GameLogEntryType.DAMAGE, message);
}
@Override
public GameLogEntry visit(GameEventPlayerPoisoned ev) {
String message = localizer.getMessage("lblLogPlayerReceivesNPosionCounterFrom",
ev.receiver.toString(), String.valueOf(ev.amount), ev.source.toString());
ev.receiver().toString(), String.valueOf(ev.amount()), ev.source().toString());
return new GameLogEntry(GameLogEntryType.DAMAGE, message);
}
@Override
public GameLogEntry visit(GameEventPlayerRadiation ev) {
String message;
final int change = ev.change;
final int change = ev.change();
String radCtr = CounterEnumType.RAD.getName().toLowerCase() + " " +
Localizer.getInstance().getMessage("lblCounter").toLowerCase();
if (change >= 0) message = localizer.getMessage("lblLogPlayerRadiation",
ev.receiver.toString(), Lang.nounWithNumeralExceptOne(String.valueOf(change), radCtr),
ev.source.toString());
ev.receiver().toString(), Lang.nounWithNumeralExceptOne(String.valueOf(change), radCtr),
ev.source().toString());
else message = localizer.getMessage("lblLogPlayerRadRemove",
ev.receiver.toString(), Lang.nounWithNumeralExceptOne(String.valueOf(Math.abs(change)), radCtr));
ev.receiver().toString(), Lang.nounWithNumeralExceptOne(String.valueOf(Math.abs(change)), radCtr));
return new GameLogEntry(GameLogEntryType.DAMAGE, message);
}
@@ -239,16 +239,16 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
// Append Defending Player/Planeswalker
// Not a big fan of the triple nested loop here
for (GameEntity k : ev.attackersMap.keySet()) {
Collection<Card> attackers = ev.attackersMap.get(k);
for (GameEntity k : ev.attackersMap().keySet()) {
Collection<Card> attackers = ev.attackersMap().get(k);
if (attackers == null || attackers.isEmpty()) {
continue;
}
if (sb.length() > 0) sb.append("\n");
sb.append(localizer.getMessage("lblLogPlayerAssignedAttackerToAttackTarget", ev.player, Lang.joinHomogenous(attackers), k));
sb.append(localizer.getMessage("lblLogPlayerAssignedAttackerToAttackTarget", ev.player(), Lang.joinHomogenous(attackers), k));
}
if (sb.length() == 0) {
sb.append(localizer.getMessage("lblPlayerDidntAttackThisTurn").replace("%s", ev.player.toString()));
sb.append(localizer.getMessage("lblPlayerDidntAttackThisTurn").replace("%s", ev.player().toString()));
}
return new GameLogEntry(GameLogEntryType.COMBAT, sb.toString());
}
@@ -262,7 +262,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
Collection<Card> blockers = null;
for (Entry<GameEntity, MapOfLists<Card, Card>> kv : ev.blockers.entrySet()) {
for (Entry<GameEntity, MapOfLists<Card, Card>> kv : ev.blockers().entrySet()) {
GameEntity defender = kv.getKey();
MapOfLists<Card, Card> attackers = kv.getValue();
if (attackers == null || attackers.isEmpty()) {
@@ -298,7 +298,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventMulligan ev) {
String message = localizer.getMessage("lblPlayerHasMulliganedDownToNCards").replace("%d", String.valueOf(ev.player.getZone(ZoneType.Hand).size())).replace("%s", ev.player.toString());
String message = localizer.getMessage("lblPlayerHasMulliganedDownToNCards").replace("%d", String.valueOf(ev.player().getZone(ZoneType.Hand).size())).replace("%s", ev.player().toString());
return new GameLogEntry(GameLogEntryType.MULLIGAN, message);
}

View File

@@ -1,5 +1,5 @@
package forge.game.event;
public abstract class Event {
public interface Event {
}

View File

@@ -1,9 +1,5 @@
package forge.game.event;
/**
* TODO: Write javadoc for this type.
*
*/
public enum EventValueChangeType {
Added,
Removed,

View File

@@ -1,6 +1,6 @@
package forge.game.event;
public abstract class GameEvent extends Event {
public interface GameEvent extends Event {
public abstract <T> T visit(IGameEventVisitor<T> visitor);
}

View File

@@ -5,11 +5,7 @@ import com.google.common.collect.Multimap;
import forge.game.card.Card;
import forge.game.player.Player;
public class GameEventAnteCardsSelected extends GameEvent {
public final Multimap<Player, Card> cards;
public GameEventAnteCardsSelected(Multimap<Player, Card> list) {
cards = list;
}
public record GameEventAnteCardsSelected(Multimap<Player, Card> cards) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -6,26 +6,13 @@ import forge.game.GameEntity;
import forge.game.card.Card;
import forge.game.player.Player;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventAttackersDeclared extends GameEvent {
public final Player player;
public final Multimap<GameEntity, Card> attackersMap;
public GameEventAttackersDeclared(Player playerTurn, Multimap<GameEntity, Card> attackersMap) {
this.player = playerTurn;
this.attackersMap = attackersMap;
}
public record GameEventAttackersDeclared(Player player, Multimap<GameEntity, Card> attackersMap) implements GameEvent {
/* (non-Javadoc)
* @see forge.game.event.GameEvent#visit(forge.game.event.IGameEventVisitor)
*/
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
// TODO Auto-generated method stub
return visitor.visit(this);
}

View File

@@ -12,23 +12,10 @@ import forge.util.Lang;
import forge.util.TextUtil;
import forge.util.maps.MapOfLists;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventBlockersDeclared extends GameEvent {
public final Map<GameEntity, MapOfLists<Card, Card>> blockers;
public final Player defendingPlayer;
public GameEventBlockersDeclared(Player who, Map<GameEntity, MapOfLists<Card, Card>> blockers) {
this.blockers = blockers;
defendingPlayer = who;
}
public record GameEventBlockersDeclared(Player defendingPlayer, Map<GameEntity, MapOfLists<Card, Card>> blockers) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
// TODO Auto-generated method stub
return visitor.visit(this);
}

View File

@@ -3,17 +3,7 @@ package forge.game.event;
import forge.game.GameEntity;
import forge.game.card.Card;
public class GameEventCardAttachment extends GameEvent {
public final Card equipment;
public final GameEntity newTarget; // can enchant player, I'm saving a class to enchants - it could be incorrect.
public final GameEntity oldEntity;
public GameEventCardAttachment(Card attachment, GameEntity formerEntity, GameEntity newEntity) {
this.equipment = attachment;
this.newTarget = newEntity;
this.oldEntity = formerEntity;
}
public record GameEventCardAttachment(Card equipment, GameEntity newTarget, GameEntity oldEntity) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,17 +4,7 @@ import forge.game.card.Card;
import forge.game.zone.Zone;
import forge.util.TextUtil;
public class GameEventCardChangeZone extends GameEvent {
public final Card card;
public final Zone from;
public final Zone to;
public GameEventCardChangeZone(Card c, Zone zoneFrom, Zone zoneTo) {
card = c;
from = zoneFrom;
to = zoneTo;
}
public record GameEventCardChangeZone(Card card, Zone from, Zone to) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -3,19 +3,7 @@ package forge.game.event;
import forge.game.card.Card;
import forge.game.card.CounterType;
public class GameEventCardCounters extends GameEvent {
public final Card card;
public final CounterType type;
public final int oldValue;
public final int newValue;
public GameEventCardCounters(Card card, CounterType counterType, int old, int newValue) {
this.card = card;
type = counterType;
this.oldValue = old;
this.newValue = newValue;
}
public record GameEventCardCounters(Card card, CounterType type, int oldValue, int newValue) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);

View File

@@ -2,7 +2,7 @@ package forge.game.event;
import forge.game.card.Card;
public class GameEventCardDamaged extends GameEvent {
public record GameEventCardDamaged(Card card, Card source, int amount, DamageType type) implements GameEvent {
public enum DamageType {
Normal,
@@ -11,18 +11,6 @@ public class GameEventCardDamaged extends GameEvent {
LoyaltyLoss
}
public final Card card;
public final Card source;
public final int amount;
public final DamageType type;
public GameEventCardDamaged(Card card, Card src, int damageToAdd, DamageType damageType) {
this.card = card;
source = src;
amount = damageToAdd;
type = damageType;
}
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);

View File

@@ -1,6 +1,6 @@
package forge.game.event;
public class GameEventCardDestroyed extends GameEvent {
public record GameEventCardDestroyed() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,12 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
public class GameEventCardForetold extends GameEvent {
public final Player activatingPlayer;
public GameEventCardForetold(Player player) {
activatingPlayer = player;
}
public record GameEventCardForetold(Player activatingPlayer) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,21 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
public class GameEventCardModeChosen extends GameEvent {
public final Player player;
public final String cardName;
public final String mode;
public final boolean log;
public final boolean random;
public GameEventCardModeChosen(Player player, String cardName, String mode, boolean log, boolean random) {
this.player = player;
this.cardName = cardName;
this.mode = mode;
this.log = log;
this.random = random;
}
public record GameEventCardModeChosen(Player player, String cardName, String mode, boolean log, boolean random) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,19 +2,7 @@ package forge.game.event;
import forge.game.card.Card;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventCardPhased extends GameEvent {
public final Card card;
public final boolean phaseState;
public GameEventCardPhased(Card card, boolean state) {
this.card = card;
phaseState = state;
}
public record GameEventCardPhased(Card card, boolean phaseState) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -3,16 +3,7 @@ package forge.game.event;
import forge.game.card.Card;
import forge.game.player.Player;
public class GameEventCardPlotted extends GameEvent {
public final Card card;
public final Player activatingPlayer;
public GameEventCardPlotted(Card card, Player player) {
this.card = card;
activatingPlayer = player;
}
public record GameEventCardPlotted(Card card, Player activatingPlayer) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -5,11 +5,9 @@ import forge.game.card.Card;
import java.util.Arrays;
import java.util.Collection;
public class GameEventCardRegenerated extends GameEvent {
public final Collection<Card> cards;
public record GameEventCardRegenerated(Collection<Card> cards) implements GameEvent {
public GameEventCardRegenerated(Card affected) {
cards = Arrays.asList(affected);
this(Arrays.asList(affected));
}
@Override

View File

@@ -2,16 +2,7 @@ package forge.game.event;
import forge.game.card.Card;
public class GameEventCardSacrificed extends GameEvent {
public final Card card;
/**
* TODO: Write javadoc for Constructor.
* @param card
*/
public GameEventCardSacrificed(Card card) {
this.card = card;
}
public record GameEventCardSacrificed(Card card) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -11,23 +11,20 @@ import forge.game.card.Card;
/**
* This means card's characteristics have changed on server, clients must re-request them
*/
public class GameEventCardStatsChanged extends GameEvent {
public record GameEventCardStatsChanged(Collection<Card> cards, boolean transform) implements GameEvent {
public final Collection<Card> cards;
public boolean transform = false;
public GameEventCardStatsChanged(Card affected) {
this(affected, false);
}
public GameEventCardStatsChanged(Card affected, boolean isTransform) {
cards = Arrays.asList(affected);
this(Arrays.asList(affected), false);
//the transform should only fire once so the flip effect sound will trigger once every transformation...
// disable for now
transform = false;
}
public GameEventCardStatsChanged(Collection<Card> affected) {
cards = affected;
this(affected, false);
}
/* (non-Javadoc)
@@ -35,7 +32,6 @@ public class GameEventCardStatsChanged extends GameEvent {
*/
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
// TODO Auto-generated method stub
return visitor.visit(this);
}

View File

@@ -2,14 +2,7 @@ package forge.game.event;
import forge.game.card.Card;
public class GameEventCardTapped extends GameEvent {
public final boolean tapped;
public final Card card;
public GameEventCardTapped(final Card card, final boolean tapped) {
this.tapped = tapped;
this.card = card;
}
public record GameEventCardTapped(Card card, boolean tapped) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,9 +1,6 @@
package forge.game.event;
public class GameEventCombatChanged extends GameEvent {
public GameEventCombatChanged() {
}
public record GameEventCombatChanged() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,15 +4,7 @@ import java.util.List;
import forge.game.card.Card;
public class GameEventCombatEnded extends GameEvent {
public final List<Card> attackers;
public final List<Card> blockers;
public GameEventCombatEnded(List<Card> attackers, List<Card> blockers) {
this.attackers = attackers;
this.blockers = blockers;
}
public record GameEventCombatEnded(List<Card> attackers, List<Card> blockers) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,15 +4,7 @@ import java.util.List;
import forge.game.card.Card;
public class GameEventCombatUpdate extends GameEvent {
public final List<Card> attackers;
public final List<Card> blockers;
public GameEventCombatUpdate(List<Card> attackers, List<Card> blockers) {
this.attackers = attackers;
this.blockers = blockers;
}
public record GameEventCombatUpdate(List<Card> attackers, List<Card> blockers) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,11 +1,6 @@
package forge.game.event;
public class GameEventDayTimeChanged extends GameEvent {
public final boolean daytime;
public GameEventDayTimeChanged(final boolean daytime) {
this.daytime = daytime;
}
public record GameEventDayTimeChanged(boolean daytime) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -6,18 +6,7 @@ import forge.game.player.Player;
import forge.util.CardTranslation;
import forge.util.Lang;
public class GameEventDoorChanged extends GameEvent {
public final Player activatingPlayer;
public final Card card;
public final CardStateName state;
public boolean unlock;
public GameEventDoorChanged(Player player, Card c, CardStateName state, boolean unlock) {
activatingPlayer = player;
card = c;
this.state = state;
this.unlock = unlock;
}
public record GameEventDoorChanged(Player activatingPlayer, Card card, CardStateName state, boolean unlock) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,6 +1,6 @@
package forge.game.event;
public class GameEventFlipCoin extends GameEvent {
public record GameEventFlipCoin() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,6 +1,7 @@
package forge.game.event;
public class GameEventGameFinished extends GameEvent {
public record GameEventGameFinished() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);

View File

@@ -4,14 +4,7 @@ import java.util.Collection;
import forge.game.GameOutcome;
public class GameEventGameOutcome extends GameEvent {
public final GameOutcome result;
public final Collection<GameOutcome> history;
public GameEventGameOutcome(GameOutcome lastOne, Collection<GameOutcome> history) {
this.result = lastOne;
this.history = history;
}
public record GameEventGameOutcome(GameOutcome result, Collection<GameOutcome> history) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,17 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventGameRestarted extends GameEvent {
public final Player whoRestarted;
public GameEventGameRestarted(Player playerTurn) {
whoRestarted = playerTurn;
}
public record GameEventGameRestarted(Player whoRestarted) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -5,22 +5,7 @@ import forge.game.player.Player;
import forge.util.Lang;
import forge.util.TextUtil;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventGameStarted extends GameEvent {
public final Player firstTurn;
public final Iterable<Player> players;
public final GameType gameType;
public GameEventGameStarted(GameType type, Player firstTurn, Iterable<Player> players) {
super();
this.gameType = type;
this.firstTurn = firstTurn;
this.players = players;
}
public record GameEventGameStarted(GameType gameType, Player firstTurn, Iterable<Player> players) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -3,17 +3,7 @@ package forge.game.event;
import forge.game.card.Card;
import forge.game.player.Player;
public class GameEventLandPlayed extends GameEvent {
public final Player player;
public final Card land;
public GameEventLandPlayed(Player player, Card land) {
this.player = player;
this.land = land;
}
public record GameEventLandPlayed(Player player, Card land) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);

View File

@@ -3,22 +3,7 @@ package forge.game.event;
import forge.game.player.Player;
// This special event denotes loss of mana due to phase end
public class GameEventManaBurn extends GameEvent {
public final Player player;
public final boolean causedLifeLoss;
public final int amount;
/**
* TODO: Write javadoc for Constructor.
* @param dealDamage
* @param burn
*/
public GameEventManaBurn(Player who, int burn, boolean dealDamage) {
player = who;
amount = burn;
causedLifeLoss = dealDamage;
}
public record GameEventManaBurn(Player player, boolean causedLifeLoss, int amount) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,20 +4,7 @@ import forge.game.mana.Mana;
import forge.game.player.Player;
import forge.util.Lang;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventManaPool extends GameEvent {
public final Player player;
public final EventValueChangeType mode;
public final Mana mana;
public GameEventManaPool(Player owner, EventValueChangeType changeMode, Mana mana) {
this.mana = mana;
player = owner;
mode = changeMode;
}
public record GameEventManaPool(Player player, EventValueChangeType mode, Mana mana) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,16 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventMulligan extends GameEvent {
public final Player player;
public GameEventMulligan(Player p) {
player = p;
}
public record GameEventMulligan(Player player) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,20 +4,7 @@ import forge.LobbyPlayer;
import forge.game.player.Player;
import forge.game.player.PlayerController;
public class GameEventPlayerControl extends GameEvent {
public final Player player;
public final LobbyPlayer oldLobbyPlayer;
public final PlayerController oldController;
public final LobbyPlayer newLobbyPlayer;
public final PlayerController newController;
public GameEventPlayerControl(final Player p, final LobbyPlayer oldLobbyPlayer, final PlayerController oldController, final LobbyPlayer newLobbyPlayer, final PlayerController newController) {
this.player = p;
this.oldLobbyPlayer = oldLobbyPlayer;
this.oldController = oldController;
this.newLobbyPlayer = newLobbyPlayer;
this.newController = newController;
}
public record GameEventPlayerControl(Player player, LobbyPlayer oldLobbyPlayer, PlayerController oldController, LobbyPlayer newLobbyPlayer, PlayerController newController) implements GameEvent {
@Override
public <T> T visit(final IGameEventVisitor<T> visitor) {

View File

@@ -3,18 +3,7 @@ package forge.game.event;
import forge.game.card.CounterType;
import forge.game.player.Player;
public class GameEventPlayerCounters extends GameEvent {
public final Player receiver;
public final CounterType type;
public final int oldValue;
public final int amount;
public GameEventPlayerCounters(Player recv, CounterType t, int old, int num) {
receiver = recv;
type = t;
oldValue = old;
amount = num;
}
public record GameEventPlayerCounters(Player receiver, CounterType type, int oldValue, int amount) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -3,33 +3,7 @@ package forge.game.event;
import forge.game.card.Card;
import forge.game.player.Player;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventPlayerDamaged extends GameEvent {
public final Player target;
public final Card source;
public final int amount;
final public boolean infect;
public final boolean combat;
/**
* TODO: Write javadoc for Constructor.
* @param player
* @param source
* @param amount
* @param isCombat
* @param infect
*/
public GameEventPlayerDamaged(Player player, Card source, int amount, boolean isCombat, boolean infect) {
target = player;
this.source = source;
this.amount = amount;
combat = isCombat;
this.infect = infect;
}
public record GameEventPlayerDamaged(Player target, Card source, int amount, boolean combat, boolean infect) implements GameEvent {
/* (non-Javadoc)
* @see forge.game.event.GameEvent#visit(forge.game.event.IGameEventVisitor)

View File

@@ -4,16 +4,7 @@ import forge.game.player.Player;
import forge.util.Lang;
import forge.util.TextUtil;
public class GameEventPlayerLivesChanged extends GameEvent {
public final Player player;
public final int oldLives;
public final int newLives;
public GameEventPlayerLivesChanged(Player who, int oldValue, int newValue) {
player = who;
oldLives = oldValue;
newLives = newValue;
}
public record GameEventPlayerLivesChanged(Player player, int oldLives, int newLives) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -6,18 +6,7 @@ import forge.game.player.Player;
*
*
*/
public class GameEventPlayerPoisoned extends GameEvent {
public final Player receiver;
public final Player source;
public final int oldValue;
public final int amount;
public GameEventPlayerPoisoned(Player recv, Player src, int old, int num) {
receiver = recv;
source = src;
oldValue = old;
amount = num;
}
public record GameEventPlayerPoisoned(Player receiver, Player source, int oldValue, int amount) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,21 +4,7 @@ import forge.game.phase.PhaseType;
import forge.game.player.Player;
import forge.util.TextUtil;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventPlayerPriority extends GameEvent {
public final Player turn;
public final PhaseType phase;
public final Player priority;
public GameEventPlayerPriority(Player playerTurn, PhaseType phase, Player priorityPlayer) {
turn = playerTurn;
this.phase = phase;
priority = priorityPlayer;
}
public record GameEventPlayerPriority(Player turn, PhaseType phase, Player priority) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,16 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
public class GameEventPlayerRadiation extends GameEvent {
public final Player receiver;
public final Player source;
public final int change;
public GameEventPlayerRadiation(Player recv, Player src, int chng) {
receiver = recv;
source = src;
change = chng;
}
public record GameEventPlayerRadiation(Player receiver, Player source, int change) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,16 +4,7 @@ import forge.game.player.Player;
import forge.util.Lang;
import forge.util.TextUtil;
public class GameEventPlayerShardsChanged extends GameEvent {
public final Player player;
public final int oldShards;
public final int newShards;
public GameEventPlayerShardsChanged(Player who, int oldValue, int newValue) {
player = who;
oldShards = oldValue;
newShards = newValue;
}
public record GameEventPlayerShardsChanged(Player player, int oldShards, int newShards) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -10,18 +10,10 @@ import forge.util.TextUtil;
/**
* This means card's characteristics have changed on server, clients must re-request them
*/
public class GameEventPlayerStatsChanged extends GameEvent {
public record GameEventPlayerStatsChanged(Collection<Player> players, boolean updateCards) implements GameEvent {
public final Collection<Player> players;
public final boolean updateCards;
public GameEventPlayerStatsChanged(Player affected, boolean updateCards) {
players = Arrays.asList(affected);
this.updateCards = updateCards;
}
public GameEventPlayerStatsChanged(Collection<Player> affected, boolean updateCards) {
players = affected;
this.updateCards = updateCards;
this(Arrays.asList(affected), updateCards);
}
/* (non-Javadoc)
@@ -29,7 +21,6 @@ public class GameEventPlayerStatsChanged extends GameEvent {
*/
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
// TODO Auto-generated method stub
return visitor.visit(this);
}

View File

@@ -1,12 +1,6 @@
package forge.game.event;
public class GameEventRandomLog extends GameEvent {
public final String message;
public GameEventRandomLog(String message) {
this.message = message;
}
public record GameEventRandomLog(String message) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,6 +1,6 @@
package forge.game.event;
public class GameEventRollDie extends GameEvent {
public record GameEventRollDie() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,16 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
public class GameEventScry extends GameEvent {
public final Player player;
public final int toTop, toBottom;
public GameEventScry(Player player, int toTop, int toBottom) {
this.player = player;
this.toTop = toTop;
this.toBottom = toBottom;
}
public record GameEventScry(Player player, int toTop, int toBottom) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -4,13 +4,7 @@ import forge.game.player.Player;
import forge.util.Lang;
import forge.util.TextUtil;
public class GameEventShuffle extends GameEvent {
public final Player player;
public GameEventShuffle(Player player) {
this.player = player;
}
public record GameEventShuffle(Player player) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,18 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
public class GameEventSpeedChanged extends GameEvent {
public final Player player;
public final int oldValue;
public final int newValue;
public GameEventSpeedChanged(Player affected, int oldValue, int newValue) {
player = affected;
this.oldValue = oldValue;
this.newValue = newValue;
}
public record GameEventSpeedChanged(Player player, int oldValue, int newValue) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);

View File

@@ -3,21 +3,7 @@ package forge.game.event;
import forge.game.spellability.SpellAbility;
import forge.game.spellability.SpellAbilityStackInstance;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventSpellAbilityCast extends GameEvent {
public final SpellAbility sa;
public final SpellAbilityStackInstance si;
public final int stackIndex;
public GameEventSpellAbilityCast(SpellAbility sp, SpellAbilityStackInstance si, int stackIndex) {
sa = sp;
this.si = si;
this.stackIndex = stackIndex;
}
public record GameEventSpellAbilityCast(SpellAbility sa, SpellAbilityStackInstance si, int stackIndex) implements GameEvent {
/* (non-Javadoc)
* @see forge.game.event.GameEvent#visit(forge.game.event.IGameEventVisitor)

View File

@@ -2,20 +2,10 @@ package forge.game.event;
import forge.game.spellability.SpellAbility;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventSpellRemovedFromStack extends GameEvent {
public final SpellAbility sa;
public GameEventSpellRemovedFromStack(SpellAbility spellAbility) {
sa = spellAbility;
}
public record GameEventSpellRemovedFromStack(SpellAbility sa) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
// TODO Auto-generated method stub
return visitor.visit(this);
}

View File

@@ -2,26 +2,7 @@ package forge.game.event;
import forge.game.spellability.SpellAbility;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventSpellResolved extends GameEvent {
public final SpellAbility spell;
public final boolean hasFizzled;
/**
* TODO: Write javadoc for Constructor.
* @param source
* @param sa
* @param hasFizzled
*/
public GameEventSpellResolved(SpellAbility sa, boolean hasFizzled) {
// TODO Auto-generated constructor stub
this.spell = sa;
this.hasFizzled = hasFizzled;
}
public record GameEventSpellResolved(SpellAbility spell, boolean hasFizzled) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,18 +2,7 @@ package forge.game.event;
import forge.game.card.Card;
public class GameEventSprocketUpdate extends GameEvent {
public final Card contraption;
public final int oldSprocket;
public final int sprocket;
public GameEventSprocketUpdate(Card contraption, int oldSprocket, int sprocket) {
this.contraption = contraption;
this.oldSprocket = oldSprocket;
this.sprocket = sprocket;
}
public record GameEventSprocketUpdate(Card contraption, int oldSprocket, int sprocket) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,15 +2,7 @@ package forge.game.event;
import forge.game.Game;
public class GameEventSubgameEnd extends GameEvent {
public final Game maingame;
public final String message;
public GameEventSubgameEnd(Game game, String message0) {
maingame = game;
message = message0;
}
public record GameEventSubgameEnd(Game maingame, String message) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);

View File

@@ -2,14 +2,7 @@ package forge.game.event;
import forge.game.Game;
public class GameEventSubgameStart extends GameEvent {
public final Game subgame;
public final String message;
public GameEventSubgameStart(Game subgame0, String message0) {
subgame = subgame0;
message = message0;
}
public record GameEventSubgameStart(Game subgame, String message) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -2,16 +2,7 @@ package forge.game.event;
import forge.game.player.Player;
public class GameEventSurveil extends GameEvent {
public final Player player;
public final int toLibrary, toGraveyard;
public GameEventSurveil(Player player, int toLibrary, int toGraveyard) {
this.player = player;
this.toLibrary = toLibrary;
this.toGraveyard = toGraveyard;
}
public record GameEventSurveil(Player player, int toLibrary, int toGraveyard) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,6 +1,6 @@
package forge.game.event;
public class GameEventTokenCreated extends GameEvent {
public record GameEventTokenCreated() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -3,16 +3,7 @@ package forge.game.event;
import forge.game.player.Player;
import forge.util.TextUtil;
public class GameEventTurnBegan extends GameEvent {
public final Player turnOwner;
public final int turnNumber;
public GameEventTurnBegan(Player turnOwner, int turnNumber) {
super();
this.turnOwner = turnOwner;
this.turnNumber = turnNumber;
}
public record GameEventTurnBegan(Player turnOwner, int turnNumber) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -1,6 +1,6 @@
package forge.game.event;
public class GameEventTurnEnded extends GameEvent {
public record GameEventTurnEnded() implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -5,20 +5,7 @@ import forge.game.player.Player;
import forge.util.Lang;
import forge.util.TextUtil;
/**
* TODO: Write javadoc for this type.
*
*/
public class GameEventTurnPhase extends GameEvent {
public final Player playerTurn;
public final PhaseType phase;
public final String phaseDesc;
public GameEventTurnPhase(Player player, PhaseType ph, String desc) {
playerTurn = player;
phase = ph;
phaseDesc = desc;
}
public record GameEventTurnPhase(Player playerTurn, PhaseType phase, String phaseDesc) implements GameEvent {
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {

View File

@@ -12,33 +12,18 @@ import forge.util.TextUtil;
* Stores information about the affected zone, player, card, and spell ability.
* Used for tracking zone changes such as casting, moving, or activating cards and abilities.
*/
public class GameEventZone extends GameEvent {
public final ZoneType zoneType;
public final Player player;
public final EventValueChangeType mode;
public final Card card;
public final SpellAbility sa;
public record GameEventZone(ZoneType zoneType, Player player, EventValueChangeType mode, Card card, SpellAbility sa) implements GameEvent {
public GameEventZone(ZoneType zoneType, Player player, EventValueChangeType added, Card c) {
this.zoneType = zoneType;
this.player = player;
this.mode = added;
this.card = c;
this.sa = null;
this(zoneType, player, added, c, null);
}
public GameEventZone(ZoneType zoneType, SpellAbility sa, EventValueChangeType added) {
this.zoneType = zoneType;
this.player = sa.getActivatingPlayer();
this.mode = added;
this.card = sa.getHostCard();
this.sa = sa;
this(zoneType, sa.getActivatingPlayer(), added, sa.getHostCard(), sa);
}
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
// TODO Auto-generated method stub
return visitor.visit(this);
}

View File

@@ -1,9 +1,5 @@
package forge.game.event;
/**
* TODO: Write javadoc for this type.
*
*/
public interface IGameEventVisitor<T> {
T visit(GameEventAnteCardsSelected event);
T visit(GameEventAttackersDeclared event);

View File

@@ -547,7 +547,7 @@ public class Player extends GameEntity implements Comparable<Player> {
life -= toLose;
view.updateLife(this);
if (manaBurn) {
game.fireEvent(new GameEventManaBurn(this, toLose, true));
game.fireEvent(new GameEventManaBurn(this, true, toLose));
} else {
game.fireEvent(new GameEventPlayerLivesChanged(this, oldLife, life));
}

View File

@@ -1269,15 +1269,15 @@ public final class CMatchUI
@Override
public void notifyStackAddition(GameEventSpellAbilityCast event) {
SpellAbility sa = event.sa;
SpellAbility sa = event.sa();
String stackNotificationPolicy = FModel.getPreferences().getPref(FPref.UI_STACK_EFFECT_NOTIFICATION_POLICY);
boolean isAi = sa.getActivatingPlayer().isAI();
boolean isTrigger = sa.isTrigger();
int stackIndex = event.stackIndex;
int stackIndex = event.stackIndex();
if (stackIndex == nextNotifiableStackIndex) {
if (ForgeConstants.STACK_EFFECT_NOTIFICATION_ALWAYS.equals(stackNotificationPolicy) || (ForgeConstants.STACK_EFFECT_NOTIFICATION_AI_AND_TRIGGERED.equals(stackNotificationPolicy) && (isAi || isTrigger))) {
// We can go and show the modal
SpellAbilityStackInstance si = event.si;
SpellAbilityStackInstance si = event.si();
MigLayout migLayout = new MigLayout("insets 15, left, gap 30, fill");
JPanel mainPanel = new JPanel(migLayout);

View File

@@ -350,9 +350,9 @@ public class HostedMatch {
@Override
public Void visit(final UiEventBlockerAssigned event) {
for (final PlayerControllerHuman humanController : humanControllers) {
humanController.getGui().updateSingleCard(event.blocker);
humanController.getGui().updateSingleCard(event.blocker());
final PlayerView p = humanController.getPlayer().getView();
if (event.attackerBeingBlocked != null && event.attackerBeingBlocked.getController().equals(p)) {
if (event.attackerBeingBlocked() != null && event.attackerBeingBlocked().getController().equals(p)) {
humanController.getGui().autoPassCancel(p);
}
}
@@ -362,27 +362,27 @@ public class HostedMatch {
@Override
public Void visit(final UiEventAttackerDeclared event) {
for (final PlayerControllerHuman humanController : humanControllers) {
humanController.getGui().updateSingleCard(event.attacker);
humanController.getGui().updateSingleCard(event.attacker());
}
return null;
}
@Override
public Void visit(final UiEventNextGameDecision event) {
addNextGameDecision(event.getController(), event.getDecision());
addNextGameDecision(event.controller(), event.decision());
return null;
}
@Override
public Void visit(final GameEventSubgameStart event) {
subGameCount++;
event.subgame.subscribeToEvents(SoundSystem.instance);
event.subgame.subscribeToEvents(visitor);
event.subgame().subscribeToEvents(SoundSystem.instance);
event.subgame().subscribeToEvents(visitor);
final GameView gameView = event.subgame.getView();
final GameView gameView = event.subgame().getView();
Runnable switchGameView = () -> {
for (final Player p : event.subgame.getPlayers()) {
for (final Player p : event.subgame().getPlayers()) {
if (p.getController() instanceof PlayerControllerHuman) {
final PlayerControllerHuman humanController = (PlayerControllerHuman) p.getController();
final IGuiGame gui = guis.get(p.getRegisteredPlayer());
@@ -393,8 +393,8 @@ public class HostedMatch {
gui.openView(new TrackableCollection<>(p.getView()));
gui.setGameView(null);
gui.setGameView(gameView);
event.subgame.subscribeToEvents(new FControlGameEventHandler(humanController));
gui.message(event.message);
event.subgame().subscribeToEvents(new FControlGameEventHandler(humanController));
gui.message(event.message());
}
}
};
@@ -404,7 +404,7 @@ public class HostedMatch {
GuiBase.getInterface().invokeInEdtAndWait(switchGameView);
//ensure opponents set properly
for (final Player p : event.subgame.getPlayers()) {
for (final Player p : event.subgame().getPlayers()) {
p.updateOpponentsForView();
}
@@ -413,9 +413,9 @@ public class HostedMatch {
@Override
public Void visit(final GameEventSubgameEnd event) {
final GameView gameView = event.maingame.getView();
final GameView gameView = event.maingame().getView();
Runnable switchGameView = () -> {
for (final Player p : event.maingame.getPlayers()) {
for (final Player p : event.maingame().getPlayers()) {
if (p.getController() instanceof PlayerControllerHuman) {
final PlayerControllerHuman humanController = (PlayerControllerHuman) p.getController();
final IGuiGame gui = guis.get(p.getRegisteredPlayer());
@@ -426,7 +426,7 @@ public class HostedMatch {
gui.setGameView(null);
gui.setGameView(gameView);
gui.updatePhase(true);
gui.message(event.message);
gui.message(event.message());
}
}
};

View File

@@ -549,9 +549,9 @@ public class QuestController {
if (ev instanceof GameEventMulligan) {
GameEventMulligan mev = (GameEventMulligan) ev;
// First mulligan is free
if (mev.player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()
&& getAssets().hasItem(QuestItemType.SLEIGHT) && mev.player.getStats().getMulliganCount() < 7) {
mev.player.drawCard();
if (mev.player().getLobbyPlayer().equals(GamePlayerUtil.getGuiPlayer())
&& getAssets().hasItem(QuestItemType.SLEIGHT) && mev.player().getStats().getMulliganCount() < 7) {
mev.player().drawCard();
}
}
}

View File

@@ -190,9 +190,9 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventTurnPhase ev) {
needPhaseUpdate = true;
needSaveState = !"dev".equals(ev.phaseDesc);
needSaveState = !"dev".equals(ev.phaseDesc());
Player ap = ev.playerTurn;
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);
@@ -209,15 +209,15 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventTurnBegan event) {
turnUpdate = event.turnOwner.getView();
processPlayer(event.turnOwner, livesUpdate);
turnUpdate = event.turnOwner().getView();
processPlayer(event.turnOwner(), livesUpdate);
return processEvent();
}
@Override
public Void visit(final GameEventAnteCardsSelected ev) {
final List<CardView> options = Lists.newArrayList();
for (final Entry<Player, Card> kv : ev.cards.entries()) {
for (final Entry<Player, Card> kv : ev.cards().entries()) {
//use fake card so real cards appear with proper formatting
final CardView fakeCard = new CardView(-1, null, " -- From " + Lang.getInstance().getPossesive(kv.getKey().getName()) + " deck --");
options.add(fakeCard);
@@ -229,17 +229,17 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventPlayerControl ev) {
if (ev.player.getGame().isGameOver()) {
if (ev.player().getGame().isGameOver()) {
return null;
}
final PlayerControllerHuman newController;
if (ev.newController instanceof PlayerControllerHuman) {
newController = (PlayerControllerHuman) ev.newController;
if (ev.newController() instanceof PlayerControllerHuman) {
newController = (PlayerControllerHuman) ev.newController();
} else {
newController = null;
}
matchController.setGameController(PlayerView.get(ev.player), newController);
matchController.setGameController(PlayerView.get(ev.player()), newController);
needPlayerControlUpdate = true;
return processEvent();
@@ -293,8 +293,8 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventSubgameEnd event) {
if (event.maingame != null) {
for (Player p : event.maingame.getPlayers()) {
if (event.maingame() != null) {
for (Player p : event.maingame().getPlayers()) {
updateZone(p, ZoneType.Battlefield);
updateZone(p, ZoneType.Hand);
updateZone(p, ZoneType.Graveyard);
@@ -302,9 +302,9 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
updateZone(p, ZoneType.Command);
}
//update matchscreen view to reflect maingame/previous daytime
if (event.maingame.isDay())
if (event.maingame().isDay())
matchController.updateDayTime("Day");
else if (event.maingame.isNight())
else if (event.maingame().isNight())
matchController.updateDayTime("Night");
return processEvent();
}
@@ -313,9 +313,9 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventZone event) {
if (event.player != null) {
if (event.player() != null) {
// anything except stack will get here
updateZone(event.player, event.zoneType);
updateZone(event.player(), event.zoneType());
return processEvent();
}
return null;
@@ -323,13 +323,13 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventCardAttachment event) {
final Game game = event.equipment.getGame();
final Zone zEq = game.getZoneOf(event.equipment);
if (event.oldEntity instanceof Card) {
updateZone(game.getZoneOf((Card)event.oldEntity));
final Game game = event.equipment().getGame();
final Zone zEq = game.getZoneOf(event.equipment());
if (event.oldEntity() instanceof Card oldCard) {
updateZone(game.getZoneOf(oldCard));
}
if (event.newTarget instanceof Card) {
updateZone(game.getZoneOf((Card)event.newTarget));
if (event.newTarget() instanceof Card newCard) {
updateZone(game.getZoneOf(newCard));
}
updateZone(zEq);
return processEvent();
@@ -338,32 +338,32 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventCardTapped event) {
refreshFieldUpdate = true; //update all players field when event un/tapped
processCard(event.card, cardsUpdate);
processCard(event.card(), cardsUpdate);
return processEvent();
}
@Override
public Void visit(final GameEventCardPhased event) {
processCard(event.card, cardsUpdate);
processCard(event.card(), cardsUpdate);
return processEvent();
}
@Override
public Void visit(final GameEventCardDamaged event) {
processCard(event.card, cardsUpdate);
processCard(event.card(), cardsUpdate);
return processEvent();
}
@Override
public Void visit(final GameEventCardCounters event) {
processCard(event.card, cardsUpdate);
processCard(event.card(), cardsUpdate);
return processEvent();
}
@Override
public Void visit(final GameEventBlockersDeclared event) {
final Set<Card> cards = new HashSet<>();
for (final MapOfLists<Card, Card> kv : event.blockers.values()) {
for (final MapOfLists<Card, Card> kv : event.blockers().values()) {
for (final Collection<Card> blockers : kv.values()) {
cards.addAll(blockers);
}
@@ -373,7 +373,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventAttackersDeclared event) {
return processCards(event.attackersMap.values(), cardsUpdate);
return processCards(event.attackersMap().values(), cardsUpdate);
}
@Override
@@ -387,8 +387,8 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
needCombatUpdate = true;
// This should remove sword/shield icons from combatants by the time game moves to M2
processCards(event.attackers, cardsUpdate);
return processCards(event.blockers, cardsUpdate);
processCards(event.attackers(), cardsUpdate);
return processCards(event.blockers(), cardsUpdate);
}
@Override
@@ -397,8 +397,8 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
return null; //not needed if single player only...
final CardCollection cards = new CardCollection();
cards.addAll(event.attackers);
cards.addAll(event.blockers);
cards.addAll(event.attackers());
cards.addAll(event.blockers());
refreshFieldUpdate = true;
@@ -409,8 +409,8 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventCardChangeZone event) {
if (GuiBase.getInterface().isLibgdxPort()) {
updateZone(event.from);
return updateZone(event.to);
updateZone(event.from());
return updateZone(event.to());
} else {
return processEvent();
}
@@ -419,14 +419,14 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventCardStatsChanged event) {
refreshFieldUpdate = true;
processCards(event.cards, cardsRefreshDetails);
return processCards(event.cards, cardsUpdate);
processCards(event.cards(), cardsRefreshDetails);
return processCards(event.cards(), cardsUpdate);
}
@Override
public Void visit(final GameEventCardForetold event) {
showExileUpdate = true;
activatingPlayer = event.activatingPlayer.getView();
activatingPlayer = event.activatingPlayer().getView();
playersWithValidTargets.put(activatingPlayer, null);
return processEvent();
}
@@ -434,7 +434,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventCardPlotted event) {
showExileUpdate = true;
activatingPlayer = event.activatingPlayer.getView();
activatingPlayer = event.activatingPlayer().getView();
playersWithValidTargets.put(activatingPlayer, null);
return processEvent();
}
@@ -442,8 +442,8 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventPlayerStatsChanged event) {
final CardCollection cards = new CardCollection();
for (final Player p : event.players) {
if (event.updateCards) {
for (final Player p : event.players()) {
if (event.updateCards()) {
cards.addAll(p.getAllCards());
}
processPlayer(p, livesUpdate);
@@ -453,22 +453,22 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
}
public Void visit(final GameEventLandPlayed event) {
processPlayer(event.player, livesUpdate);
matchController.handleLandPlayed(event.land);
return processCard(event.land, cardsRefreshDetails);
processPlayer(event.player(), livesUpdate);
matchController.handleLandPlayed(event.land());
return processCard(event.land(), cardsRefreshDetails);
}
@Override
public Void visit(final GameEventCardRegenerated event) {
refreshFieldUpdate = true;
processCards(event.cards, cardsRefreshDetails);
return processCards(event.cards, cardsUpdate);
processCards(event.cards(), cardsRefreshDetails);
return processCards(event.cards(), cardsUpdate);
}
@Override
public Void visit(final GameEventShuffle event) {
if (GuiBase.getInterface().isLibgdxPort()) {
return updateZone(event.player.getZone(ZoneType.Library));
return updateZone(event.player().getZone(ZoneType.Library));
} else {
return processEvent();
}
@@ -476,44 +476,44 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventDayTimeChanged event) {
matchController.updateDayTime(event.daytime ? "Day" : "Night");
matchController.updateDayTime(event.daytime() ? "Day" : "Night");
return processEvent();
}
@Override
public Void visit(GameEventSprocketUpdate event) {
updateZone(event.contraption.getZone());
updateZone(event.contraption().getZone());
return processEvent();
}
@Override
public Void visit(final GameEventManaPool event) {
return processPlayer(event.player, manaPoolUpdate);
return processPlayer(event.player(), manaPoolUpdate);
}
@Override
public Void visit(final GameEventPlayerLivesChanged event) {
return processPlayer(event.player, livesUpdate);
return processPlayer(event.player(), livesUpdate);
}
@Override
public Void visit(final GameEventPlayerShardsChanged event) {
return processPlayer(event.player, shardsUpdate);
return processPlayer(event.player(), shardsUpdate);
}
@Override
public Void visit(GameEventManaBurn event) {
return processPlayer(event.player, livesUpdate);
return processPlayer(event.player(), livesUpdate);
}
@Override
public Void visit(final GameEventPlayerPoisoned event) {
return processPlayer(event.receiver, livesUpdate);
return processPlayer(event.receiver(), livesUpdate);
}
@Override
public Void visit(final GameEventPlayerRadiation event) {
return processPlayer(event.receiver, livesUpdate);
return processPlayer(event.receiver(), livesUpdate);
}
@Override
@@ -523,6 +523,6 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventPlayerCounters event) {
return processPlayer(event.receiver, livesUpdate);
return processPlayer(event.receiver(), livesUpdate);
}
}

View File

@@ -75,9 +75,9 @@ public class FControlGamePlayback extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventTurnPhase ev) {
try {
final boolean isUiToStop = !humanController.getGui().isUiSetToSkipPhase(ev.playerTurn.getView(), ev.phase);
final boolean isUiToStop = !humanController.getGui().isUiSetToSkipPhase(ev.playerTurn().getView(), ev.phase());
switch (ev.phase) {
switch (ev.phase()) {
case COMBAT_END:
case COMBAT_DECLARE_ATTACKERS:
case COMBAT_DECLARE_BLOCKERS:
@@ -121,7 +121,7 @@ public class FControlGamePlayback extends IGameEventVisitor.Base<Void> {
@Override
public Void visit(final GameEventSpellResolved event) {
FThreads.invokeInEdtNowOrLater(() -> humanController.getGui().setCard(CardView.get(event.spell.getHostCard())));
FThreads.invokeInEdtNowOrLater(() -> humanController.getGui().setCard(CardView.get(event.spell().getHostCard())));
pauseForEvent(resolveDelay);
return null;
}
@@ -131,7 +131,7 @@ public class FControlGamePlayback extends IGameEventVisitor.Base<Void> {
*/
@Override
public Void visit(final GameEventSpellAbilityCast event) {
FThreads.invokeInEdtNowOrLater(() -> humanController.getGui().setCard(CardView.get(event.sa.getHostCard())));
FThreads.invokeInEdtNowOrLater(() -> humanController.getGui().setCard(CardView.get(event.sa().getHostCard())));
pauseForEvent(castDelay);
return null;
}

View File

@@ -2,7 +2,7 @@ package forge.gui.events;
import forge.game.event.Event;
public abstract class UiEvent extends Event {
public interface UiEvent extends Event {
public abstract <T> T visit(IUiEventVisitor<T> visitor);
}

View File

@@ -3,14 +3,7 @@ package forge.gui.events;
import forge.game.GameEntityView;
import forge.game.card.CardView;
public class UiEventAttackerDeclared extends UiEvent {
public final CardView attacker;
public final GameEntityView defender;
public UiEventAttackerDeclared(final CardView card, final GameEntityView currentDefender) {
attacker = card;
defender = currentDefender;
}
public record UiEventAttackerDeclared(CardView attacker, GameEntityView defender) implements UiEvent {
@Override
public <T> T visit(final IUiEventVisitor<T> visitor) {

View File

@@ -2,14 +2,7 @@ package forge.gui.events;
import forge.game.card.CardView;
public class UiEventBlockerAssigned extends UiEvent {
public final CardView blocker;
public final CardView attackerBeingBlocked;
public UiEventBlockerAssigned(final CardView card, final CardView currentAttacker) {
blocker = card;
attackerBeingBlocked = currentAttacker;
}
public record UiEventBlockerAssigned(CardView blocker, CardView attackerBeingBlocked) implements UiEvent {
@Override
public <T> T visit(final IUiEventVisitor<T> visitor) {

View File

@@ -3,22 +3,7 @@ package forge.gui.events;
import forge.gamemodes.match.NextGameDecision;
import forge.player.PlayerControllerHuman;
public final class UiEventNextGameDecision extends UiEvent {
private final PlayerControllerHuman controller;
private final NextGameDecision decision;
public UiEventNextGameDecision(final PlayerControllerHuman controller, final NextGameDecision decision) {
this.controller = controller;
this.decision = decision;
}
public PlayerControllerHuman getController() {
return controller;
}
public NextGameDecision getDecision() {
return decision;
}
public record UiEventNextGameDecision(PlayerControllerHuman controller, NextGameDecision decision) implements UiEvent {
@Override
public <T> T visit(IUiEventVisitor<T> visitor) {

View File

@@ -40,8 +40,8 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
public SoundEffectType visit(final GameEventCardAttachment event) { return SoundEffectType.Equip; }
@Override
public SoundEffectType visit(final GameEventCardChangeZone event) {
final ZoneType from = event.from == null ? null : event.from.getZoneType();
final ZoneType to = event.to.getZoneType();
final ZoneType from = event.from() == null ? null : event.from().getZoneType();
final ZoneType to = event.to().getZoneType();
if( from == ZoneType.Library && to == ZoneType.Hand) {
return SoundEffectType.Draw;
}
@@ -54,7 +54,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(GameEventCardStatsChanged event) {
return event.transform ? SoundEffectType.FlipCard : null ;
return event.transform() ? SoundEffectType.FlipCard : null ;
}
@Override
@@ -62,7 +62,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(final GameEventCardSacrificed event) { return SoundEffectType.Sacrifice; }
@Override
public SoundEffectType visit(final GameEventCardCounters event) { return event.newValue > event.oldValue ? SoundEffectType.AddCounter : event.newValue < event.oldValue ? SoundEffectType.RemoveCounter : null; }
public SoundEffectType visit(final GameEventCardCounters event) { return event.newValue() > event.oldValue() ? SoundEffectType.AddCounter : event.newValue() < event.oldValue() ? SoundEffectType.RemoveCounter : null; }
@Override
public SoundEffectType visit(final GameEventTurnEnded event) { return SoundEffectType.EndOfTurn; }
@Override
@@ -70,7 +70,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(final GameEventRollDie event) { return SoundEffectType.RollDie; }
@Override
public SoundEffectType visit(final GameEventPlayerLivesChanged event) { return event.newLives < event.oldLives ? SoundEffectType.LifeLoss : SoundEffectType.LifeGain; }
public SoundEffectType visit(final GameEventPlayerLivesChanged event) { return event.newLives() < event.oldLives() ? SoundEffectType.LifeLoss : SoundEffectType.LifeGain; }
@Override
public SoundEffectType visit(final GameEventPlayerShardsChanged event) { return SoundEffectType.TakeShard; }
@Override
@@ -80,27 +80,27 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(final GameEventShuffle event) { return SoundEffectType.Shuffle; }
@Override
public SoundEffectType visit(final GameEventSpeedChanged event) { return event.newValue > event.oldValue ? SoundEffectType.SpeedUp : null; }
public SoundEffectType visit(final GameEventSpeedChanged event) { return event.newValue() > event.oldValue() ? SoundEffectType.SpeedUp : null; }
@Override
public SoundEffectType visit(final GameEventTokenCreated event) { return SoundEffectType.Token; }
@Override
public SoundEffectType visit(final GameEventSprocketUpdate event) {
if(event.oldSprocket == event.sprocket || event.sprocket <= 0)
if(event.oldSprocket() == event.sprocket() || event.sprocket() <= 0)
return null;
return SoundEffectType.Sprocket;
}
@Override
public SoundEffectType visit(final GameEventDayTimeChanged event) {
return event.daytime ? SoundEffectType.Daytime : SoundEffectType.Nighttime;
return event.daytime() ? SoundEffectType.Daytime : SoundEffectType.Nighttime;
}
@Override
public SoundEffectType visit(final GameEventBlockersDeclared event) {
final boolean isLocalHuman = event.defendingPlayer.getLobbyPlayer() == player;
final boolean isLocalHuman = event.defendingPlayer().getLobbyPlayer().equals(player);
if (isLocalHuman) {
return null; // already played sounds in interactive mode
}
for (final MapOfLists<Card, Card> ab : event.blockers.values()) {
for (final MapOfLists<Card, Card> ab : event.blockers().values()) {
for(final Collection<Card> bb : ab.values()) {
if ( !bb.isEmpty() ) {
// hasAnyBlocker = true;
@@ -116,7 +116,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
*/
@Override
public SoundEffectType visit(final GameEventGameOutcome event) {
final boolean humanWonTheDuel = event.result.getWinningLobbyPlayer() == player;
final boolean humanWonTheDuel = event.result().getWinningLobbyPlayer().equals(player);
return humanWonTheDuel ? SoundEffectType.WinDuel : SoundEffectType.LoseDuel;
}
@@ -126,12 +126,12 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
*/
@Override
public SoundEffectType visit(final GameEventSpellResolved evt) {
if (evt.spell == null ) {
if (evt.spell() == null ) {
return null;
}
final Card source = evt.spell.getHostCard();
if (evt.spell.isSpell()) {
final Card source = evt.spell().getHostCard();
if (evt.spell().isSpell()) {
// if there's a specific effect for this particular card, play it and
// we're done.
if (hasSpecificCardEffect(source)) {
@@ -167,7 +167,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
*/
@Override
public SoundEffectType visit(final GameEventCardTapped event) {
return event.tapped ? SoundEffectType.Tap : SoundEffectType.Untap;
return event.tapped() ? SoundEffectType.Tap : SoundEffectType.Untap;
}
/**
@@ -185,9 +185,9 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(GameEventZone event) {
Card card = event.card;
ZoneType zoneTo = event.zoneType;
EventValueChangeType zoneEventMode = event.mode;
Card card = event.card();
ZoneType zoneTo = event.zoneType();
EventValueChangeType zoneEventMode = event.mode();
SoundEffectType resultSound = null;
if(zoneEventMode == EventValueChangeType.Added && zoneTo == ZoneType.Battlefield) {
if(card.isLand()) {
@@ -335,12 +335,11 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
public String getScriptedSoundEffectName(final GameEvent evt) {
Card c = null;
if (evt instanceof GameEventSpellResolved) {
c = ((GameEventSpellResolved) evt).spell.getHostCard();
} else if (evt instanceof GameEventZone) {
GameEventZone evZone = (GameEventZone)evt;
if (evZone.zoneType == ZoneType.Battlefield && evZone.mode == EventValueChangeType.Added && evZone.card.isLand()) {
c = evZone.card; // assuming a land is played or otherwise put on the battlefield
if (evt instanceof GameEventSpellResolved evSpell) {
c = evSpell.spell().getHostCard();
} else if (evt instanceof GameEventZone evZone) {
if (evZone.zoneType() == ZoneType.Battlefield && evZone.mode() == EventValueChangeType.Added && evZone.card().isLand()) {
c = evZone.card(); // assuming a land is played or otherwise put on the battlefield
}
}
@@ -360,7 +359,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
@Override
public SoundEffectType visit(final UiEventBlockerAssigned event) {
return event.attackerBeingBlocked == null ? null : SoundEffectType.Block;
return event.attackerBeingBlocked() == null ? null : SoundEffectType.Block;
}
@Override
public SoundEffectType visit(final UiEventAttackerDeclared event) {