a good general game event for card change zone

This commit is contained in:
Maxmtg
2013-06-16 23:12:49 +00:00
parent 58a333ef99
commit 9aff5237ea
7 changed files with 36 additions and 21 deletions

2
.gitattributes vendored
View File

@@ -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

View File

@@ -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);
} }

View 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);
}
}

View File

@@ -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);
}
}

View File

@@ -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; }

View File

@@ -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++) {

View File

@@ -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; }