mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 04:52:07 -08:00
Displaying top revealed card in client. PlayWithTheTopCardRevealedEffect.
This commit is contained in:
parent
8b415e2296
commit
31d849ef46
9 changed files with 160 additions and 20 deletions
|
|
@ -78,6 +78,7 @@ import mage.Constants.CardType;
|
|||
import mage.cards.CardDimensions;
|
||||
import mage.cards.MagePermanent;
|
||||
import mage.cards.TextPopup;
|
||||
import mage.cards.action.ActionCallback;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.game.PlayAreaPanel;
|
||||
import mage.remote.Session;
|
||||
|
|
@ -205,6 +206,10 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis
|
|||
gSmall.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateImage() {
|
||||
}
|
||||
|
||||
protected String getText(String cardType) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (card instanceof StackAbilityView || card instanceof AbilityView) {
|
||||
|
|
@ -500,7 +505,12 @@ public class Card extends MagePermanent implements MouseMotionListener, MouseLis
|
|||
return null; //To change body of implemented methods use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void updateCallback(ActionCallback callback, UUID gameId) {
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
}
|
||||
|
||||
@Override
|
||||
public PermanentView getOriginalPermanent() {
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,12 +34,16 @@
|
|||
|
||||
package mage.client.game;
|
||||
|
||||
import mage.cards.MageCard;
|
||||
import mage.cards.action.ActionCallback;
|
||||
import mage.client.MageFrame;
|
||||
import mage.client.cards.BigCard;
|
||||
import mage.client.components.HoverButton;
|
||||
import mage.client.components.MageRoundPane;
|
||||
import mage.client.components.arcane.ManaSymbols;
|
||||
import mage.client.dialog.ShowCardsDialog;
|
||||
import mage.client.plugins.adapters.MageActionCallback;
|
||||
import mage.client.plugins.impl.Plugins;
|
||||
import mage.remote.Session;
|
||||
import mage.client.util.Command;
|
||||
import mage.client.util.Config;
|
||||
|
|
@ -47,8 +51,10 @@ import mage.client.util.ImageHelper;
|
|||
import mage.client.util.gui.BufferedImageBuilder;
|
||||
import mage.components.ImagePanel;
|
||||
import mage.sets.Sets;
|
||||
import mage.view.CardView;
|
||||
import mage.view.ManaPoolView;
|
||||
import mage.view.PlayerView;
|
||||
import org.mage.card.arcane.CardPanel;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
|
|
@ -87,6 +93,8 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
private static final Border redBorder = new LineBorder(Color.red, 2);
|
||||
private static final Border emptyBorder = BorderFactory.createEmptyBorder(0,0,0,0);
|
||||
|
||||
private static final Dimension topCardDimension = new Dimension(40, 56);
|
||||
|
||||
/** Creates new form PlayerPanel */
|
||||
public PlayerPanelExt(boolean me) {
|
||||
initComponents(me);
|
||||
|
|
@ -117,6 +125,25 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
this.avatar.setBorder(emptyBorder);
|
||||
}
|
||||
|
||||
synchronized (this) {
|
||||
if (player.getTopCard() != null) {
|
||||
if (topCard == null || !topCard.getId().equals(player.getTopCard().getId())) {
|
||||
if (topCard == null) {
|
||||
topCardPanel.setVisible(true);
|
||||
}
|
||||
topCard = player.getTopCard();
|
||||
topCardPanel.update(topCard);
|
||||
topCardPanel.updateImage();
|
||||
ActionCallback callback = Plugins.getInstance().getActionCallback();
|
||||
((MageActionCallback)callback).refreshSession();
|
||||
topCardPanel.updateCallback(callback, gameId);
|
||||
}
|
||||
} else if (topCard != null) {
|
||||
topCard = null;
|
||||
topCardPanel.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
update(player.getManaPool());
|
||||
}
|
||||
|
||||
|
|
@ -140,7 +167,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
setLayout(null);
|
||||
setOpaque(false);
|
||||
|
||||
MageRoundPane panelBackground = new MageRoundPane();
|
||||
panelBackground = new MageRoundPane();
|
||||
panelBackground.setXOffset(3);
|
||||
panelBackground.setYOffset(3);
|
||||
panelBackground.setLayout(null);
|
||||
|
|
@ -156,6 +183,10 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
}
|
||||
Image image = ImageHelper.getImageFromResources("/avatars/face" + index + ".jpg");
|
||||
|
||||
topCardPanel = Plugins.getInstance().getMageCard(new CardView(Sets.findCard("Forest")), bigCard, topCardDimension, gameId, true);
|
||||
topCardPanel.setVisible(false);
|
||||
panelBackground.add(topCardPanel);
|
||||
|
||||
// Avatar
|
||||
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
|
||||
avatar = new HoverButton("player", resized, resized, resized, r);
|
||||
|
|
@ -305,7 +336,10 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
private ImagePanel hand;
|
||||
private HoverButton grave;
|
||||
private ImagePanel library;
|
||||
private CardView topCard;
|
||||
private MageCard topCardPanel;
|
||||
private JButton cheat;
|
||||
private MageRoundPane panelBackground;
|
||||
|
||||
private JLabel lifeLabel;
|
||||
private JLabel handLabel;
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ public class Plugins implements MagePlugins {
|
|||
return new Card(card, bigCard, Config.dimensions, gameId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isCardPluginLoaded() {
|
||||
|
|
|
|||
|
|
@ -155,8 +155,6 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
|
|||
setText(gameCard);
|
||||
setImage(srcImage);
|
||||
setFoil(foil);
|
||||
} else {
|
||||
//log.warn("image wasn't found, card=" + gameCard.getName() + ", set=" + gameCard.getExpansionSetCode() + ", cid=" + gameCard.getCardNumber());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
|
@ -487,22 +485,25 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
|
|||
}
|
||||
|
||||
public void updateImage() {
|
||||
if (!hasImage) {
|
||||
throw new IllegalStateException("Not implemented");
|
||||
//TODO:
|
||||
/*Util.threadPool.submit(new Runnable() {
|
||||
public void run () {
|
||||
//BufferedImage srcImage = ImageCache.getImageOriginal(gameCard);
|
||||
//BufferedImage srcImage = null;
|
||||
//tappedAngle = isTapped() ? CardPanel.TAPPED_ANGLE : 0;
|
||||
if (srcImage != null) {
|
||||
hasImage = true;
|
||||
setText(gameCard);
|
||||
setImage(srcImage, srcImage);
|
||||
}
|
||||
}
|
||||
});*/
|
||||
}
|
||||
Util.threadPool.submit(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
tappedAngle = isTapped() ? CardPanel.TAPPED_ANGLE : 0;
|
||||
flippedAngle = isFlipped() ? CardPanel.FLIPPED_ANGLE : 0;
|
||||
if (gameCard.isFaceDown()) return;
|
||||
BufferedImage srcImage = ImageCache.getThumbnail(gameCard);
|
||||
if (srcImage != null) {
|
||||
hasImage = true;
|
||||
setText(gameCard);
|
||||
setImage(srcImage);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} catch (Error err) {
|
||||
err.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -759,4 +760,10 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
|
|||
public PermanentView getOriginalPermanent() {
|
||||
throw new IllegalStateException("Is not permanent.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCallback(ActionCallback callback, UUID gameId) {
|
||||
this.callback = callback;
|
||||
this.gameId = gameId;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue