Add GameEventDoorChanged for log

This commit is contained in:
Hans Mackowiak
2025-02-16 17:41:28 +01:00
parent 16e871be7b
commit 99bc83ae84
6 changed files with 55 additions and 3 deletions

View File

@@ -304,8 +304,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
@Override
public GameLogEntry visit(GameEventCardForetold ev) {
String sb = TextUtil.concatWithSpace(ev.activatingPlayer.toString(), "has foretold.");
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, sb);
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, ev.toString());
}
@Override
@@ -313,6 +312,11 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, ev.toString());
}
@Override
public GameLogEntry visit(GameEventDoorChanged ev) {
return new GameLogEntry(GameLogEntryType.STACK_RESOLVE, ev.toString());
}
@Subscribe
public void recieve(GameEvent ev) {
GameLogEntry le = ev.visit(this);

View File

@@ -8,6 +8,7 @@ import forge.game.ability.AbilityKey;
import forge.game.ability.SpellAbilityEffect;
import forge.game.card.Card;
import forge.game.card.CardCollection;
import forge.game.event.GameEventCardPlotted;
import forge.game.player.Player;
import forge.game.spellability.SpellAbility;
import forge.game.trigger.TriggerType;
@@ -48,6 +49,8 @@ public class AlterAttributeEffect extends SpellAbilityEffect {
switch (attr.trim()) {
case "Plotted":
altered = gameCard.setPlotted(activate);
c.getGame().fireEvent(new GameEventCardPlotted(c, sa.getActivatingPlayer()));
break;
case "Solve":
case "Solved":

View File

@@ -8181,6 +8181,8 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
updateRooms();
getGame().fireEvent(new GameEventDoorChanged(p, this, stateName, true));
Map<AbilityKey, Object> unlockParams = AbilityKey.mapFromPlayer(p);
unlockParams.put(AbilityKey.Card, this);
unlockParams.put(AbilityKey.CardState, getState(stateName));
@@ -8205,6 +8207,8 @@ public class Card extends GameEntity implements Comparable<Card>, IHasSVars, ITr
updateRooms();
getGame().fireEvent(new GameEventDoorChanged(p, this, stateName, false));
return true;
}

View File

@@ -19,6 +19,6 @@ public class GameEventCardForetold extends GameEvent {
*/
@Override
public String toString() {
return activatingPlayer.getName() + " has foretold a card.";
return activatingPlayer.getName() + " has foretold.";
}
}

View File

@@ -0,0 +1,39 @@
package forge.game.event;
import forge.card.CardStateName;
import forge.game.card.Card;
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;
}
@Override
public <T> T visit(IGameEventVisitor<T> visitor) {
return visitor.visit(this);
}
@Override
public String toString() {
String doorName = CardTranslation.getTranslatedName(card.getState(state));
StringBuilder sb = new StringBuilder();
sb.append(activatingPlayer);
sb.append(" ");
sb.append(unlock ? "unlocks" : "locks");
sb.append(" ");
sb.append(Lang.getInstance().getPossessedObject(doorName, "Door"));
return sb.toString();
}
}

View File

@@ -60,6 +60,7 @@ public interface IGameEventVisitor<T> {
T visit(GameEventCardForetold event);
T visit(GameEventCardPlotted event);
T visit(GameEventDayTimeChanged event);
T visit(GameEventDoorChanged event);
// This is base class for all visitors.
class Base<T> implements IGameEventVisitor<T>{
@@ -118,5 +119,6 @@ public interface IGameEventVisitor<T> {
public T visit(GameEventCardForetold event) { return null; }
public T visit(GameEventCardPlotted event) { return null; }
public T visit(GameEventDayTimeChanged event) { return null; }
public T visit(GameEventDoorChanged event) { return null; }
}
}