mirror of
https://github.com/correl/mage.git
synced 2024-12-25 11:11:16 +00:00
Move the Token field added from GameEvent to a subclass.
This commit is contained in:
parent
cc9629ed51
commit
0d382d3875
5 changed files with 33 additions and 18 deletions
|
@ -12,6 +12,7 @@ import mage.constants.Duration;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
import mage.game.events.CreateTokenEvent;
|
||||||
import mage.game.events.EntersTheBattlefieldEvent;
|
import mage.game.events.EntersTheBattlefieldEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
|
@ -68,7 +69,7 @@ class DivineVisitationEffect extends ReplacementEffectImpl {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||||
event.setToken(new AngelVigilanceToken());
|
((CreateTokenEvent) event).setToken(new AngelVigilanceToken());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import mage.constants.Duration;
|
||||||
import mage.constants.Outcome;
|
import mage.constants.Outcome;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
import mage.game.events.CreateTokenEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.ZoneChangeEvent;
|
import mage.game.events.ZoneChangeEvent;
|
||||||
import mage.players.Player;
|
import mage.players.Player;
|
||||||
|
@ -76,7 +77,7 @@ class GatherSpecimensReplacementEffect extends ReplacementEffectImpl {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (event.getType() == GameEvent.EventType.CREATE_TOKEN && event.getToken().isCreature()) {
|
if (event.getType() == GameEvent.EventType.CREATE_TOKEN && ((CreateTokenEvent) event).getToken().isCreature()) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
return controller != null && controller.hasOpponent(event.getPlayerId(), game);
|
return controller != null && controller.hasOpponent(event.getPlayerId(), game);
|
||||||
}
|
}
|
||||||
|
|
23
Mage/src/main/java/mage/game/events/CreateTokenEvent.java
Normal file
23
Mage/src/main/java/mage/game/events/CreateTokenEvent.java
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package mage.game.events;
|
||||||
|
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.permanent.token.Token;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public class CreateTokenEvent extends GameEvent {
|
||||||
|
private Token token;
|
||||||
|
|
||||||
|
public CreateTokenEvent(UUID sourceId, UUID controllerId, int amount, Token token) {
|
||||||
|
super(EventType.CREATE_TOKEN, null, sourceId, controllerId, amount, false);
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Token getToken() {
|
||||||
|
return token;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setToken(Token token) {
|
||||||
|
this.token = token;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,7 +2,6 @@ package mage.game.events;
|
||||||
|
|
||||||
import mage.MageObjectReference;
|
import mage.MageObjectReference;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.permanent.token.Token;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -14,7 +13,6 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
public class GameEvent implements Serializable {
|
public class GameEvent implements Serializable {
|
||||||
|
|
||||||
protected Token token;
|
|
||||||
protected EventType type;
|
protected EventType type;
|
||||||
protected UUID targetId;
|
protected UUID targetId;
|
||||||
protected UUID sourceId;
|
protected UUID sourceId;
|
||||||
|
@ -341,17 +339,13 @@ public class GameEvent implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, MageObjectReference reference) {
|
public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, MageObjectReference reference) {
|
||||||
this(type, null, targetId, sourceId, playerId, 0, false, reference, null);
|
this(type, null, targetId, sourceId, playerId, 0, false, reference);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
|
public GameEvent(EventType type, UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
|
||||||
this(type, null, targetId, sourceId, playerId, amount, flag);
|
this(type, null, targetId, sourceId, playerId, amount, flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameEvent(EventType type, UUID sourceId, UUID playerId, int amount, Token token) {
|
|
||||||
this(type, null, null, sourceId, playerId, amount, false, null, token);
|
|
||||||
}
|
|
||||||
|
|
||||||
public GameEvent(UUID customEventType, UUID targetId, UUID sourceId, UUID playerId) {
|
public GameEvent(UUID customEventType, UUID targetId, UUID sourceId, UUID playerId) {
|
||||||
this(EventType.CUSTOM_EVENT, customEventType, targetId, sourceId, playerId, 0, false);
|
this(EventType.CUSTOM_EVENT, customEventType, targetId, sourceId, playerId, 0, false);
|
||||||
}
|
}
|
||||||
|
@ -404,11 +398,11 @@ public class GameEvent implements Serializable {
|
||||||
|
|
||||||
private GameEvent(EventType type, UUID customEventType,
|
private GameEvent(EventType type, UUID customEventType,
|
||||||
UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
|
UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag) {
|
||||||
this(type, customEventType, targetId, sourceId, playerId, amount, flag, null, null);
|
this(type, customEventType, targetId, sourceId, playerId, amount, flag, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private GameEvent(EventType type, UUID customEventType,
|
private GameEvent(EventType type, UUID customEventType,
|
||||||
UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag, MageObjectReference reference, Token token) {
|
UUID targetId, UUID sourceId, UUID playerId, int amount, boolean flag, MageObjectReference reference) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.customEventType = customEventType;
|
this.customEventType = customEventType;
|
||||||
this.targetId = targetId;
|
this.targetId = targetId;
|
||||||
|
@ -417,7 +411,6 @@ public class GameEvent implements Serializable {
|
||||||
this.playerId = playerId;
|
this.playerId = playerId;
|
||||||
this.flag = flag;
|
this.flag = flag;
|
||||||
this.reference = reference;
|
this.reference = reference;
|
||||||
this.token = token;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EventType getType() {
|
public EventType getType() {
|
||||||
|
@ -452,10 +445,6 @@ public class GameEvent implements Serializable {
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Token getToken() { return token; }
|
|
||||||
|
|
||||||
public void setToken(Token token) { this.token = token; }
|
|
||||||
|
|
||||||
public void setAmountForCounters(int amount, boolean isEffect) {
|
public void setAmountForCounters(int amount, boolean isEffect) {
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import mage.abilities.Ability;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
import mage.constants.Zone;
|
import mage.constants.Zone;
|
||||||
import mage.game.Game;
|
import mage.game.Game;
|
||||||
|
import mage.game.events.CreateTokenEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
import mage.game.events.GameEvent.EventType;
|
||||||
import mage.game.events.ZoneChangeEvent;
|
import mage.game.events.ZoneChangeEvent;
|
||||||
|
@ -165,7 +166,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
||||||
}
|
}
|
||||||
lastAddedTokenIds.clear();
|
lastAddedTokenIds.clear();
|
||||||
|
|
||||||
GameEvent event = new GameEvent(EventType.CREATE_TOKEN, sourceId, controllerId, amount, this);
|
CreateTokenEvent event = new CreateTokenEvent(sourceId, controllerId, amount, this);
|
||||||
if (!game.replaceEvent(event)) {
|
if (!game.replaceEvent(event)) {
|
||||||
putOntoBattlefieldHelper(event, game, tapped, attacking, attackedPlayer);
|
putOntoBattlefieldHelper(event, game, tapped, attacking, attackedPlayer);
|
||||||
return true;
|
return true;
|
||||||
|
@ -173,7 +174,7 @@ public abstract class TokenImpl extends MageObjectImpl implements Token {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void putOntoBattlefieldHelper(GameEvent event, Game game, boolean tapped, boolean attacking, UUID attackedPlayer) {
|
private static void putOntoBattlefieldHelper(CreateTokenEvent event, Game game, boolean tapped, boolean attacking, UUID attackedPlayer) {
|
||||||
Player controller = game.getPlayer(event.getPlayerId());
|
Player controller = game.getPlayer(event.getPlayerId());
|
||||||
Token token = event.getToken();
|
Token token = event.getToken();
|
||||||
int amount = event.getAmount();
|
int amount = event.getAmount();
|
||||||
|
|
Loading…
Reference in a new issue