mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 11:18:01 +00:00
a good general game event for card change zone
This commit is contained in:
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -14446,11 +14446,11 @@ src/main/java/forge/game/event/GameEventAnteCardsSelected.java -text
|
|||||||
src/main/java/forge/game/event/GameEventAttackersDeclared.java -text
|
src/main/java/forge/game/event/GameEventAttackersDeclared.java -text
|
||||||
src/main/java/forge/game/event/GameEventBlockerAssigned.java -text
|
src/main/java/forge/game/event/GameEventBlockerAssigned.java -text
|
||||||
src/main/java/forge/game/event/GameEventBlockersDeclared.java -text
|
src/main/java/forge/game/event/GameEventBlockersDeclared.java -text
|
||||||
|
src/main/java/forge/game/event/GameEventCardChangeZone.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardDamaged.java -text
|
src/main/java/forge/game/event/GameEventCardDamaged.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardDestroyed.java -text
|
src/main/java/forge/game/event/GameEventCardDestroyed.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardDiscarded.java -text
|
src/main/java/forge/game/event/GameEventCardDiscarded.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardEquipped.java -text
|
src/main/java/forge/game/event/GameEventCardEquipped.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardExiled.java -text
|
|
||||||
src/main/java/forge/game/event/GameEventCardRegenerated.java -text
|
src/main/java/forge/game/event/GameEventCardRegenerated.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardSacrificed.java -text
|
src/main/java/forge/game/event/GameEventCardSacrificed.java -text
|
||||||
src/main/java/forge/game/event/GameEventCardTapped.java -text
|
src/main/java/forge/game/event/GameEventCardTapped.java -text
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ import forge.card.trigger.Trigger;
|
|||||||
import forge.card.trigger.TriggerType;
|
import forge.card.trigger.TriggerType;
|
||||||
import forge.card.trigger.ZCTrigger;
|
import forge.card.trigger.ZCTrigger;
|
||||||
import forge.game.ai.ComputerUtil;
|
import forge.game.ai.ComputerUtil;
|
||||||
|
import forge.game.event.GameEventCardChangeZone;
|
||||||
import forge.game.event.GameEventCardDestroyed;
|
import forge.game.event.GameEventCardDestroyed;
|
||||||
import forge.game.event.GameEventCardExiled;
|
|
||||||
import forge.game.event.GameEventCardRegenerated;
|
import forge.game.event.GameEventCardRegenerated;
|
||||||
import forge.game.event.GameEventCardSacrificed;
|
import forge.game.event.GameEventCardSacrificed;
|
||||||
import forge.game.event.GameEventGameFinished;
|
import forge.game.event.GameEventGameFinished;
|
||||||
@@ -123,6 +123,10 @@ public class GameAction {
|
|||||||
* @return a {@link forge.Card} object.
|
* @return a {@link forge.Card} object.
|
||||||
*/
|
*/
|
||||||
public Card changeZone(final Zone zoneFrom, final Zone zoneTo, final Card c, Integer position) {
|
public Card changeZone(final Zone zoneFrom, final Zone zoneTo, final Card c, Integer position) {
|
||||||
|
// play the Exile sound
|
||||||
|
game.fireEvent(new GameEventCardChangeZone(c, zoneFrom, zoneTo));
|
||||||
|
|
||||||
|
|
||||||
if (c.isCopiedSpell()) {
|
if (c.isCopiedSpell()) {
|
||||||
if ((zoneFrom != null)) {
|
if ((zoneFrom != null)) {
|
||||||
zoneFrom.remove(c);
|
zoneFrom.remove(c);
|
||||||
@@ -693,10 +697,6 @@ public class GameAction {
|
|||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
final PlayerZone removed = c.getOwner().getZone(ZoneType.Exile);
|
final PlayerZone removed = c.getOwner().getZone(ZoneType.Exile);
|
||||||
|
|
||||||
// play the Exile sound
|
|
||||||
game.fireEvent(new GameEventCardExiled());
|
|
||||||
|
|
||||||
return moveTo(removed, c);
|
return moveTo(removed, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
24
src/main/java/forge/game/event/GameEventCardChangeZone.java
Normal file
24
src/main/java/forge/game/event/GameEventCardChangeZone.java
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
package forge.game.event;
|
||||||
|
|
||||||
|
import forge.Card;
|
||||||
|
import forge.game.zone.Zone;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T visit(IGameEventVisitor<T> visitor) {
|
||||||
|
return visitor.visit(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package forge.game.event;
|
|
||||||
|
|
||||||
public class GameEventCardExiled extends GameEvent {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> T visit(IGameEventVisitor<T> visitor) {
|
|
||||||
return visitor.visit(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -12,7 +12,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
T visit(GameEventCardDestroyed event);
|
T visit(GameEventCardDestroyed event);
|
||||||
T visit(GameEventCardDiscarded event);
|
T visit(GameEventCardDiscarded event);
|
||||||
T visit(GameEventCardEquipped event);
|
T visit(GameEventCardEquipped event);
|
||||||
T visit(GameEventCardExiled event);
|
T visit(GameEventCardChangeZone event);
|
||||||
T visit(GameEventCardRegenerated event);
|
T visit(GameEventCardRegenerated event);
|
||||||
T visit(GameEventCardSacrificed event);
|
T visit(GameEventCardSacrificed event);
|
||||||
T visit(GameEventAnteCardsSelected event);
|
T visit(GameEventAnteCardsSelected event);
|
||||||
@@ -52,7 +52,7 @@ public interface IGameEventVisitor<T> {
|
|||||||
public T visit(GameEventCardDestroyed event) { return null; }
|
public T visit(GameEventCardDestroyed event) { return null; }
|
||||||
public T visit(GameEventCardDiscarded event) { return null; }
|
public T visit(GameEventCardDiscarded event) { return null; }
|
||||||
public T visit(GameEventCardEquipped event) { return null; }
|
public T visit(GameEventCardEquipped event) { return null; }
|
||||||
public T visit(GameEventCardExiled event) { return null; }
|
public T visit(GameEventCardChangeZone event) { return null; }
|
||||||
public T visit(GameEventCardRegenerated event) { return null; }
|
public T visit(GameEventCardRegenerated event) { return null; }
|
||||||
public T visit(GameEventCardSacrificed event) { return null; }
|
public T visit(GameEventCardSacrificed event) { return null; }
|
||||||
public T visit(GameEventAnteCardsSelected event) { return null; }
|
public T visit(GameEventAnteCardsSelected event) { return null; }
|
||||||
|
|||||||
@@ -303,7 +303,7 @@ public class LimitedDeckBuilder {
|
|||||||
final float p = (float) clrCnts[i] / (float) totalColor;
|
final float p = (float) clrCnts[i] / (float) totalColor;
|
||||||
final int nLand = Math.round(landsNeeded * p); // desired truncation to int
|
final int nLand = Math.round(landsNeeded * p); // desired truncation to int
|
||||||
if (Preferences.DEV_MODE) {
|
if (Preferences.DEV_MODE) {
|
||||||
System.out.printf("Basics[%s]: %d/%d = %f%% = %d cards", Constant.Color.BASIC_LANDS.get(i), clrCnts[i], totalColor, 100*p, nLand);
|
System.out.printf("Basics[%s]: %d/%d = %f%% = %d cards%n", Constant.Color.BASIC_LANDS.get(i), clrCnts[i], totalColor, 100*p, nLand);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < nLand; j++) {
|
for (int j = 0; j < nLand; j++) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import forge.Card;
|
|||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.card.spellability.SpellAbility;
|
import forge.card.spellability.SpellAbility;
|
||||||
import forge.game.event.GameEventBlockerAssigned;
|
import forge.game.event.GameEventBlockerAssigned;
|
||||||
|
import forge.game.event.GameEventCardChangeZone;
|
||||||
import forge.game.event.GameEventCardDamaged;
|
import forge.game.event.GameEventCardDamaged;
|
||||||
import forge.game.event.GameEventCardDestroyed;
|
import forge.game.event.GameEventCardDestroyed;
|
||||||
import forge.game.event.GameEventCardDiscarded;
|
import forge.game.event.GameEventCardDiscarded;
|
||||||
@@ -16,7 +17,6 @@ import forge.game.event.GameEventDrawCard;
|
|||||||
import forge.game.event.GameEventGameOutcome;
|
import forge.game.event.GameEventGameOutcome;
|
||||||
import forge.game.event.GameEventTurnEnded;
|
import forge.game.event.GameEventTurnEnded;
|
||||||
import forge.game.event.GameEvent;
|
import forge.game.event.GameEvent;
|
||||||
import forge.game.event.GameEventCardExiled;
|
|
||||||
import forge.game.event.GameEventFlipCoin;
|
import forge.game.event.GameEventFlipCoin;
|
||||||
import forge.game.event.GameEventLandPlayed;
|
import forge.game.event.GameEventLandPlayed;
|
||||||
import forge.game.event.GameEventLifeLoss;
|
import forge.game.event.GameEventLifeLoss;
|
||||||
@@ -26,6 +26,7 @@ import forge.game.event.GameEventShuffle;
|
|||||||
import forge.game.event.GameEventSpellResolved;
|
import forge.game.event.GameEventSpellResolved;
|
||||||
import forge.game.event.GameEventTokenCreated;
|
import forge.game.event.GameEventTokenCreated;
|
||||||
import forge.game.event.IGameEventVisitor;
|
import forge.game.event.IGameEventVisitor;
|
||||||
|
import forge.game.zone.ZoneType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is in charge of converting any forge.game.event.Event to a SoundEffectType.
|
* This class is in charge of converting any forge.game.event.Event to a SoundEffectType.
|
||||||
@@ -39,7 +40,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> {
|
|||||||
public SoundEffectType visit(GameEventCardDestroyed event) { return SoundEffectType.Destroy; }
|
public SoundEffectType visit(GameEventCardDestroyed event) { return SoundEffectType.Destroy; }
|
||||||
public SoundEffectType visit(GameEventCardDiscarded event) { return SoundEffectType.Discard; }
|
public SoundEffectType visit(GameEventCardDiscarded event) { return SoundEffectType.Discard; }
|
||||||
public SoundEffectType visit(GameEventCardEquipped event) { return SoundEffectType.Equip; }
|
public SoundEffectType visit(GameEventCardEquipped event) { return SoundEffectType.Equip; }
|
||||||
public SoundEffectType visit(GameEventCardExiled event) { return SoundEffectType.Exile; }
|
public SoundEffectType visit(GameEventCardChangeZone event) { return event.to.getZoneType() == ZoneType.Exile ? SoundEffectType.Exile : null; }
|
||||||
public SoundEffectType visit(GameEventCardRegenerated event) { return SoundEffectType.Regen; }
|
public SoundEffectType visit(GameEventCardRegenerated event) { return SoundEffectType.Regen; }
|
||||||
public SoundEffectType visit(GameEventCardSacrificed event) { return SoundEffectType.Sacrifice; }
|
public SoundEffectType visit(GameEventCardSacrificed event) { return SoundEffectType.Sacrifice; }
|
||||||
public SoundEffectType visit(GameEventCounterAdded event) { return event.Amount > 0 ? SoundEffectType.AddCounter : null; }
|
public SoundEffectType visit(GameEventCounterAdded event) { return event.Amount > 0 ? SoundEffectType.AddCounter : null; }
|
||||||
|
|||||||
Reference in New Issue
Block a user