Monarch attempt (Non-functional) with TestMonarch and sample card.
parent
9449be257a
commit
2f98ecfff0
|
@ -0,0 +1,26 @@
|
|||
package magic.model.action;
|
||||
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPlayer;
|
||||
import magic.model.MagicPlayerState;
|
||||
|
||||
public class BecomeMonarchAction extends ChangePlayerStateAction {
|
||||
|
||||
private final MagicPlayer player;
|
||||
|
||||
public BecomeMonarchAction(MagicPlayer aPlayer) {
|
||||
super(aPlayer, MagicPlayerState.Monarch);
|
||||
player=aPlayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doAction(final MagicGame game) {
|
||||
if (!player.isMonarch()) {
|
||||
if (player.getOpponent().isMonarch()) {
|
||||
player.getOpponent().clearState(MagicPlayerState.Monarch);
|
||||
}
|
||||
player.setState(MagicPlayerState.Monarch);
|
||||
System.out.println("Player becomes monarch");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2271,6 +2271,14 @@ public enum MagicRuleEventAction {
|
|||
return (game, event) -> game.doAction(new PlayTokenAction(event.getPlayer(), CardDefinitions.getToken("colorless Clue artifact token")));
|
||||
}
|
||||
},
|
||||
BecomesMonarch(
|
||||
"you become the monarch"
|
||||
){
|
||||
@Override
|
||||
public MagicEventAction getAction(final Matcher matcher) {
|
||||
return (game, event) -> game.doAction(new BecomeMonarchAction(event.getPlayer()));
|
||||
}
|
||||
},
|
||||
BecomeBlocked(
|
||||
ARG.PERMANENTS + " become(s)? blocked",
|
||||
MagicTiming.Block,
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
package magic.model.phase;
|
||||
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicSource;
|
||||
import magic.model.action.ReturnExiledAction;
|
||||
import magic.model.event.MagicDrawEvent;
|
||||
import magic.model.trigger.MagicTriggerType;
|
||||
import magic.ui.MagicSound;
|
||||
|
||||
|
@ -23,6 +25,9 @@ public class MagicEndOfTurnPhase extends MagicPhase {
|
|||
game.doAction(new ReturnExiledAction());
|
||||
|
||||
// End of turn triggers.
|
||||
if (game.getTurnPlayer().isMonarch()) {
|
||||
game.addEvent(new MagicDrawEvent(MagicSource.NONE,game.getTurnPlayer(),1));
|
||||
}
|
||||
game.executeTrigger(MagicTriggerType.AtEndOfTurn,game.getTurnPlayer());
|
||||
game.setStep(MagicStep.ActivePlayer);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package magic.test;
|
||||
|
||||
import magic.model.MagicDuel;
|
||||
import magic.model.MagicGame;
|
||||
import magic.model.MagicPlayer;
|
||||
import magic.model.phase.MagicMainPhase;
|
||||
|
||||
class TestMonarch extends TestGameBuilder {
|
||||
public MagicGame getGame() {
|
||||
final MagicDuel duel=createDuel();
|
||||
final MagicGame game=duel.nextGame();
|
||||
game.setPhase(MagicMainPhase.getFirstInstance());
|
||||
final MagicPlayer player=game.getPlayer(0);
|
||||
final MagicPlayer opponent=game.getPlayer(1);
|
||||
|
||||
MagicPlayer P = player;
|
||||
|
||||
P.setLife(20);
|
||||
addToLibrary(P, "Plains", 10);
|
||||
createPermanent(P,"Plains",8);
|
||||
createPermanent(P,"Chromatic Lantern");
|
||||
createPermanent(P,"Throne of the High City");
|
||||
|
||||
|
||||
P = opponent;
|
||||
|
||||
P.setLife(20);
|
||||
addToLibrary(P, "Plains", 10);
|
||||
createPermanent(P,"Rupture Spire",false,8);
|
||||
|
||||
return game;
|
||||
}
|
||||
}
|
|
@ -8,15 +8,17 @@ import java.awt.Image;
|
|||
import java.awt.RenderingHints;
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.swing.ImageIcon;
|
||||
|
||||
import magic.data.GeneralConfig;
|
||||
import magic.ui.utility.GraphicsUtils;
|
||||
import magic.data.MagicIcon;
|
||||
import magic.ui.MagicImages;
|
||||
import magic.ui.utility.MagicStyle;
|
||||
import magic.ui.duel.CounterOverlay;
|
||||
import magic.ui.duel.viewer.info.PlayerViewerInfo;
|
||||
import magic.ui.duel.animation.AnimationFx;
|
||||
import magic.ui.duel.animation.MagicAnimations;
|
||||
import magic.ui.duel.viewer.info.PlayerViewerInfo;
|
||||
import magic.ui.theme.ThemeFactory;
|
||||
import magic.ui.utility.GraphicsUtils;
|
||||
import magic.ui.utility.MagicStyle;
|
||||
import org.pushingpixels.trident.Timeline;
|
||||
import org.pushingpixels.trident.ease.Spline;
|
||||
|
||||
|
@ -62,7 +64,8 @@ public class PlayerImagePanel extends AnimationPanel {
|
|||
// health
|
||||
g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
|
||||
drawHealthValueOverlay(g2d, 0, 0, activeImage);
|
||||
|
||||
// monarch
|
||||
drawMonarchOverlay(g2d);
|
||||
drawValidChoiceIndicator(g2d);
|
||||
|
||||
// Animations
|
||||
|
@ -71,6 +74,18 @@ public class PlayerImagePanel extends AnimationPanel {
|
|||
|
||||
}
|
||||
|
||||
private void drawMonarchOverlay(Graphics2D g2d) {
|
||||
if (playerInfo.isMonarch()) {
|
||||
final BufferedImage monarchImage = (BufferedImage)MagicImages.getIcon(MagicIcon.LOYALTYCOUNTER).getImage();
|
||||
g2d.drawImage(
|
||||
monarchImage,
|
||||
4,
|
||||
4,
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private void drawValidChoiceIndicator(Graphics2D g2d) {
|
||||
if (MagicAnimations.isOn(AnimationFx.AVATAR_PULSE)) {
|
||||
drawPulsingBorder(g2d);
|
||||
|
|
|
@ -25,6 +25,7 @@ public class PlayerViewerInfo {
|
|||
public final MagicCardList library;
|
||||
public final List<PermanentViewerInfo> permanents;
|
||||
private final boolean isAi;
|
||||
private final boolean isMonarch;
|
||||
public final String playerLabel;
|
||||
private final ImageIcon avatar;
|
||||
private int gamesWon;
|
||||
|
@ -43,6 +44,7 @@ public class PlayerViewerInfo {
|
|||
exile = new MagicCardList(player.getExile());
|
||||
library = new MagicCardList(player.getLibrary());
|
||||
isAi = player.isArtificial();
|
||||
isMonarch = player.isMonarch();
|
||||
permanents = new ArrayList<>();
|
||||
for (final MagicPermanent permanent : player.getPermanents()) {
|
||||
permanents.add(new PermanentViewerInfo(game, permanent));
|
||||
|
@ -58,6 +60,10 @@ public class PlayerViewerInfo {
|
|||
return this.isAi;
|
||||
}
|
||||
|
||||
public boolean isMonarch() {
|
||||
return isMonarch;
|
||||
}
|
||||
|
||||
public boolean isHuman() {
|
||||
return !isAi();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue