package magic.model.event;
import magic.model.MagicGame;
import magic.model.MagicCard;
import magic.model.MagicPlayer;
import magic.model.MagicLocationType;
import magic.model.stack.MagicCardOnStack;
import magic.model.action.PutItemOnStackAction;
import magic.model.action.RemoveCardAction;
public class MagicPutCardOnStackEvent extends MagicEvent {
public MagicPutCardOnStackEvent(final MagicCard source, final MagicPlayer player, final MagicLocationType fromLocation, final MagicLocationType toLocation) {
super(
source,
player,
fromLocation.ordinal() * 10 + toLocation.ordinal(),
EVENT_ACTION,
""
);
}
private static final MagicEventAction EVENT_ACTION = (final MagicGame game, final MagicEvent event) -> {
final MagicCardOnStack cardOnStack = new MagicCardOnStack(
event.getCard(),
event.getPlayer(),
game.getPayedCost()
);
final int locations = event.getRefInt();
final MagicLocationType from = MagicLocationType.values()[locations / 10];
final MagicLocationType to = MagicLocationType.values()[locations % 10];
cardOnStack.setFromLocation(from);
cardOnStack.setMoveLocation(to);
final MagicCard card = event.getCard();
if (card.isToken() == false) {
game.doAction(new RemoveCardAction(card, from));
}
game.doAction(new PutItemOnStackAction(cardOnStack));
};
}