mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +00:00
Swap out old GameView structure for new one
This commit is contained in:
@@ -25,7 +25,9 @@ import forge.control.GuiTimer;
|
||||
import forge.deck.CardPool;
|
||||
import forge.error.BugReportDialog;
|
||||
import forge.game.GameEntity;
|
||||
import forge.game.GameEntityView;
|
||||
import forge.game.GameObject;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.DelayedReveal;
|
||||
import forge.game.player.IHasIcon;
|
||||
import forge.gui.BoxedProductCardListViewer;
|
||||
@@ -51,8 +53,6 @@ import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.util.BuildInfo;
|
||||
import forge.util.FileUtil;
|
||||
import forge.util.gui.SGuiChoose;
|
||||
import forge.view.CardView;
|
||||
import forge.view.GameEntityView;
|
||||
|
||||
public class GuiDesktop implements IGuiBase {
|
||||
@Override
|
||||
@@ -194,7 +194,7 @@ public class GuiDesktop implements IGuiBase {
|
||||
delayedReveal.reveal(controller); //TODO: Merge this into search dialog
|
||||
}
|
||||
controller.tempShow(optionList);
|
||||
List<GameEntityView> gameEntityViews = controller.getGameView().getGameEntityViews(optionList, false);
|
||||
List<GameEntityView> gameEntityViews = GameEntityView.getEntityCollection(optionList);
|
||||
if (isOptional) {
|
||||
return SGuiChoose.oneOrNone(title, gameEntityViews);
|
||||
}
|
||||
|
||||
@@ -34,11 +34,11 @@ import com.mortennobel.imagescaling.ResampleOp;
|
||||
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.assets.ImageUtil;
|
||||
import forge.game.card.CardView;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.properties.ForgeConstants;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinIcon;
|
||||
import forge.view.CardView;
|
||||
|
||||
/**
|
||||
* This class stores ALL card images in a cache with soft values. this means
|
||||
|
||||
@@ -17,6 +17,7 @@ import net.miginfocom.swing.MigLayout;
|
||||
import forge.deck.CardPool;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.CardDetailPanel;
|
||||
import forge.gui.CardPicturePanel;
|
||||
import forge.item.IPaperCard;
|
||||
@@ -28,9 +29,7 @@ import forge.itemmanager.ItemManagerModel;
|
||||
import forge.itemmanager.views.ImageView;
|
||||
import forge.toolbox.FButton;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.view.CardView;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class FDeckViewer extends FDialog {
|
||||
@@ -62,7 +61,7 @@ public class FDeckViewer extends FDialog {
|
||||
return new ImageView<PaperCard>(this, model0) {
|
||||
@Override
|
||||
protected void showHoveredItem(PaperCard item) {
|
||||
final CardView card = ViewUtil.getCardForUi(item);
|
||||
final CardView card = CardView.getCardForUi(item);
|
||||
if (card == null) { return; }
|
||||
|
||||
cardDetail.setCard(card);
|
||||
@@ -78,7 +77,7 @@ public class FDeckViewer extends FDialog {
|
||||
final IPaperCard paperCard = cardManager.getSelectedItem();
|
||||
if (paperCard == null) { return; }
|
||||
|
||||
final CardView card = ViewUtil.getCardForUi(paperCard);
|
||||
final CardView card = CardView.getCardForUi(paperCard);
|
||||
if (card == null) { return; }
|
||||
|
||||
cardDetail.setCard(card);
|
||||
|
||||
@@ -31,6 +31,7 @@ import javax.swing.JList;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.item.PaperCard;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
@@ -38,7 +39,6 @@ import forge.toolbox.FButton;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* A simple class that shows a list of cards in a dialog with preview in its
|
||||
@@ -189,7 +189,7 @@ public class BoxedProductCardListViewer extends FDialog {
|
||||
// (String) jList.getSelectedValue();
|
||||
if ((row >= 0) && (row < BoxedProductCardListViewer.this.list.size())) {
|
||||
final PaperCard cp = BoxedProductCardListViewer.this.list.get(row);
|
||||
BoxedProductCardListViewer.this.detail.setCard(ViewUtil.getCardForUi(cp));
|
||||
BoxedProductCardListViewer.this.detail.setCard(CardView.getCardForUi(cp));
|
||||
BoxedProductCardListViewer.this.picture.setCard(cp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,8 @@
|
||||
|
||||
package forge.gui;
|
||||
|
||||
import forge.view.CardView;
|
||||
import forge.game.card.CardView;
|
||||
|
||||
|
||||
/**
|
||||
* The class CardContainer. A card container is an object that references a
|
||||
@@ -28,23 +29,6 @@ import forge.view.CardView;
|
||||
* @version V0.0 17.02.2010
|
||||
*/
|
||||
public interface CardContainer {
|
||||
/**
|
||||
* <p>
|
||||
* setCard.
|
||||
* </p>
|
||||
*
|
||||
* @param card
|
||||
* a {@link CardView} object.
|
||||
*/
|
||||
void setCard(CardView card);
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getCard.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link CardView} object.
|
||||
*/
|
||||
CardView getCard();
|
||||
|
||||
void setCard(CardView card);
|
||||
}
|
||||
|
||||
@@ -33,6 +33,9 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import forge.card.CardDetailUtil;
|
||||
import forge.card.CardDetailUtil.DetailColors;
|
||||
import forge.card.CardEdition;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.item.InventoryItemFromSet;
|
||||
import forge.model.FModel;
|
||||
@@ -41,9 +44,6 @@ import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* The class CardDetailPanel. Shows the details of a card.
|
||||
@@ -130,7 +130,7 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
powerToughnessLabel.setVisible(false);
|
||||
idLabel.setText("");
|
||||
cdArea.setText(CardDetailUtil.getItemDescription(item));
|
||||
this.updateBorder(item instanceof IPaperCard ? ViewUtil.getCardForUi((IPaperCard)item).getOriginal() : null);
|
||||
this.updateBorder(item instanceof IPaperCard ? Card.getCardForUi((IPaperCard)item).getView().getOriginal() : null);
|
||||
|
||||
String set = item.getEdition();
|
||||
setInfoLabel.setText(set);
|
||||
@@ -185,7 +185,7 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
this.nameCostLabel.setText(CardDetailUtil.formatCardName(state));
|
||||
} else {
|
||||
final String manaCost;
|
||||
if (card.isSplitCard() && card.hasAltState()) {
|
||||
if (card.isSplitCard() && card.getAlternate() != null) {
|
||||
manaCost = card.getOriginal().getManaCost() + " // " + card.getAlternate().getManaCost();
|
||||
} else {
|
||||
manaCost = state.getManaCost().toString();
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
|
||||
package forge.gui;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.item.PaperCard;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
@@ -26,7 +27,6 @@ import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
@@ -173,7 +173,7 @@ public class CardListChooser extends FDialog {
|
||||
final int row = CardListChooser.this.jList.getSelectedIndex();
|
||||
if ((row >= 0) && (row < CardListChooser.this.list.size())) {
|
||||
final PaperCard cp = CardListChooser.this.list.get(row);
|
||||
CardListChooser.this.detail.setCard(ViewUtil.getCardForUi(cp));
|
||||
CardListChooser.this.detail.setCard(CardView.getCardForUi(cp));
|
||||
CardListChooser.this.picture.setCard(cp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import javax.swing.JList;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.item.PaperCard;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
@@ -38,7 +39,6 @@ import forge.toolbox.FButton;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* A simple class that shows a list of cards in a dialog with preview in its
|
||||
@@ -172,7 +172,7 @@ public class CardListViewer extends FDialog {
|
||||
// (String) jList.getSelectedValue();
|
||||
if ((row >= 0) && (row < CardListViewer.this.list.size())) {
|
||||
final PaperCard cp = CardListViewer.this.list.get(row);
|
||||
CardListViewer.this.detail.setCard(ViewUtil.getCardForUi(cp));
|
||||
CardListViewer.this.detail.setCard(CardView.getCardForUi(cp));
|
||||
CardListViewer.this.picture.setCard(cp);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,13 +25,13 @@ import javax.swing.JPanel;
|
||||
|
||||
import forge.ImageCache;
|
||||
import forge.ImageKeys;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.toolbox.imaging.FImagePanel;
|
||||
import forge.toolbox.imaging.FImagePanel.AutoSizeImageMode;
|
||||
import forge.toolbox.imaging.FImageUtil;
|
||||
import forge.view.CardView.CardStateView;
|
||||
|
||||
/**
|
||||
* Displays image associated with a card or inventory item.
|
||||
|
||||
@@ -21,6 +21,10 @@ import javax.swing.event.ListDataListener;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.game.spellability.SpellAbilityView;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.item.PaperCard;
|
||||
import forge.screens.match.CMatchUI;
|
||||
@@ -29,11 +33,7 @@ import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FList;
|
||||
import forge.toolbox.FPanel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.SpellAbilityView;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
// An input box for handling the order of choices.
|
||||
// Left box has the original choices
|
||||
@@ -334,7 +334,7 @@ public class DualListBox<T> extends FDialog {
|
||||
} else if (obj instanceof SpellAbilityView) {
|
||||
card = ((SpellAbilityView) obj).getHostCard();
|
||||
} else if (obj instanceof PaperCard) {
|
||||
card = ViewUtil.getCardForUi((IPaperCard) obj);
|
||||
card = Card.getCardForUi((IPaperCard) obj).getView();
|
||||
}
|
||||
|
||||
GuiUtils.clearPanelSelections();
|
||||
|
||||
@@ -20,16 +20,13 @@ import com.google.common.base.Function;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.screens.match.CMatchUI;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
|
||||
public class GuiChoose {
|
||||
|
||||
/**
|
||||
@@ -210,9 +207,11 @@ public class GuiChoose {
|
||||
final CardView card;
|
||||
if (sel instanceof CardStateView) {
|
||||
card = ((CardStateView) sel).getCard();
|
||||
} else if (sel instanceof CardView) {
|
||||
}
|
||||
else if (sel instanceof CardView) {
|
||||
card = (CardView) sel;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
card = null;
|
||||
}
|
||||
if (card != null) {
|
||||
|
||||
@@ -8,9 +8,9 @@ import javax.swing.UIManager;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.game.card.CardView;
|
||||
import forge.screens.match.CMatchUI;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.view.CardView;
|
||||
|
||||
/**
|
||||
* Holds player interactions using standard windows
|
||||
|
||||
@@ -32,9 +32,9 @@ import javax.swing.JPopupMenu;
|
||||
import javax.swing.JSeparator;
|
||||
import javax.swing.KeyStroke;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.screens.match.VMatchUI;
|
||||
import forge.screens.match.views.VField;
|
||||
import forge.view.CardView;
|
||||
import forge.view.arcane.CardPanel;
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@ import forge.ImageCache;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.deck.DeckProxy;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.framework.ILocalRepaint;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.item.InventoryItem;
|
||||
@@ -20,8 +21,6 @@ import forge.toolbox.FSkin.SkinColor;
|
||||
import forge.toolbox.FSkin.SkinFont;
|
||||
import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.toolbox.special.CardZoomer;
|
||||
import forge.view.CardView;
|
||||
import forge.view.ViewUtil;
|
||||
import forge.view.arcane.CardPanel;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -234,7 +233,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
ItemInfo item = getItemAtPoint(e.getPoint());
|
||||
if (item != null && item.item instanceof IPaperCard) {
|
||||
setLockHoveredItem(true); //lock hoveredItem while zoomer open
|
||||
final CardView card = ViewUtil.getCardForUi((IPaperCard) item.item);
|
||||
final CardView card = CardView.getCardForUi((IPaperCard) item.item);
|
||||
CardZoomer.SINGLETON_INSTANCE.doMouseButtonZoom(card);
|
||||
}
|
||||
}
|
||||
@@ -1101,14 +1100,14 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
if (item instanceof IPaperCard) {
|
||||
IPaperCard paperCard = (IPaperCard)item;
|
||||
if (paperCard.isFoil()) {
|
||||
final CardView card = ViewUtil.getCardForUi(paperCard);
|
||||
final CardView card = CardView.getCardForUi(paperCard);
|
||||
if (card.getOriginal().getFoilIndex() == 0) { //if foil finish not yet established, assign a random one
|
||||
// FIXME should assign a random foil here in all cases
|
||||
// (currently assigns 1 for the deck editors where foils "flicker" otherwise)
|
||||
if (item instanceof Card) {
|
||||
card.getOriginal().setRandomFoil();
|
||||
card.getOriginal().setFoilIndexOverride(-1); //-1 to set random foil
|
||||
} else if (item instanceof IPaperCard) {
|
||||
card.getOriginal().setFoilIndex(1);
|
||||
card.getOriginal().setFoilIndexOverride(1);
|
||||
}
|
||||
}
|
||||
CardPanel.drawFoilEffect(g, card, bounds.x, bounds.y, bounds.width, bounds.height, borderSize);
|
||||
|
||||
@@ -40,6 +40,7 @@ import forge.deckchooser.DecksComboBoxEvent;
|
||||
import forge.deckchooser.FDeckChooser;
|
||||
import forge.deckchooser.IDecksComboBoxListener;
|
||||
import forge.game.GameType;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.CardDetailPanel;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
@@ -75,7 +76,6 @@ import forge.toolbox.FTextField;
|
||||
import forge.util.Lang;
|
||||
import forge.util.MyRandom;
|
||||
import forge.util.NameGenerator;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of constructed submenu singleton.
|
||||
@@ -1243,7 +1243,7 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
|
||||
if (obj instanceof PaperCard) {
|
||||
pp.setVanguardButtonText(((PaperCard) obj).getName());
|
||||
cdp.setCard(ViewUtil.getCardForUi((PaperCard) obj));
|
||||
cdp.setCard(CardView.getCardForUi((PaperCard) obj));
|
||||
cdp.setVisible(true);
|
||||
refreshPanels(false, true);
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ import java.awt.event.MouseMotionListener;
|
||||
import forge.achievement.Achievement;
|
||||
import forge.achievement.AchievementCollection;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
@@ -30,7 +31,6 @@ import forge.toolbox.FSkin.SkinColor;
|
||||
import forge.toolbox.FSkin.SkinFont;
|
||||
import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.toolbox.special.CardZoomer;
|
||||
import forge.view.ViewUtil;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -104,7 +104,7 @@ public enum VSubmenuAchievements implements IVSubmenu<CSubmenuAchievements> {
|
||||
IPaperCard pc = achievement.getPaperCard();
|
||||
if (pc != null) {
|
||||
preventMouseOut = true;
|
||||
CardZoomer.SINGLETON_INSTANCE.doMouseButtonZoom(ViewUtil.getCardForUi(pc));
|
||||
CardZoomer.SINGLETON_INSTANCE.doMouseButtonZoom(CardView.getCardForUi(pc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,9 +39,15 @@ import forge.ImageCache;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.game.GameEntityView;
|
||||
import forge.game.GameView;
|
||||
import forge.game.Match;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.combat.CombatView;
|
||||
import forge.game.phase.PhaseType;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.FNetOverlay;
|
||||
import forge.gui.GuiChoose;
|
||||
@@ -82,13 +88,6 @@ import forge.toolbox.FSkin.SkinImage;
|
||||
import forge.toolbox.special.PhaseIndicator;
|
||||
import forge.toolbox.special.PhaseLabel;
|
||||
import forge.util.ITriggerEvent;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CombatView;
|
||||
import forge.view.GameEntityView;
|
||||
import forge.view.LocalGameView;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.SpellAbilityView;
|
||||
import forge.view.ViewUtil;
|
||||
import forge.view.arcane.CardPanel;
|
||||
import forge.view.arcane.PlayArea;
|
||||
|
||||
@@ -169,7 +168,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
|
||||
int i = 0;
|
||||
for (final PlayerView p : sortedPlayers) {
|
||||
if (allHands || p.getLobbyPlayer() instanceof LobbyPlayerHuman || ViewUtil.mayViewAny(p.getHandCards())) {
|
||||
if (allHands || p.getLobbyPlayer() instanceof LobbyPlayerHuman || CardView.mayViewAny(p.getHand())) {
|
||||
VHand newHand = new VHand(EDocID.Hands[i], p);
|
||||
newHand.getLayoutControl().initialize();
|
||||
hands.add(newHand);
|
||||
@@ -247,7 +246,9 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
return sortedPlayers.indexOf(player);
|
||||
}
|
||||
|
||||
public void showCombat(final CombatView combat) {
|
||||
@Override
|
||||
public void showCombat() {
|
||||
CombatView combat = MatchUtil.getGameView().getCombat();
|
||||
if (combat != null && combat.getNumAttackers() > 0 && MatchUtil.getGameView().peekStack() == null) {
|
||||
if (selectedDocBeforeCombat == null) {
|
||||
IVDoc<? extends ICDoc> combatDoc = EDocID.REPORT_COMBAT.getDoc();
|
||||
@@ -427,7 +428,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
|
||||
@Override
|
||||
public void updatePhase() {
|
||||
LocalGameView gameView = MatchUtil.getGameView();
|
||||
GameView gameView = MatchUtil.getGameView();
|
||||
final PlayerView p = gameView.getPlayerTurn();
|
||||
final PhaseType ph = gameView.getPhase();
|
||||
final CMatchUI matchUi = CMatchUI.SINGLETON_INSTANCE;
|
||||
@@ -486,26 +487,25 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAbilityToPlay(List<SpellAbilityView> abilities, ITriggerEvent triggerEvent) {
|
||||
public SpellAbility getAbilityToPlay(List<SpellAbility> abilities, ITriggerEvent triggerEvent) {
|
||||
if (triggerEvent == null) {
|
||||
if (abilities.isEmpty()) {
|
||||
return -1;
|
||||
return null;
|
||||
}
|
||||
if (abilities.size() == 1) {
|
||||
return abilities.get(0).getId();
|
||||
return abilities.get(0);
|
||||
}
|
||||
final SpellAbilityView choice = GuiChoose.oneOrNone("Choose ability to play", abilities);
|
||||
return choice == null ? -1 : choice.getId();
|
||||
return GuiChoose.oneOrNone("Choose ability to play", abilities);
|
||||
}
|
||||
|
||||
if (abilities.isEmpty()) {
|
||||
return -1;
|
||||
return null;
|
||||
}
|
||||
if (abilities.size() == 1 && !abilities.get(0).isPromptIfOnlyPossibleAbility()) {
|
||||
if (abilities.size() == 1 && !abilities.get(0).promptIfOnlyPossibleAbility()) {
|
||||
if (abilities.get(0).canPlay()) {
|
||||
return abilities.get(0).getId(); //only return ability if it's playable, otherwise return null
|
||||
return abilities.get(0); //only return ability if it's playable, otherwise return null
|
||||
}
|
||||
return -1;
|
||||
return null;
|
||||
}
|
||||
|
||||
//show menu if mouse was trigger for ability
|
||||
@@ -514,7 +514,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
boolean enabled;
|
||||
boolean hasEnabled = false;
|
||||
int shortcut = KeyEvent.VK_1; //use number keys as shortcuts for abilities 1-9
|
||||
for (final SpellAbilityView ab : abilities) {
|
||||
for (final SpellAbility ab : abilities) {
|
||||
enabled = ab.canPlay();
|
||||
if (enabled) {
|
||||
hasEnabled = true;
|
||||
@@ -544,7 +544,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
menu.show(mouseEvent.getComponent(), mouseEvent.getX(), mouseEvent.getY());
|
||||
}
|
||||
|
||||
return -1; //delay ability until choice made
|
||||
return null; //delay ability until choice made
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -615,7 +615,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider, IMatchController {
|
||||
public void openView(List<Player> sortedPlayers) {
|
||||
List<PlayerView> sortedPlayerViews = new ArrayList<PlayerView>();
|
||||
for (Player p : sortedPlayers) {
|
||||
sortedPlayerViews.add(MatchUtil.getGameView().getPlayerView(p, false));
|
||||
sortedPlayerViews.add(PlayerView.get(p));
|
||||
}
|
||||
CMatchUI.SINGLETON_INSTANCE.initMatch(sortedPlayerViews, MatchUtil.getHumanCount() != 1);
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@ import java.awt.event.ActionListener;
|
||||
import javax.swing.JButton;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.game.GameView;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.FScreen;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.view.IGameView;
|
||||
|
||||
/**
|
||||
* Default controller for a ViewWinLose object. This class can
|
||||
@@ -19,11 +19,11 @@ import forge.view.IGameView;
|
||||
*/
|
||||
public class ControlWinLose {
|
||||
private final ViewWinLose view;
|
||||
protected final IGameView lastGame;
|
||||
protected final GameView lastGame;
|
||||
|
||||
/** @param v   ViewWinLose
|
||||
* @param match */
|
||||
public ControlWinLose(final ViewWinLose v, final IGameView game0) {
|
||||
public ControlWinLose(final ViewWinLose v, final GameView game0) {
|
||||
this.view = v;
|
||||
this.lastGame = game0;
|
||||
addListeners();
|
||||
|
||||
@@ -26,11 +26,11 @@ import javax.swing.SwingConstants;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.game.GameView;
|
||||
import forge.gauntlet.GauntletWinLoseController;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.view.IGameView;
|
||||
|
||||
/**
|
||||
* The Win/Lose handler for 'gauntlet' type tournament
|
||||
@@ -45,7 +45,7 @@ public class GauntletWinLose extends ControlWinLose {
|
||||
* @param view0 ViewWinLose object
|
||||
* @param match
|
||||
*/
|
||||
public GauntletWinLose(final ViewWinLose view0, final IGameView game0) {
|
||||
public GauntletWinLose(final ViewWinLose view0, final GameView game0) {
|
||||
super(view0, game0);
|
||||
controller = new GauntletWinLoseController(view0, game0) {
|
||||
@Override
|
||||
|
||||
@@ -21,12 +21,12 @@ import java.awt.Dimension;
|
||||
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
import forge.game.GameView;
|
||||
import forge.limited.LimitedWinLoseController;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.Colors;
|
||||
import forge.toolbox.FSkin.SkinColor;
|
||||
import forge.toolbox.FSkin.SkinnedLabel;
|
||||
import forge.view.IGameView;
|
||||
|
||||
/**
|
||||
* The Win/Lose handler for 'gauntlet' type tournament
|
||||
@@ -46,7 +46,7 @@ public class LimitedWinLose extends ControlWinLose {
|
||||
* @param view0 {@link forge.screens.match.ViewWinLose}
|
||||
* @param match {@link forge.game.Match}
|
||||
*/
|
||||
public LimitedWinLose(final ViewWinLose view0, final IGameView game0) {
|
||||
public LimitedWinLose(final ViewWinLose view0, final GameView game0) {
|
||||
super(view0, game0);
|
||||
controller = new LimitedWinLoseController(view0, game0) {
|
||||
@Override
|
||||
|
||||
@@ -18,11 +18,11 @@ package forge.screens.match;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
|
||||
import forge.LobbyPlayer;
|
||||
import forge.Singletons;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.game.GameView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.FScreen;
|
||||
import forge.match.MatchUtil;
|
||||
@@ -36,8 +36,6 @@ import forge.screens.home.quest.CSubmenuQuestDraft;
|
||||
import forge.screens.home.quest.VSubmenuQuestDraft;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.view.IGameView;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -59,7 +57,7 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
* @param view0 ViewWinLose object
|
||||
* @param match2
|
||||
*/
|
||||
public QuestDraftWinLose(final ViewWinLose view0, final IGameView game0) {
|
||||
public QuestDraftWinLose(final ViewWinLose view0, final GameView game0) {
|
||||
super(view0, game0);
|
||||
this.view = view0;
|
||||
qData = FModel.getQuest();
|
||||
@@ -79,7 +77,7 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
QuestController quest = FModel.getQuest();
|
||||
|
||||
final LobbyPlayer questLobbyPlayer = GamePlayerUtil.getQuestPlayer();
|
||||
final List<PlayerView> players = lastGame.getPlayers();
|
||||
final Iterable<PlayerView> players = lastGame.getPlayers();
|
||||
boolean gameHadHumanPlayer = false;
|
||||
for (final PlayerView p : players) {
|
||||
if (p.getLobbyPlayer().equals(questLobbyPlayer)) {
|
||||
@@ -87,33 +85,30 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (lastGame.isMatchOver()) {
|
||||
|
||||
if (lastGame.isMatchOver()) {
|
||||
String winner = lastGame.getWinningPlayer().getName();
|
||||
|
||||
quest.getAchievements().getCurrentDraft().setWinner(winner);
|
||||
quest.save();
|
||||
|
||||
}
|
||||
|
||||
|
||||
if (!gameHadHumanPlayer) {
|
||||
|
||||
if (lastGame.isMatchOver()) {
|
||||
this.actionOnQuitMatch();
|
||||
QuestDraftUtils.matchInProgress = false;
|
||||
QuestDraftUtils.update();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
this.actionOnContinue();
|
||||
QuestDraftUtils.update();
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
|
||||
view.getBtnRestart().setEnabled(false);
|
||||
view.getBtnRestart().setVisible(false);
|
||||
|
||||
|
||||
if (lastGame.isMatchOver()) {
|
||||
view.getBtnQuit().setEnabled(true);
|
||||
view.getBtnContinue().setEnabled(false);
|
||||
@@ -129,7 +124,8 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
QuestDraftUtils.continueMatches();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
view.getBtnQuit().setEnabled(true);
|
||||
for (ActionListener listener : view.getBtnQuit().getActionListeners()) {
|
||||
view.getBtnQuit().removeActionListener(listener);
|
||||
@@ -146,13 +142,13 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
|
||||
VSubmenuQuestDraft.SINGLETON_INSTANCE.populate();
|
||||
|
||||
|
||||
return false; //We're not awarding anything, so never display the custom panel.
|
||||
}
|
||||
|
||||
|
||||
public final void actionOnQuitMatch() {
|
||||
CSubmenuDuels.SINGLETON_INSTANCE.update();
|
||||
CSubmenuChallenges.SINGLETON_INSTANCE.update();
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.List;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.game.GameView;
|
||||
import forge.item.PaperCard;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
@@ -33,7 +34,6 @@ import forge.toolbox.FSkin.Colors;
|
||||
import forge.toolbox.FSkin.SkinColor;
|
||||
import forge.toolbox.FSkin.SkinIcon;
|
||||
import forge.toolbox.FSkin.SkinnedLabel;
|
||||
import forge.view.IGameView;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -61,7 +61,7 @@ public class QuestWinLose extends ControlWinLose {
|
||||
* @param view0 ViewWinLose object
|
||||
* @param match2
|
||||
*/
|
||||
public QuestWinLose(final ViewWinLose view0, final IGameView game0) {
|
||||
public QuestWinLose(final ViewWinLose view0, final GameView game0) {
|
||||
super(view0, game0);
|
||||
view = view0;
|
||||
controller = new QuestWinLoseController(game0) {
|
||||
|
||||
@@ -26,6 +26,7 @@ import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.CardDetailPanel;
|
||||
import forge.gui.CardPicturePanel;
|
||||
import forge.item.PaperCard;
|
||||
@@ -35,7 +36,6 @@ import forge.toolbox.FList;
|
||||
import forge.toolbox.FPanel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* A simple JPanel that shows three columns: card list, pic, and description..
|
||||
@@ -112,10 +112,9 @@ public class QuestWinLoseCardViewer extends FPanel {
|
||||
// (String) jList.getSelectedValue();
|
||||
if ((row >= 0) && (row < QuestWinLoseCardViewer.this.list.size())) {
|
||||
final PaperCard cp = QuestWinLoseCardViewer.this.list.get(row);
|
||||
QuestWinLoseCardViewer.this.detail.setCard(ViewUtil.getCardForUi(cp));
|
||||
QuestWinLoseCardViewer.this.detail.setCard(CardView.getCardForUi(cp));
|
||||
QuestWinLoseCardViewer.this.picture.setCard(cp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,24 +35,23 @@ import javax.swing.JPanel;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.game.GameEntityView;
|
||||
import forge.game.GameView;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.combat.CombatView;
|
||||
import forge.gui.framework.FScreen;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.screens.match.controllers.CDock;
|
||||
import forge.screens.match.views.VField;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CombatView;
|
||||
import forge.view.FView;
|
||||
import forge.view.GameEntityView;
|
||||
import forge.view.IGameView;
|
||||
import forge.view.arcane.CardPanel;
|
||||
|
||||
/**
|
||||
* Semi-transparent overlay panel. Should be used with layered panes.
|
||||
*
|
||||
*/
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public enum TargetingOverlay {
|
||||
/** */
|
||||
@@ -365,7 +364,7 @@ public enum TargetingOverlay {
|
||||
if (overlaystate == 0) { return; }
|
||||
|
||||
// Arc drawing
|
||||
final IGameView gameView = MatchUtil.getGameView();
|
||||
final GameView gameView = MatchUtil.getGameView();
|
||||
if (gameView != null) {
|
||||
assembleArcs(gameView.getCombat());
|
||||
}
|
||||
|
||||
@@ -37,6 +37,9 @@ import net.miginfocom.swing.MigLayout;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import forge.game.GameEntityView;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.toolbox.FButton;
|
||||
@@ -44,10 +47,7 @@ import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.view.CardView;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.GameEntityView;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.arcane.CardPanel;
|
||||
|
||||
/**
|
||||
@@ -145,16 +145,16 @@ public class VAssignDamage {
|
||||
* @param overrideOrder override combatant order
|
||||
|
||||
*/
|
||||
public VAssignDamage(final CardView attacker, final List<CardView> blockers, final int damage0, final GameEntityView defender, boolean overrideOrder) {
|
||||
public VAssignDamage(final CardView attacker, final List<CardView> blockers, final int damage0, final GameEntityView defender0, boolean overrideOrder) {
|
||||
dlg.setTitle("Assign damage dealt by " + attacker);
|
||||
|
||||
// Set damage storage vars
|
||||
this.totalDamageToAssign = damage0;
|
||||
this.defender = defender;
|
||||
this.attackerHasDeathtouch = attacker.getOriginal().hasDeathtouch();
|
||||
this.attackerHasInfect = attacker.getOriginal().hasInfect();
|
||||
this.attackerHasTrample = defender != null && attacker.getOriginal().hasTrample();
|
||||
this.overrideCombatantOrder = overrideOrder;
|
||||
totalDamageToAssign = damage0;
|
||||
defender = defender0;
|
||||
attackerHasDeathtouch = attacker.getOriginal().hasDeathtouch();
|
||||
attackerHasInfect = attacker.getOriginal().hasInfect();
|
||||
attackerHasTrample = defender != null && attacker.getOriginal().hasTrample();
|
||||
overrideCombatantOrder = overrideOrder;
|
||||
|
||||
// Top-level UI stuff
|
||||
final JPanel overlay = SOverlayUtils.genericOverlay();
|
||||
@@ -184,28 +184,23 @@ public class VAssignDamage {
|
||||
// Top row of cards...
|
||||
for (final CardView c : blockers) {
|
||||
DamageTarget dt = new DamageTarget(c, new FLabel.Builder().text("0").fontSize(18).fontAlign(SwingConstants.CENTER).build());
|
||||
this.damage.put(c, dt);
|
||||
this.defenders.add(dt);
|
||||
damage.put(c, dt);
|
||||
defenders.add(dt);
|
||||
addPanelForDefender(pnlDefenders, c);
|
||||
}
|
||||
|
||||
if (attackerHasTrample) {
|
||||
DamageTarget dt = new DamageTarget(null, new FLabel.Builder().text("0").fontSize(18).fontAlign(SwingConstants.CENTER).build());
|
||||
this.damage.put(null, dt);
|
||||
this.defenders.add(dt);
|
||||
damage.put(null, dt);
|
||||
defenders.add(dt);
|
||||
CardView fakeCard = null;
|
||||
if (defender instanceof CardView) {
|
||||
fakeCard = (CardView)defender;
|
||||
}
|
||||
else if (defender instanceof PlayerView) {
|
||||
fakeCard = new CardView(-1);
|
||||
fakeCard.getOriginal().setName(this.defender.toString());
|
||||
final PlayerView p = (PlayerView)defender;
|
||||
fakeCard.setOwner(p);
|
||||
fakeCard.setController(p);
|
||||
fakeCard.getOriginal().setImageKey(CMatchUI.SINGLETON_INSTANCE.avatarImages.get(p.getLobbyPlayer()));
|
||||
fakeCard = new CardView(-1, defender.toString(), p, CMatchUI.SINGLETON_INSTANCE.avatarImages.get(p.getLobbyPlayer()));
|
||||
}
|
||||
|
||||
addPanelForDefender(pnlDefenders, fakeCard);
|
||||
}
|
||||
|
||||
@@ -251,12 +246,12 @@ public class VAssignDamage {
|
||||
initialAssignDamage(false);
|
||||
SOverlayUtils.showOverlay();
|
||||
|
||||
this.dlg.setUndecorated(true);
|
||||
this.dlg.setContentPane(pnlMain);
|
||||
this.dlg.setSize(new Dimension(wDlg, hDlg));
|
||||
this.dlg.setLocation((overlay.getWidth() - wDlg) / 2, (overlay.getHeight() - hDlg) / 2);
|
||||
this.dlg.setModalityType(ModalityType.APPLICATION_MODAL);
|
||||
this.dlg.setVisible(true);
|
||||
dlg.setUndecorated(true);
|
||||
dlg.setContentPane(pnlMain);
|
||||
dlg.setSize(new Dimension(wDlg, hDlg));
|
||||
dlg.setLocation((overlay.getWidth() - wDlg) / 2, (overlay.getHeight() - hDlg) / 2);
|
||||
dlg.setModalityType(ModalityType.APPLICATION_MODAL);
|
||||
dlg.setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -284,7 +279,7 @@ public class VAssignDamage {
|
||||
|
||||
// If trying to assign to the defender, follow the normal assignment rules
|
||||
// No need to check for "active" creature assignee when overiding combatant order
|
||||
if ((source == null || source == this.defender || !this.overrideCombatantOrder) && isAdding &&
|
||||
if ((source == null || source == defender || !overrideCombatantOrder) && isAdding &&
|
||||
!VAssignDamage.this.canAssignTo(source)) {
|
||||
return;
|
||||
}
|
||||
@@ -312,7 +307,7 @@ public class VAssignDamage {
|
||||
|
||||
// cannot assign first blocker less than lethal damage except when overriding order
|
||||
boolean isFirstBlocker = defenders.get(0).card == source;
|
||||
if (!this.overrideCombatantOrder && isFirstBlocker && damageToAdd + damageItHad < lethalDamage )
|
||||
if (!overrideCombatantOrder && isFirstBlocker && damageToAdd + damageItHad < lethalDamage )
|
||||
return;
|
||||
|
||||
if ( 0 == damageToAdd || damageToAdd + damageItHad < 0)
|
||||
@@ -331,7 +326,7 @@ public class VAssignDamage {
|
||||
int damage = dt.damage;
|
||||
// If overriding combatant order, make sure everything has lethal if defender has damage assigned to it
|
||||
// Otherwise, follow normal combatant order
|
||||
if ( hasAliveEnemy && (!this.overrideCombatantOrder || dt.card == null || dt.card == this.defender))
|
||||
if ( hasAliveEnemy && (!overrideCombatantOrder || dt.card == null || dt.card == defender))
|
||||
dt.damage = 0;
|
||||
else
|
||||
hasAliveEnemy |= damage < lethal;
|
||||
@@ -340,7 +335,7 @@ public class VAssignDamage {
|
||||
|
||||
// will assign all damage to defenders and rest to player, if present
|
||||
private void initialAssignDamage(boolean toAllBlockers) {
|
||||
if (!toAllBlockers && this.overrideCombatantOrder) {
|
||||
if (!toAllBlockers && overrideCombatantOrder) {
|
||||
// Don't auto assign the first damage when overriding combatant order
|
||||
updateLabels();
|
||||
return;
|
||||
@@ -420,7 +415,7 @@ public class VAssignDamage {
|
||||
dt.label.setText(sb.toString());
|
||||
}
|
||||
|
||||
this.lblTotalDamage.setText(String.format("Available damage points: %d (of %d)", damageLeft, this.totalDamageToAssign));
|
||||
lblTotalDamage.setText(String.format("Available damage points: %d (of %d)", damageLeft, totalDamageToAssign));
|
||||
btnOK.setEnabled(damageLeft == 0);
|
||||
lblAssignRemaining.setVisible(allHaveLethal && damageLeft > 0);
|
||||
}
|
||||
@@ -435,23 +430,20 @@ public class VAssignDamage {
|
||||
dlg.dispose();
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param card
|
||||
* @return
|
||||
*/
|
||||
|
||||
private int getDamageToKill(final CardView card) {
|
||||
int lethalDamage = 0;
|
||||
if (card == null) {
|
||||
if (defender instanceof PlayerView) {
|
||||
final PlayerView p = (PlayerView)defender;
|
||||
lethalDamage = attackerHasInfect ? MatchUtil.getGameView().getPoisonCountersToLose() - p.getPoisonCounters() : p.getLife();
|
||||
} else if (defender instanceof CardView) { // planeswalker
|
||||
}
|
||||
else if (defender instanceof CardView) { // planeswalker
|
||||
final CardView pw = (CardView)defender;
|
||||
lethalDamage = pw.getOriginal().getLoyalty();
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
lethalDamage = VAssignDamage.this.attackerHasDeathtouch ? 1 : Math.max(0, card.getLethalDamage());
|
||||
}
|
||||
return lethalDamage;
|
||||
|
||||
@@ -10,13 +10,13 @@ import javax.swing.event.ChangeListener;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.player.PlayerControllerHuman;
|
||||
import forge.toolbox.FButton;
|
||||
import forge.toolbox.FCheckBox;
|
||||
import forge.toolbox.FList;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.FDialog;
|
||||
import forge.view.IGameView;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class VAutoYields extends FDialog {
|
||||
@@ -31,12 +31,12 @@ public class VAutoYields extends FDialog {
|
||||
private final FCheckBox chkDisableAll;
|
||||
private final List<String> autoYields;
|
||||
|
||||
public VAutoYields(final IGameView game) {
|
||||
public VAutoYields(final PlayerControllerHuman humanController) {
|
||||
super(true);
|
||||
setTitle("Auto-Yields");
|
||||
|
||||
autoYields = new ArrayList<String>();
|
||||
for (final String autoYield : game.getAutoYields()) {
|
||||
for (final String autoYield : humanController.getAutoYields()) {
|
||||
autoYields.add(autoYield);
|
||||
}
|
||||
lstAutoYields = new FList<String>(new AutoYieldsListModel());
|
||||
@@ -48,11 +48,11 @@ public class VAutoYields extends FDialog {
|
||||
|
||||
listScroller = new FScrollPane(lstAutoYields, true);
|
||||
|
||||
chkDisableAll = new FCheckBox("Disable All Auto Yields", game.getDisableAutoYields());
|
||||
chkDisableAll = new FCheckBox("Disable All Auto Yields", humanController.getDisableAutoYields());
|
||||
chkDisableAll.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
game.setDisableAutoYields(chkDisableAll.isSelected());
|
||||
humanController.setDisableAutoYields(chkDisableAll.isSelected());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -71,7 +71,7 @@ public class VAutoYields extends FDialog {
|
||||
if (selected != null) {
|
||||
autoYields.remove(selected);
|
||||
btnRemove.setEnabled(autoYields.size() > 0);
|
||||
game.setShouldAutoYield(selected, false);
|
||||
humanController.setShouldAutoYield(selected, false);
|
||||
VAutoYields.this.revalidate();
|
||||
lstAutoYields.repaint();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package forge.screens.match;
|
||||
|
||||
import forge.game.GameView;
|
||||
import forge.gui.framework.*;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.properties.ForgePreferences;
|
||||
@@ -8,7 +9,6 @@ import forge.sound.MusicPlaylist;
|
||||
import forge.sound.SoundSystem;
|
||||
import forge.toolbox.FButton;
|
||||
import forge.view.FView;
|
||||
import forge.view.IGameView;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -23,7 +23,6 @@ import java.util.List;
|
||||
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
|
||||
*/
|
||||
public enum VMatchUI implements IVTopLevelUI {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private List<VCommand> lstCommands = new ArrayList<VCommand>();
|
||||
@@ -45,12 +44,10 @@ public enum VMatchUI implements IVTopLevelUI {
|
||||
for (int i = 0; i < 8; i++) EDocID.Hands[i].setDoc(new VEmptyDoc(EDocID.Hands[i]));
|
||||
}
|
||||
|
||||
/** */
|
||||
@Override
|
||||
public void instantiate() {
|
||||
}
|
||||
|
||||
/** */
|
||||
@Override
|
||||
public void populate() {
|
||||
// Dev mode disabled? Remove from parent cell if exists.
|
||||
@@ -95,23 +92,12 @@ public enum VMatchUI implements IVTopLevelUI {
|
||||
}
|
||||
}
|
||||
|
||||
if (MatchUtil.getGameView().isCommandZoneNeeded()) {
|
||||
// Add extra players alternatively to existing user/AI field panels.
|
||||
for (int i = 2; i < lstCommands.size(); i++) {
|
||||
// If already in layout, no need to add again.
|
||||
VCommand cmdView = lstCommands.get(i);
|
||||
if (cmdView.getParentCell() == null) {
|
||||
lstCommands.get(i % 2).getParentCell().addDoc(cmdView);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
//If game goesn't need command zone, remove it from existing field panels
|
||||
for (int i = 0; i < 2; i++) {
|
||||
VCommand cmdView = lstCommands.get(i);
|
||||
if (cmdView.getParentCell() != null) {
|
||||
cmdView.getParentCell().removeDoc(cmdView);
|
||||
}
|
||||
// Add extra players alternatively to existing user/AI field panels.
|
||||
for (int i = 2; i < lstCommands.size(); i++) {
|
||||
// If already in layout, no need to add again.
|
||||
VCommand cmdView = lstCommands.get(i);
|
||||
if (cmdView.getParentCell() == null) {
|
||||
lstCommands.get(i % 2).getParentCell().addDoc(cmdView);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -147,24 +133,18 @@ public enum VMatchUI implements IVTopLevelUI {
|
||||
});
|
||||
}
|
||||
|
||||
//========== Retrieval methods
|
||||
|
||||
/** @return {@link forge.screens.match.CMatchUI} */
|
||||
public CMatchUI getControl() {
|
||||
return this.control;
|
||||
}
|
||||
|
||||
/** @param lst0 List<VField> */
|
||||
public void setFieldViews(final List<VField> lst0) {
|
||||
this.lstFields = lst0;
|
||||
}
|
||||
|
||||
/** @return {@link java.util.List}<{@link forge.screens.match.views.VHand}> */
|
||||
public List<VField> getFieldViews() {
|
||||
return lstFields;
|
||||
}
|
||||
|
||||
/** @param lst0 List<VField> */
|
||||
public void setHandViews(final List<VHand> lst0) {
|
||||
this.lstHands = lst0;
|
||||
}
|
||||
@@ -177,16 +157,10 @@ public enum VMatchUI implements IVTopLevelUI {
|
||||
return VPrompt.SINGLETON_INSTANCE.getBtnOK();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the lstCommands
|
||||
*/
|
||||
public List<VCommand> getCommandViews() {
|
||||
return lstCommands;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param lstCommands0 the lstCommands to set
|
||||
*/
|
||||
public void setCommandViews(List<VCommand> lstCommands0) {
|
||||
this.lstCommands = lstCommands0;
|
||||
}
|
||||
@@ -195,20 +169,14 @@ public enum VMatchUI implements IVTopLevelUI {
|
||||
return lstHands;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVTopLevelUI#onSwitching(forge.gui.framework.FScreen)
|
||||
*/
|
||||
@Override
|
||||
public boolean onSwitching(FScreen fromScreen, FScreen toScreen) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVTopLevelUI#onClosing(forge.control.FControl.Screens)
|
||||
*/
|
||||
@Override
|
||||
public boolean onClosing(FScreen screen) {
|
||||
final IGameView gameView = MatchUtil.getGameView();
|
||||
final GameView gameView = MatchUtil.getGameView();
|
||||
if (gameView != null && !gameView.isGameOver()) {
|
||||
MatchUtil.concede();
|
||||
return false; //delay hiding tab even if concede successful
|
||||
|
||||
@@ -18,6 +18,7 @@ import forge.LobbyPlayer;
|
||||
import forge.UiCommand;
|
||||
import forge.game.GameLogEntry;
|
||||
import forge.game.GameLogEntryType;
|
||||
import forge.game.GameView;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.interfaces.IWinLoseView;
|
||||
import forge.model.FModel;
|
||||
@@ -29,7 +30,6 @@ import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedLabel;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.toolbox.FTextArea;
|
||||
import forge.view.IGameView;
|
||||
|
||||
public class ViewWinLose implements IWinLoseView<FButton> {
|
||||
private final FButton btnContinue, btnRestart, btnQuit;
|
||||
@@ -39,10 +39,10 @@ public class ViewWinLose implements IWinLoseView<FButton> {
|
||||
private final SkinnedLabel lblStats = new SkinnedLabel("WinLoseFrame > lblStats needs updating.");
|
||||
private final JPanel pnlOutcomes = new JPanel(new MigLayout("wrap, align center"));
|
||||
|
||||
private final IGameView game;
|
||||
private final GameView game;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public ViewWinLose(final IGameView game0) {
|
||||
public ViewWinLose(final GameView game0) {
|
||||
|
||||
this.game = game0;
|
||||
|
||||
@@ -107,7 +107,7 @@ public class ViewWinLose implements IWinLoseView<FButton> {
|
||||
|
||||
// Assemble game log scroller.
|
||||
final FTextArea txtLog = new FTextArea();
|
||||
txtLog.setText(StringUtils.join(game.getLogEntries(null), "\r\n").replace("[COMPUTER]", "[AI]"));
|
||||
txtLog.setText(StringUtils.join(game.getGameLog().getLogEntries(null), "\r\n").replace("[COMPUTER]", "[AI]"));
|
||||
txtLog.setFont(FSkin.getFont(14));
|
||||
txtLog.setFocusable(true); // allow highlighting and copying of log
|
||||
|
||||
@@ -187,7 +187,7 @@ public class ViewWinLose implements IWinLoseView<FButton> {
|
||||
|
||||
}
|
||||
|
||||
private String composeTitle(final IGameView game) {
|
||||
private String composeTitle(final GameView game) {
|
||||
final LobbyPlayer winner = game.getWinningPlayer();
|
||||
final int winningTeam = game.getWinningTeam();
|
||||
if (winner == null) {
|
||||
@@ -220,12 +220,12 @@ public class ViewWinLose implements IWinLoseView<FButton> {
|
||||
}
|
||||
|
||||
private void showGameOutcomeSummary() {
|
||||
for (final GameLogEntry o : game.getLogEntriesExact(GameLogEntryType.GAME_OUTCOME))
|
||||
for (final GameLogEntry o : game.getGameLog().getLogEntriesExact(GameLogEntryType.GAME_OUTCOME))
|
||||
pnlOutcomes.add(new FLabel.Builder().text(o.message).fontSize(14).build(), "h 20!");
|
||||
}
|
||||
|
||||
private void showPlayerScores() {
|
||||
for (final GameLogEntry o : game.getLogEntriesExact(GameLogEntryType.MATCH_RESULTS)) {
|
||||
for (final GameLogEntry o : game.getGameLog().getLogEntriesExact(GameLogEntryType.MATCH_RESULTS)) {
|
||||
lblStats.setText(removePlayerTypeFromLogMessage(o.message));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,13 +5,13 @@ import java.util.List;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.ForgeAction;
|
||||
import forge.gui.GuiChoose;
|
||||
import forge.match.MatchConstants;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* Receives click and programmatic requests for viewing data stacks in the
|
||||
|
||||
@@ -5,14 +5,14 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.game.GameEntityView;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.game.combat.CombatView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.screens.match.views.VCombat;
|
||||
import forge.util.Lang;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
import forge.view.CombatView;
|
||||
import forge.view.GameEntityView;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* Controls the combat panel in the match UI.
|
||||
|
||||
@@ -18,9 +18,9 @@
|
||||
package forge.screens.match.controllers;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.screens.match.views.VCommand;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* Controls Swing components of a player's command instance.
|
||||
|
||||
@@ -20,14 +20,13 @@ package forge.screens.match.controllers;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.item.IPaperCard;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.InventoryItemFromSet;
|
||||
import forge.screens.match.views.VDetail;
|
||||
import forge.toolbox.FMouseAdapter;
|
||||
import forge.view.CardView;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* Controls the card detail area in the match UI.
|
||||
@@ -58,7 +57,7 @@ public enum CDetail implements ICDoc {
|
||||
|
||||
public void showCard(final InventoryItem item) {
|
||||
if (item instanceof IPaperCard) {
|
||||
showCard(ViewUtil.getCardForUi((IPaperCard)item));
|
||||
showCard(CardView.getCardForUi((IPaperCard)item));
|
||||
} else if (item instanceof InventoryItemFromSet) {
|
||||
view.getLblFlipcard().setVisible(false);
|
||||
view.getPnlDetail().setItem((InventoryItemFromSet)item);
|
||||
|
||||
@@ -27,7 +27,7 @@ public enum CDev implements ICDoc {
|
||||
public void togglePlayManyLandsPerTurn() {
|
||||
boolean newValue = !VDev.SINGLETON_INSTANCE.getLblUnlimitedLands().getToggled();
|
||||
VDev.SINGLETON_INSTANCE.getLblUnlimitedLands().setToggled(newValue);
|
||||
MatchUtil.getGameView().cheat().setCanPlayUnlimitedLands(newValue);
|
||||
MatchUtil.getHumanController().cheat().setCanPlayUnlimitedLands(newValue);
|
||||
}
|
||||
|
||||
private final MouseListener madViewAll = new MouseAdapter() {
|
||||
@@ -39,7 +39,7 @@ public enum CDev implements ICDoc {
|
||||
public void toggleViewAllCards() {
|
||||
boolean newValue = !VDev.SINGLETON_INSTANCE.getLblViewAll().getToggled();
|
||||
VDev.SINGLETON_INSTANCE.getLblViewAll().setToggled(newValue);
|
||||
MatchUtil.getGameView().cheat().setViewAllCards(newValue);
|
||||
MatchUtil.getHumanController().cheat().setViewAllCards(newValue);
|
||||
}
|
||||
|
||||
private final MouseListener madMana = new MouseAdapter() {
|
||||
@@ -49,7 +49,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void generateMana() {
|
||||
MatchUtil.getGameView().cheat().generateMana();
|
||||
MatchUtil.getHumanController().cheat().generateMana();
|
||||
}
|
||||
|
||||
private final MouseListener madSetup = new MouseAdapter() {
|
||||
@@ -59,7 +59,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void setupGameState() {
|
||||
MatchUtil.getGameView().cheat().setupGameState();
|
||||
MatchUtil.getHumanController().cheat().setupGameState();
|
||||
}
|
||||
|
||||
private final MouseListener madTutor = new MouseAdapter() {
|
||||
@@ -69,7 +69,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void tutorForCard() {
|
||||
MatchUtil.getGameView().cheat().tutorForCard();
|
||||
MatchUtil.getHumanController().cheat().tutorForCard();
|
||||
}
|
||||
|
||||
private final MouseListener madCardToHand = new MouseAdapter() {
|
||||
@@ -79,7 +79,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void addCardToHand() {
|
||||
MatchUtil.getGameView().cheat().addCardToHand();
|
||||
MatchUtil.getHumanController().cheat().addCardToHand();
|
||||
}
|
||||
|
||||
private final MouseListener madCounter = new MouseAdapter() {
|
||||
@@ -89,7 +89,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void addCounterToPermanent() {
|
||||
MatchUtil.getGameView().cheat().addCountersToPermanent();
|
||||
MatchUtil.getHumanController().cheat().addCountersToPermanent();
|
||||
}
|
||||
|
||||
private final MouseListener madTap = new MouseAdapter() {
|
||||
@@ -99,7 +99,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void tapPermanent() {
|
||||
MatchUtil.getGameView().cheat().tapPermanents();
|
||||
MatchUtil.getHumanController().cheat().tapPermanents();
|
||||
}
|
||||
|
||||
private final MouseListener madUntap = new MouseAdapter() {
|
||||
@@ -109,7 +109,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void untapPermanent() {
|
||||
MatchUtil.getGameView().cheat().untapPermanents();
|
||||
MatchUtil.getHumanController().cheat().untapPermanents();
|
||||
}
|
||||
|
||||
private final MouseListener madLife = new MouseAdapter() {
|
||||
@@ -119,7 +119,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void setPlayerLife() {
|
||||
MatchUtil.getGameView().cheat().setPlayerLife();
|
||||
MatchUtil.getHumanController().cheat().setPlayerLife();
|
||||
}
|
||||
|
||||
private final MouseListener madWinGame = new MouseAdapter() {
|
||||
@@ -129,7 +129,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void winGame() {
|
||||
MatchUtil.getGameView().cheat().winGame();
|
||||
MatchUtil.getHumanController().cheat().winGame();
|
||||
}
|
||||
|
||||
private final MouseListener madCardToBattlefield = new MouseAdapter() {
|
||||
@@ -139,7 +139,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void addCardToBattlefield() {
|
||||
MatchUtil.getGameView().cheat().addCardToBattlefield();
|
||||
MatchUtil.getHumanController().cheat().addCardToBattlefield();
|
||||
}
|
||||
|
||||
private final MouseListener madRiggedRoll = new MouseAdapter() {
|
||||
@@ -149,7 +149,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void riggedPlanerRoll() {
|
||||
MatchUtil.getGameView().cheat().riggedPlanarRoll();
|
||||
MatchUtil.getHumanController().cheat().riggedPlanarRoll();
|
||||
}
|
||||
|
||||
private final MouseListener madWalkToPlane = new MouseAdapter() {
|
||||
@@ -159,7 +159,7 @@ public enum CDev implements ICDoc {
|
||||
}
|
||||
};
|
||||
public void planeswalkTo() {
|
||||
MatchUtil.getGameView().cheat().planeswalkTo();
|
||||
MatchUtil.getHumanController().cheat().planeswalkTo();
|
||||
}
|
||||
|
||||
//========== End mouse listener inits
|
||||
@@ -198,7 +198,7 @@ public enum CDev implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
VDev.SINGLETON_INSTANCE.getLblUnlimitedLands().setToggled(MatchUtil.getGameView().canPlayUnlimitedLands());
|
||||
VDev.SINGLETON_INSTANCE.getLblViewAll().setToggled(MatchUtil.getGameView().canViewAllCards());
|
||||
VDev.SINGLETON_INSTANCE.getLblUnlimitedLands().setToggled(MatchUtil.getHumanController().canPlayUnlimitedLands());
|
||||
VDev.SINGLETON_INSTANCE.getLblViewAll().setToggled(MatchUtil.getHumanController().mayLookAtAllCards());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,7 +236,7 @@ public enum CDock implements ICDoc {
|
||||
VDock.SINGLETON_INSTANCE.getBtnAlphaStrike().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
MatchUtil.getGameView().alphaStrike();
|
||||
MatchUtil.getHumanController().alphaStrike();
|
||||
}
|
||||
});
|
||||
VDock.SINGLETON_INSTANCE.getBtnTargeting().setCommand(new UiCommand() {
|
||||
|
||||
@@ -25,6 +25,8 @@ import com.google.common.base.Function;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.match.MatchConstants;
|
||||
@@ -32,8 +34,6 @@ import forge.match.MatchUtil;
|
||||
import forge.screens.match.ZoneAction;
|
||||
import forge.screens.match.views.VField;
|
||||
import forge.toolbox.MouseTriggerEvent;
|
||||
import forge.view.CardView;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* Controls Swing components of a player's field instance.
|
||||
@@ -79,21 +79,20 @@ public class CField implements ICDoc {
|
||||
}
|
||||
@Override
|
||||
protected Iterable<CardView> getCardsAsIterable() {
|
||||
return player.getFlashbackCards();
|
||||
return player.getFlashback();
|
||||
}
|
||||
};
|
||||
|
||||
Function<Byte, Void> manaAction = new Function<Byte, Void>() {
|
||||
public Void apply(Byte colorCode) {
|
||||
if (CField.this.player.getLobbyPlayer() == Singletons.getControl().getGuiPlayer()) {
|
||||
MatchUtil.getGameView().useMana(colorCode.byteValue());
|
||||
MatchUtil.getHumanController().useMana(colorCode.byteValue());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
view.getDetailsPanel().setupMouseActions(handAction, libraryAction, exileAction, graveAction, flashBackAction, manaAction);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -33,12 +33,12 @@ import com.google.common.collect.Lists;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.screens.match.CMatchUI;
|
||||
import forge.screens.match.views.VField;
|
||||
import forge.screens.match.views.VHand;
|
||||
import forge.view.CardView;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.arcane.CardPanel;
|
||||
import forge.view.arcane.HandArea;
|
||||
import forge.view.arcane.util.Animation;
|
||||
@@ -46,7 +46,6 @@ import forge.view.arcane.util.CardPanelMouseAdapter;
|
||||
|
||||
/**
|
||||
* Controls Swing components of a player's hand instance.
|
||||
*
|
||||
*/
|
||||
public class CHand implements ICDoc {
|
||||
private final PlayerView player;
|
||||
@@ -108,7 +107,7 @@ public class CHand implements ICDoc {
|
||||
|
||||
final List<CardView> cards;
|
||||
synchronized (player) {
|
||||
cards = ImmutableList.copyOf(player.getHandCards());
|
||||
cards = ImmutableList.copyOf(player.getHand());
|
||||
}
|
||||
|
||||
synchronized (ordering) {
|
||||
|
||||
@@ -25,6 +25,7 @@ import javax.swing.JLabel;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.CardPicturePanel;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.item.IPaperCard;
|
||||
@@ -32,8 +33,6 @@ import forge.item.InventoryItem;
|
||||
import forge.screens.match.views.VPicture;
|
||||
import forge.toolbox.FMouseAdapter;
|
||||
import forge.toolbox.special.CardZoomer;
|
||||
import forge.view.CardView;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* Singleton controller for VPicture.
|
||||
@@ -83,18 +82,20 @@ public enum CPicture implements ICDoc {
|
||||
public void showImage(final InventoryItem item) {
|
||||
if (item instanceof IPaperCard) {
|
||||
final IPaperCard paperCard = ((IPaperCard)item);
|
||||
final CardView c = ViewUtil.getCardForUi(paperCard);
|
||||
final CardView c = CardView.getCardForUi(paperCard);
|
||||
if (paperCard.isFoil() && c.getOriginal().getFoilIndex() == 0) {
|
||||
// FIXME should assign a random foil here in all cases
|
||||
// (currently assigns 1 for the deck editors where foils "flicker" otherwise)
|
||||
if (item instanceof Card) {
|
||||
c.getOriginal().setRandomFoil();
|
||||
} else if (item instanceof IPaperCard) {
|
||||
c.getOriginal().setFoilIndex(1);
|
||||
c.getOriginal().setFoilIndexOverride(-1); //-1 to choose random
|
||||
}
|
||||
else if (item instanceof IPaperCard) {
|
||||
c.getOriginal().setFoilIndexOverride(1);
|
||||
}
|
||||
}
|
||||
showCard(c, false);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
currentView = null;
|
||||
isDisplayAlt = false;
|
||||
flipIndicator.setVisible(false);
|
||||
@@ -177,5 +178,4 @@ public enum CPicture implements ICDoc {
|
||||
CDetail.SINGLETON_INSTANCE.showCard(currentView, isDisplayAlt);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -28,16 +28,16 @@ import javax.swing.JButton;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.UiCommand;
|
||||
import forge.game.GameView;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.spellability.SpellAbility;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.framework.SDisplayUtil;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.screens.match.views.VPrompt;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.util.ITriggerEvent;
|
||||
import forge.view.CardView;
|
||||
import forge.view.IGameView;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.SpellAbilityView;
|
||||
|
||||
/**
|
||||
* Controls the prompt panel in the match UI.
|
||||
@@ -45,7 +45,6 @@ import forge.view.SpellAbilityView;
|
||||
* <br><br><i>(C at beginning of class name denotes a control class.)</i>
|
||||
*/
|
||||
public enum CPrompt implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private Component lastFocusedButton = null;
|
||||
@@ -89,34 +88,33 @@ public enum CPrompt implements ICDoc {
|
||||
}
|
||||
|
||||
public void selectButtonOk() {
|
||||
MatchUtil.getGameView().selectButtonOk();
|
||||
MatchUtil.getHumanController().selectButtonOk();
|
||||
}
|
||||
|
||||
public void selectButtonCancel() {
|
||||
MatchUtil.getGameView().selectButtonCancel();
|
||||
MatchUtil.getHumanController().selectButtonCancel();
|
||||
}
|
||||
|
||||
public boolean passPriority() {
|
||||
return MatchUtil.getGameView().passPriority();
|
||||
return MatchUtil.getHumanController().passPriority();
|
||||
}
|
||||
|
||||
public boolean passPriorityUntilEndOfTurn() {
|
||||
return MatchUtil.getGameView().passPriorityUntilEndOfTurn();
|
||||
return MatchUtil.getHumanController().passPriorityUntilEndOfTurn();
|
||||
}
|
||||
|
||||
public void selectPlayer(final PlayerView player, final ITriggerEvent triggerEvent) {
|
||||
MatchUtil.getGameView().selectPlayer(player, triggerEvent);
|
||||
MatchUtil.getHumanController().selectPlayer(player, triggerEvent);
|
||||
}
|
||||
|
||||
public void selectCard(final CardView card, final ITriggerEvent triggerEvent) {
|
||||
MatchUtil.getGameView().selectCard(card, triggerEvent);
|
||||
MatchUtil.getHumanController().selectCard(card, triggerEvent);
|
||||
}
|
||||
|
||||
public void selectAbility(final SpellAbilityView sa) {
|
||||
MatchUtil.getGameView().selectAbility(sa);
|
||||
public void selectAbility(final SpellAbility sa) {
|
||||
MatchUtil.getHumanController().selectAbility(sa);
|
||||
}
|
||||
|
||||
/** @param s0   {@link java.lang.String} */
|
||||
public void setMessage(String s0) {
|
||||
view.getTarMessage().setText(FSkin.encodeSymbols(s0, false));
|
||||
}
|
||||
@@ -126,17 +124,11 @@ public enum CPrompt implements ICDoc {
|
||||
SDisplayUtil.remind(view);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.ICDoc#getCommandOnSelect()
|
||||
*/
|
||||
@Override
|
||||
public UiCommand getCommandOnSelect() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see java.util.Observer#update(java.util.Observable, java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// set focus back to button that last had it
|
||||
@@ -147,9 +139,9 @@ public enum CPrompt implements ICDoc {
|
||||
|
||||
public void updateText() {
|
||||
FThreads.assertExecutedByEdt(true);
|
||||
final IGameView game = MatchUtil.getGameView();
|
||||
final String text = String.format("T:%d G:%d/%d [%s]", game.getTurnNumber(), game.getNumPlayedGamesInMatch() + 1, game.getNumGamesInMatch(), game.getGameType());
|
||||
final GameView game = MatchUtil.getGameView();
|
||||
final String text = String.format("T:%d G:%d/%d [%s]", game.getTurn(), game.getNumPlayedGamesInMatch() + 1, game.getNumGamesInMatch(), game.getGameType());
|
||||
view.getLblGames().setText(text);
|
||||
view.getLblGames().setToolTipText(String.format("%s: Game #%d of %d, turn %d", game.getGameType(), game.getNumPlayedGamesInMatch() + 1, game.getNumGamesInMatch(), game.getTurnNumber()));
|
||||
view.getLblGames().setToolTipText(String.format("%s: Game #%d of %d, turn %d", game.getGameType(), game.getNumPlayedGamesInMatch() + 1, game.getNumGamesInMatch(), game.getTurn()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,8 +67,8 @@ public class DevModeMenu implements ActionListener {
|
||||
menu.add(getMenuItem(DevMenuItem.WIN_GAME));
|
||||
menu.addSeparator();
|
||||
menu.add(getMenuItem(DevMenuItem.SETUP_GAME_STATE));
|
||||
menu.add(getCheckboxMenuItem(DevMenuItem.PLAY_UNLIMITED_LANDS, MatchUtil.getGameView().canPlayUnlimitedLands()));
|
||||
menu.add(getCheckboxMenuItem(DevMenuItem.VIEW_ALL, MatchUtil.getGameView().canViewAllCards()));
|
||||
menu.add(getCheckboxMenuItem(DevMenuItem.PLAY_UNLIMITED_LANDS, MatchUtil.getHumanController().canPlayUnlimitedLands()));
|
||||
menu.add(getCheckboxMenuItem(DevMenuItem.VIEW_ALL, MatchUtil.getHumanController().mayLookAtAllCards()));
|
||||
menu.add(getMenuItem(DevMenuItem.ADD_COUNTER));
|
||||
menu.addSeparator();
|
||||
menu.add(getMenuItem(DevMenuItem.TAP_PERMANENT));
|
||||
|
||||
@@ -83,7 +83,7 @@ public final class GameMenu {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
MatchUtil.getGameView().tryUndoLastAction();
|
||||
MatchUtil.getHumanController().tryUndoLastAction();
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -201,7 +201,7 @@ public final class GameMenu {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final VAutoYields autoYields = new VAutoYields(MatchUtil.getGameView());
|
||||
final VAutoYields autoYields = new VAutoYields(MatchUtil.getHumanController());
|
||||
autoYields.showAutoYields();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -25,6 +25,8 @@ import javax.swing.JPanel;
|
||||
import javax.swing.SwingConstants;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.CardPicturePanel;
|
||||
import forge.gui.WrapLayout;
|
||||
import forge.gui.framework.DragCell;
|
||||
@@ -35,8 +37,6 @@ import forge.match.MatchUtil;
|
||||
import forge.screens.match.controllers.CAntes;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.CardView;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of card ante area.
|
||||
@@ -121,15 +121,15 @@ public enum VAntes implements IVDoc<CAntes> {
|
||||
pnl.removeAll();
|
||||
|
||||
for (final PlayerView p : MatchUtil.getGameView().getPlayers()) {
|
||||
for (final CardView c : p.getAnteCards()) {
|
||||
final AntePanel pnlTemp = new AntePanel(c);
|
||||
allAntes.add(pnlTemp);
|
||||
Iterable<CardView> ante = p.getAnte();
|
||||
if (ante != null) {
|
||||
for (final CardView c : ante) {
|
||||
final AntePanel pnlTemp = new AntePanel(c);
|
||||
allAntes.add(pnlTemp);
|
||||
pnl.add(pnlTemp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(AntePanel ap : allAntes) {
|
||||
pnl.add(ap);
|
||||
}
|
||||
}
|
||||
|
||||
//========= Private class handling
|
||||
|
||||
@@ -20,6 +20,7 @@ package forge.screens.match.views;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
@@ -28,7 +29,6 @@ import forge.gui.framework.IVDoc;
|
||||
import forge.screens.match.controllers.CCommand;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.arcane.PlayArea;
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,6 +28,7 @@ import javax.swing.border.Border;
|
||||
import javax.swing.border.LineBorder;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
@@ -41,7 +42,6 @@ import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.toolbox.special.PhaseIndicator;
|
||||
import forge.toolbox.special.PlayerDetailsPanel;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.arcane.PlayArea;
|
||||
|
||||
/**
|
||||
|
||||
@@ -20,13 +20,13 @@ package forge.screens.match.views;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.IVDoc;
|
||||
import forge.screens.match.controllers.CHand;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.arcane.HandArea;
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,6 +27,7 @@ import com.google.common.collect.Lists;
|
||||
|
||||
import forge.game.GameLogEntry;
|
||||
import forge.game.GameLogEntryType;
|
||||
import forge.game.GameView;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
@@ -38,8 +39,6 @@ import forge.screens.match.GameLogPanel;
|
||||
import forge.screens.match.controllers.CLog;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinFont;
|
||||
import forge.view.IGameView;
|
||||
import forge.view.LocalGameView;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of game log report.
|
||||
@@ -55,7 +54,7 @@ public enum VLog implements IVDoc<CLog> {
|
||||
private final List<GameLogEntry> displayedLogEntries = Lists.newArrayList();
|
||||
|
||||
// Used to determine when a new game has started.
|
||||
private IGameView gameLogModel = null;
|
||||
private GameView gameLogModel = null;
|
||||
|
||||
// Fields used with interface IVDoc
|
||||
private DragCell parentCell;
|
||||
@@ -128,7 +127,7 @@ public enum VLog implements IVDoc<CLog> {
|
||||
*/
|
||||
public void updateConsole() {
|
||||
if (isGameLogConsoleVisible()) {
|
||||
LocalGameView model = MatchUtil.getGameView();
|
||||
GameView model = MatchUtil.getGameView();
|
||||
resetDisplayIfNewGame(model);
|
||||
displayNewGameLogEntries(model);
|
||||
// Important : refreshLayout() needs to be called every update.
|
||||
@@ -140,7 +139,7 @@ public enum VLog implements IVDoc<CLog> {
|
||||
return parentCell.getSelected().equals(this);
|
||||
}
|
||||
|
||||
private void resetDisplayIfNewGame(final IGameView model) {
|
||||
private void resetDisplayIfNewGame(final GameView model) {
|
||||
if (this.gameLogModel != model) {
|
||||
gameLog.reset();
|
||||
this.displayedLogEntries.clear();
|
||||
@@ -167,17 +166,17 @@ public enum VLog implements IVDoc<CLog> {
|
||||
p.add(gameLog, "w 10:100%, h 100%");
|
||||
}
|
||||
|
||||
private void displayNewGameLogEntries(final IGameView model) {
|
||||
private void displayNewGameLogEntries(final GameView model) {
|
||||
List<GameLogEntry> newLogEntries = Lists.reverse(getNewGameLogEntries(model));
|
||||
if (newLogEntries.size() > 0) {
|
||||
addNewLogEntriesToJPanel(newLogEntries);
|
||||
}
|
||||
}
|
||||
|
||||
private List<GameLogEntry> getNewGameLogEntries(final IGameView model) {
|
||||
private List<GameLogEntry> getNewGameLogEntries(final GameView model) {
|
||||
String logEntryType = FModel.getPreferences().getPref(FPref.DEV_LOG_ENTRY_TYPE);
|
||||
GameLogEntryType logVerbosityFilter = GameLogEntryType.valueOf(logEntryType);
|
||||
List<GameLogEntry> logEntries = model.getLogEntries(logVerbosityFilter);
|
||||
List<GameLogEntry> logEntries = model.getGameLog().getLogEntries(logVerbosityFilter);
|
||||
// Set subtraction - remove all log entries from new list which are already displayed.
|
||||
logEntries.removeAll(this.displayedLogEntries);
|
||||
return logEntries;
|
||||
|
||||
@@ -28,6 +28,8 @@ import javax.swing.ScrollPaneConstants;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
@@ -39,8 +41,6 @@ import forge.screens.match.controllers.CPlayers;
|
||||
import forge.toolbox.FScrollPanel;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedLabel;
|
||||
import forge.view.CardView;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
/**
|
||||
* Assembles Swing components of players report.
|
||||
@@ -165,14 +165,16 @@ public enum VPlayers implements IVDoc<CPlayers> {
|
||||
temp[5].setText("");
|
||||
}
|
||||
if (FModel.getPreferences().getPrefBoolean(FPref.UI_ANTE)) {
|
||||
final List<CardView> list = p0.getAnteCards();
|
||||
final Iterable<CardView> list = p0.getAnte();
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append("Ante'd: ");
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
sb.append(list.get(i));
|
||||
if (i < (list.size() - 1)) {
|
||||
boolean needDelim = false;
|
||||
for (CardView cv : list) {
|
||||
if (needDelim) {
|
||||
sb.append(", ");
|
||||
}
|
||||
else { needDelim = true; }
|
||||
sb.append(cv);
|
||||
}
|
||||
temp[6].setText(sb.toString());
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@ import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
import javax.swing.JPopupMenu;
|
||||
import javax.swing.ScrollPaneConstants;
|
||||
@@ -38,11 +36,16 @@ import net.miginfocom.swing.MigLayout;
|
||||
import forge.ImageCache;
|
||||
import forge.card.CardDetailUtil;
|
||||
import forge.card.CardDetailUtil.DetailColors;
|
||||
import forge.game.GameView;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.spellability.StackItemView;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.IVDoc;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.player.PlayerControllerHuman;
|
||||
import forge.screens.match.CMatchUI;
|
||||
import forge.screens.match.controllers.CPrompt;
|
||||
import forge.screens.match.controllers.CStack;
|
||||
@@ -50,11 +53,7 @@ import forge.toolbox.FMouseAdapter;
|
||||
import forge.toolbox.FScrollPanel;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedTextArea;
|
||||
import forge.view.CardView;
|
||||
import forge.view.IGameView;
|
||||
import forge.view.LocalGameView;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.StackItemView;
|
||||
import forge.util.FCollection;
|
||||
import forge.view.arcane.CardPanel;
|
||||
|
||||
/**
|
||||
@@ -63,7 +62,6 @@ import forge.view.arcane.CardPanel;
|
||||
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
|
||||
*/
|
||||
public enum VStack implements IVDoc<CStack> {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
// Fields used with interface IVDoc
|
||||
@@ -80,65 +78,40 @@ public enum VStack implements IVDoc<CStack> {
|
||||
private VStack() {
|
||||
}
|
||||
|
||||
//========= Overridden methods
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#populate()
|
||||
*/
|
||||
@Override
|
||||
public void populate() {
|
||||
parentCell.getBody().setLayout(new MigLayout("insets 3px, gap 0"));
|
||||
parentCell.getBody().add(scroller, "grow, push");
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#setParentCell()
|
||||
*/
|
||||
@Override
|
||||
public void setParentCell(final DragCell cell0) {
|
||||
this.parentCell = cell0;
|
||||
parentCell = cell0;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getParentCell()
|
||||
*/
|
||||
@Override
|
||||
public DragCell getParentCell() {
|
||||
return this.parentCell;
|
||||
return parentCell;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getDocumentID()
|
||||
*/
|
||||
@Override
|
||||
public EDocID getDocumentID() {
|
||||
return EDocID.REPORT_STACK;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getTabLabel()
|
||||
*/
|
||||
@Override
|
||||
public DragTab getTabLabel() {
|
||||
return tab;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.IVDoc#getLayoutControl()
|
||||
*/
|
||||
@Override
|
||||
public CStack getLayoutControl() {
|
||||
return CStack.SINGLETON_INSTANCE;
|
||||
}
|
||||
|
||||
//========== Observer update methods
|
||||
|
||||
/**
|
||||
* @param models
|
||||
* @param viewer */
|
||||
public void updateStack() {
|
||||
final LocalGameView model = MatchUtil.getGameView();
|
||||
final List<StackItemView> items = model.getStack();
|
||||
final GameView model = MatchUtil.getGameView();
|
||||
final FCollection<StackItemView>.FCollectionView items = model.getStack();
|
||||
tab.setText("Stack : " + items.size());
|
||||
|
||||
// No need to update the rest unless it's showing
|
||||
@@ -155,7 +128,7 @@ public enum VStack implements IVDoc<CStack> {
|
||||
//update the Card Picture/Detail when the spell is added to the stack
|
||||
if (isFirst) {
|
||||
isFirst = false;
|
||||
CMatchUI.SINGLETON_INSTANCE.setCard(item.getSource());
|
||||
CMatchUI.SINGLETON_INSTANCE.setCard(item.getSourceCard());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,10 +151,10 @@ public enum VStack implements IVDoc<CStack> {
|
||||
|
||||
private final CardView sourceCard;
|
||||
|
||||
public StackInstanceTextArea(final LocalGameView gameView, final StackItemView item) {
|
||||
sourceCard = item.getSource();
|
||||
public StackInstanceTextArea(final GameView gameView, final StackItemView item) {
|
||||
sourceCard = item.getSourceCard();
|
||||
|
||||
final PlayerView localPlayer = gameView.getPlayerView(MatchUtil.getCurrentPlayer(), false);
|
||||
final PlayerView localPlayer = PlayerView.get(MatchUtil.getCurrentPlayer());
|
||||
final String txt = (item.isOptionalTrigger() && item.getActivatingPlayer().equals(localPlayer)
|
||||
? "(OPTIONAL) " : "") + item.getText();
|
||||
|
||||
@@ -200,7 +173,7 @@ public enum VStack implements IVDoc<CStack> {
|
||||
@Override
|
||||
public void mouseEntered(final MouseEvent e) {
|
||||
if (!txt.startsWith("Morph ")) {
|
||||
CMatchUI.SINGLETON_INSTANCE.setCard(item.getSource());
|
||||
CMatchUI.SINGLETON_INSTANCE.setCard(item.getSourceCard());
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -216,13 +189,13 @@ public enum VStack implements IVDoc<CStack> {
|
||||
onClick(e);
|
||||
}
|
||||
private void onClick(MouseEvent e) {
|
||||
abilityMenu.setStackInstance(gameView, item, localPlayer);
|
||||
abilityMenu.setStackInstance(MatchUtil.getHumanController(), item, localPlayer);
|
||||
abilityMenu.show(e.getComponent(), e.getX(), e.getY());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
final DetailColors color = CardDetailUtil.getBorderColor(item.getSource().getOriginal());
|
||||
final DetailColors color = CardDetailUtil.getBorderColor(item.getSourceCard().getOriginal());
|
||||
setBackground(new Color(color.r, color.g, color.b));
|
||||
setForeground(FSkin.getHighContrastColor(getBackground()));
|
||||
}
|
||||
@@ -248,7 +221,7 @@ public enum VStack implements IVDoc<CStack> {
|
||||
private final JCheckBoxMenuItem jmiAutoYield;
|
||||
private final JCheckBoxMenuItem jmiAlwaysYes;
|
||||
private final JCheckBoxMenuItem jmiAlwaysNo;
|
||||
private IGameView game;
|
||||
private PlayerControllerHuman humanController;
|
||||
private StackItemView item;
|
||||
|
||||
private Integer triggerID = 0;
|
||||
@@ -259,9 +232,9 @@ public enum VStack implements IVDoc<CStack> {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
final String key = item.getKey();
|
||||
final boolean autoYield = game.shouldAutoYield(key);
|
||||
game.setShouldAutoYield(key, !autoYield);
|
||||
if (!autoYield && game.peekStack() == item) {
|
||||
final boolean autoYield = humanController.shouldAutoYield(key);
|
||||
humanController.setShouldAutoYield(key, !autoYield);
|
||||
if (!autoYield && MatchUtil.getGameView().peekStack() == item) {
|
||||
//auto-pass priority if ability is on top of stack
|
||||
CPrompt.SINGLETON_INSTANCE.passPriority();
|
||||
}
|
||||
@@ -273,14 +246,14 @@ public enum VStack implements IVDoc<CStack> {
|
||||
jmiAlwaysYes.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
if (game.shouldAlwaysAcceptTrigger(triggerID)) {
|
||||
game.setShouldAlwaysAskTrigger(triggerID);
|
||||
if (humanController.shouldAlwaysAcceptTrigger(triggerID)) {
|
||||
humanController.setShouldAlwaysAskTrigger(triggerID);
|
||||
}
|
||||
else {
|
||||
game.setShouldAlwaysAcceptTrigger(triggerID);
|
||||
if (game.peekStack() == item) {
|
||||
humanController.setShouldAlwaysAcceptTrigger(triggerID);
|
||||
if (MatchUtil.getGameView().peekStack() == item) {
|
||||
//auto-yes if ability is on top of stack
|
||||
game.confirm();
|
||||
humanController.confirm();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -291,14 +264,14 @@ public enum VStack implements IVDoc<CStack> {
|
||||
jmiAlwaysNo.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
if (game.shouldAlwaysDeclineTrigger(triggerID)) {
|
||||
game.setShouldAlwaysAskTrigger(triggerID);
|
||||
if (humanController.shouldAlwaysDeclineTrigger(triggerID)) {
|
||||
humanController.setShouldAlwaysAskTrigger(triggerID);
|
||||
}
|
||||
else {
|
||||
game.setShouldAlwaysDeclineTrigger(triggerID);
|
||||
if (game.peekStack() == item) {
|
||||
humanController.setShouldAlwaysDeclineTrigger(triggerID);
|
||||
if (MatchUtil.getGameView().peekStack() == item) {
|
||||
//auto-no if ability is on top of stack
|
||||
game.confirm();
|
||||
humanController.confirm();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -306,16 +279,16 @@ public enum VStack implements IVDoc<CStack> {
|
||||
add(jmiAlwaysNo);
|
||||
}
|
||||
|
||||
public void setStackInstance(final IGameView game, final StackItemView item, final PlayerView localPlayer) {
|
||||
this.game = game;
|
||||
this.item = item;
|
||||
public void setStackInstance(final PlayerControllerHuman humanController0, final StackItemView item0, final PlayerView localPlayer0) {
|
||||
humanController = humanController0;
|
||||
item = item0;
|
||||
triggerID = Integer.valueOf(item.getSourceTrigger());
|
||||
|
||||
jmiAutoYield.setSelected(game.shouldAutoYield(item.getKey()));
|
||||
jmiAutoYield.setSelected(humanController.shouldAutoYield(item.getKey()));
|
||||
|
||||
if (item.isOptionalTrigger() && item.getActivatingPlayer().equals(localPlayer)) {
|
||||
jmiAlwaysYes.setSelected(game.shouldAlwaysAcceptTrigger(triggerID));
|
||||
jmiAlwaysNo.setSelected(game.shouldAlwaysDeclineTrigger(triggerID));
|
||||
if (item.isOptionalTrigger() && item.getActivatingPlayer().equals(localPlayer0)) {
|
||||
jmiAlwaysYes.setSelected(humanController.shouldAlwaysAcceptTrigger(triggerID));
|
||||
jmiAlwaysNo.setSelected(humanController.shouldAlwaysDeclineTrigger(triggerID));
|
||||
jmiAlwaysYes.setVisible(true);
|
||||
jmiAlwaysNo.setVisible(true);
|
||||
}
|
||||
|
||||
@@ -23,11 +23,11 @@ import java.awt.image.BufferedImage;
|
||||
import java.awt.image.ColorModel;
|
||||
|
||||
import forge.ImageCache;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.model.FModel;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.toolbox.CardFaceSymbols;
|
||||
import forge.toolbox.FSkin.SkinIcon;
|
||||
import forge.view.CardView.CardStateView;
|
||||
|
||||
/**
|
||||
* Common image-related routines specific to Forge images.
|
||||
|
||||
@@ -26,11 +26,11 @@ import javax.swing.JPanel;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.gui.CardDetailPanel;
|
||||
import forge.gui.CardPicturePanel;
|
||||
import forge.item.PaperCard;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.view.ViewUtil;
|
||||
|
||||
/**
|
||||
* A simple JPanel that shows three columns: card list, pic, and description..
|
||||
@@ -40,7 +40,6 @@ import forge.view.ViewUtil;
|
||||
*/
|
||||
@SuppressWarnings("serial")
|
||||
public class CardViewer extends JPanel {
|
||||
|
||||
// Data and number of choices for the list
|
||||
private final List<PaperCard> list;
|
||||
|
||||
@@ -49,12 +48,6 @@ public class CardViewer extends JPanel {
|
||||
private final CardDetailPanel detail;
|
||||
private final CardPicturePanel picture;
|
||||
|
||||
/**
|
||||
* Instantiates a new card viewer.
|
||||
*
|
||||
* @param list
|
||||
* the list
|
||||
*/
|
||||
public CardViewer(final List<PaperCard> list) {
|
||||
this.list = Collections.unmodifiableList(list);
|
||||
this.jList = new JList<PaperCard>(new ChooserListModel());
|
||||
@@ -72,7 +65,6 @@ public class CardViewer extends JPanel {
|
||||
}
|
||||
|
||||
private class ChooserListModel extends AbstractListModel<PaperCard> {
|
||||
|
||||
private static final long serialVersionUID = 3871965346333840556L;
|
||||
|
||||
@Override
|
||||
@@ -93,11 +85,9 @@ public class CardViewer extends JPanel {
|
||||
// (String) jList.getSelectedValue();
|
||||
if ((row >= 0) && (row < CardViewer.this.list.size())) {
|
||||
final PaperCard cp = CardViewer.this.list.get(row);
|
||||
CardViewer.this.detail.setCard(ViewUtil.getCardForUi(cp));
|
||||
CardViewer.this.detail.setCard(CardView.getCardForUi(cp));
|
||||
CardViewer.this.picture.setCard(cp);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,6 +32,8 @@ import javax.swing.Timer;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.toolbox.FOverlay;
|
||||
import forge.toolbox.FSkin;
|
||||
@@ -39,8 +41,6 @@ import forge.toolbox.FSkin.SkinnedLabel;
|
||||
import forge.toolbox.imaging.FImagePanel;
|
||||
import forge.toolbox.imaging.FImagePanel.AutoSizeImageMode;
|
||||
import forge.toolbox.imaging.FImageUtil;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
|
||||
/**
|
||||
* Displays card image at its original size and correct orientation.
|
||||
@@ -201,7 +201,7 @@ public enum CardZoomer {
|
||||
* Displays a graphical indicator that shows whether the current card can be flipped or transformed.
|
||||
*/
|
||||
private void setFlipIndicator() {
|
||||
if (thisCard.hasAltState()) {
|
||||
if (thisCard.getAlternate() != null) {
|
||||
imagePanel.setLayout(new MigLayout("insets 0, w 100%!, h 100%!"));
|
||||
imagePanel.add(lblFlipcard, "pos (100% - 100px) 0");
|
||||
}
|
||||
@@ -276,7 +276,7 @@ public enum CardZoomer {
|
||||
* Toggles between primary and alternate image associated with card if applicable.
|
||||
*/
|
||||
private void toggleCardImage() {
|
||||
if (thisCard.hasAltState()) {
|
||||
if (thisCard.getAlternate() != null) {
|
||||
toggleFlipCard();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,12 +18,12 @@ import com.google.common.base.Function;
|
||||
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.card.MagicColor;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.gui.ForgeAction;
|
||||
import forge.screens.match.controllers.CPlayers;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.view.PlayerView;
|
||||
|
||||
public class PlayerDetailsPanel extends JPanel {
|
||||
private static final long serialVersionUID = 8444559244193214459L;
|
||||
@@ -119,14 +119,14 @@ public class PlayerDetailsPanel extends JPanel {
|
||||
* @param p0   {@link forge.game.player.Player}
|
||||
*/
|
||||
public void updateZones() {
|
||||
this.getLblHand().setText("" + player.getnHandCards());
|
||||
this.getLblHand().setText("" + player.getHandSize());
|
||||
final String handMaxToolTip = player.hasUnlimitedHandSize()
|
||||
? "no maximum hand size" : String.valueOf(player.getMaxHandSize());
|
||||
this.getLblHand().setToolTipText("Cards in hand (max: " + handMaxToolTip + ")");
|
||||
this.getLblGraveyard().setText("" + player.getGraveCards().size());
|
||||
this.getLblLibrary().setText("" + player.getnLibraryCards());
|
||||
this.getLblFlashback().setText("" + player.getFlashbackCards().size());
|
||||
this.getLblExile().setText("" + player.getExileCards().size());
|
||||
this.getLblGraveyard().setText("" + player.getGraveyardSize());
|
||||
this.getLblLibrary().setText("" + player.getLibrarySize());
|
||||
this.getLblFlashback().setText("" + player.getFlashbackSize());
|
||||
this.getLblExile().setText("" + player.getExileSize());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -37,6 +37,8 @@ import javax.swing.SwingUtilities;
|
||||
import forge.ImageCache;
|
||||
import forge.card.CardEdition;
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.gui.CardContainer;
|
||||
import forge.match.MatchUtil;
|
||||
import forge.model.FModel;
|
||||
@@ -44,8 +46,6 @@ import forge.properties.ForgePreferences.FPref;
|
||||
import forge.toolbox.CardFaceSymbols;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.toolbox.IDisposable;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
import forge.view.arcane.util.OutlinedLabel;
|
||||
|
||||
/**
|
||||
@@ -117,21 +117,21 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* a {@link forge.game.card.Card} object.
|
||||
*/
|
||||
public CardPanel(final CardView card0) {
|
||||
this.setBackground(Color.black);
|
||||
this.setOpaque(false);
|
||||
setBackground(Color.black);
|
||||
setOpaque(false);
|
||||
|
||||
createCardNameOverlay();
|
||||
createPTOverlay();
|
||||
createCardIdOverlay();
|
||||
createScaleImagePanel();
|
||||
|
||||
this.setCard(card0);
|
||||
setCard(card0);
|
||||
}
|
||||
|
||||
private void createScaleImagePanel() {
|
||||
this.imagePanel = new ScaledImagePanel();
|
||||
this.add(this.imagePanel);
|
||||
this.addComponentListener(new ComponentAdapter() {
|
||||
imagePanel = new ScaledImagePanel();
|
||||
add(imagePanel);
|
||||
addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentShown(final ComponentEvent e) {
|
||||
CardPanel.this.setCard(CardPanel.this.getCard());
|
||||
@@ -144,224 +144,157 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
}
|
||||
|
||||
private void createCardNameOverlay() {
|
||||
this.titleText = new OutlinedLabel();
|
||||
this.titleText.setFont(this.getFont().deriveFont(Font.BOLD, 13f));
|
||||
this.titleText.setForeground(Color.white);
|
||||
this.titleText.setGlow(Color.black);
|
||||
this.titleText.setWrap(true);
|
||||
this.add(this.titleText);
|
||||
titleText = new OutlinedLabel();
|
||||
titleText.setFont(getFont().deriveFont(Font.BOLD, 13f));
|
||||
titleText.setForeground(Color.white);
|
||||
titleText.setGlow(Color.black);
|
||||
titleText.setWrap(true);
|
||||
add(titleText);
|
||||
}
|
||||
|
||||
private void createPTOverlay() {
|
||||
// Power/Toughness
|
||||
this.ptText = new OutlinedLabel();
|
||||
this.ptText.setFont(this.getFont().deriveFont(Font.BOLD, 13f));
|
||||
this.ptText.setForeground(Color.white);
|
||||
this.ptText.setGlow(Color.black);
|
||||
this.add(this.ptText);
|
||||
ptText = new OutlinedLabel();
|
||||
ptText.setFont(getFont().deriveFont(Font.BOLD, 13f));
|
||||
ptText.setForeground(Color.white);
|
||||
ptText.setGlow(Color.black);
|
||||
add(ptText);
|
||||
|
||||
// Damage
|
||||
this.damageText = new OutlinedLabel();
|
||||
this.damageText.setFont(this.getFont().deriveFont(Font.BOLD, 15f));
|
||||
this.damageText.setForeground(new Color(160,0,0));
|
||||
this.damageText.setGlow(Color.white);
|
||||
this.add(this.damageText);
|
||||
damageText = new OutlinedLabel();
|
||||
damageText.setFont(getFont().deriveFont(Font.BOLD, 15f));
|
||||
damageText.setForeground(new Color(160,0,0));
|
||||
damageText.setGlow(Color.white);
|
||||
add(damageText);
|
||||
}
|
||||
|
||||
private void createCardIdOverlay() {
|
||||
this.cardIdText = new OutlinedLabel();
|
||||
this.cardIdText.setFont(this.getFont().deriveFont(Font.BOLD, 11f));
|
||||
this.cardIdText.setForeground(Color.LIGHT_GRAY);
|
||||
this.cardIdText.setGlow(Color.black);
|
||||
this.add(this.cardIdText);
|
||||
cardIdText = new OutlinedLabel();
|
||||
cardIdText.setFont(getFont().deriveFont(Font.BOLD, 11f));
|
||||
cardIdText.setForeground(Color.LIGHT_GRAY);
|
||||
cardIdText.setGlow(Color.black);
|
||||
add(cardIdText);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setImage.
|
||||
* </p>
|
||||
*
|
||||
* @param srcImage
|
||||
* a {@link java.awt.Image} object.
|
||||
* @param srcImageBlurred
|
||||
* a {@link java.awt.Image} object.
|
||||
* @param srcImageBlurred
|
||||
* a {@link java.awt.Image} object.
|
||||
*/
|
||||
private void setImage(final BufferedImage srcImage) {
|
||||
synchronized (this.imagePanel) {
|
||||
this.imagePanel.setImage(srcImage);
|
||||
this.repaint();
|
||||
for (final CardPanel cardPanel : this.imageLoadListeners) {
|
||||
synchronized (imagePanel) {
|
||||
imagePanel.setImage(srcImage);
|
||||
repaint();
|
||||
for (final CardPanel cardPanel : imageLoadListeners) {
|
||||
cardPanel.setImage(srcImage);
|
||||
cardPanel.repaint();
|
||||
}
|
||||
this.imageLoadListeners.clear();
|
||||
imageLoadListeners.clear();
|
||||
}
|
||||
this.doLayout();
|
||||
doLayout();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setImage.
|
||||
* </p>
|
||||
*
|
||||
* @param panel
|
||||
* a {@link forge.view.arcane.CardPanel} object.
|
||||
*/
|
||||
public final void setImage(final CardPanel panel) {
|
||||
if (panel == this) {
|
||||
throw new IllegalArgumentException("Can't pass 'this' as argument to CardPanel#setImage");
|
||||
}
|
||||
synchronized (panel.imagePanel) {
|
||||
if (panel.imagePanel.hasImage()) {
|
||||
this.setImage(panel.imagePanel.getSrcImage());
|
||||
setImage(panel.imagePanel.getSrcImage());
|
||||
} else {
|
||||
panel.imageLoadListeners.add(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Setter for the field <code>displayEnabled</code>.
|
||||
* </p>
|
||||
*
|
||||
* @param displayEnabled
|
||||
* a boolean.
|
||||
*/
|
||||
public final void setDisplayEnabled(final boolean displayEnabled) {
|
||||
this.displayEnabled = displayEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isDisplayEnabled.
|
||||
* </p>
|
||||
*
|
||||
* @return a boolean.
|
||||
*/
|
||||
public final boolean isDisplayEnabled() {
|
||||
return this.displayEnabled;
|
||||
return displayEnabled;
|
||||
}
|
||||
public final void setDisplayEnabled(final boolean displayEnabled0) {
|
||||
displayEnabled = displayEnabled0;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setAnimationPanel.
|
||||
* </p>
|
||||
*
|
||||
* @param isAnimationPanel
|
||||
* a boolean.
|
||||
*/
|
||||
public final void setAnimationPanel(final boolean isAnimationPanel) {
|
||||
this.isAnimationPanel = isAnimationPanel;
|
||||
public final void setAnimationPanel(final boolean isAnimationPanel0) {
|
||||
isAnimationPanel = isAnimationPanel0;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setSelected.
|
||||
* </p>
|
||||
*
|
||||
* @param isSelected
|
||||
* a boolean.
|
||||
*/
|
||||
public final void setSelected(final boolean isSelected) {
|
||||
this.isSelected = isSelected;
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* isSelected.
|
||||
* </p>
|
||||
*
|
||||
* @return a boolean.
|
||||
*/
|
||||
public final boolean isSelected() {
|
||||
return this.isSelected;
|
||||
return isSelected;
|
||||
}
|
||||
public final void setSelected(final boolean isSelected0) {
|
||||
isSelected = isSelected0;
|
||||
repaint();
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
|
||||
@Override
|
||||
public final void paint(final Graphics g) {
|
||||
if (!this.displayEnabled) {
|
||||
if (!displayEnabled) {
|
||||
return;
|
||||
}
|
||||
if (!this.isValid()) {
|
||||
if (!isValid()) {
|
||||
super.validate();
|
||||
}
|
||||
Graphics2D g2d = (Graphics2D) g;
|
||||
if (this.getTappedAngle() > 0) {
|
||||
if (getTappedAngle() > 0) {
|
||||
g2d = (Graphics2D) g2d.create();
|
||||
final float edgeOffset = this.cardWidth / 2f;
|
||||
g2d.rotate(this.getTappedAngle(), this.cardXOffset + edgeOffset, (this.cardYOffset + this.cardHeight)
|
||||
final float edgeOffset = cardWidth / 2f;
|
||||
g2d.rotate(getTappedAngle(), cardXOffset + edgeOffset, (cardYOffset + cardHeight)
|
||||
- edgeOffset);
|
||||
}
|
||||
super.paint(g2d);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
protected final void paintComponent(final Graphics g) {
|
||||
final Graphics2D g2d = (Graphics2D) g;
|
||||
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
final int cornerSize = Math.max(4, Math.round(this.cardWidth * CardPanel.ROUNDED_CORNER_SIZE));
|
||||
final int offset = this.isTapped() ? 1 : 0;
|
||||
final int cornerSize = Math.max(4, Math.round(cardWidth * CardPanel.ROUNDED_CORNER_SIZE));
|
||||
final int offset = isTapped() ? 1 : 0;
|
||||
|
||||
// Magenta outline for when card was chosen to pay
|
||||
if (MatchUtil.isUsedToPay(this.getCard())) {
|
||||
if (MatchUtil.isUsedToPay(getCard())) {
|
||||
g2d.setColor(Color.magenta);
|
||||
final int n2 = Math.max(1, Math.round(2 * this.cardWidth * CardPanel.SELECTED_BORDER_SIZE));
|
||||
g2d.fillRoundRect(this.cardXOffset - n2, (this.cardYOffset - n2) + offset, this.cardWidth + (n2 * 2), this.cardHeight + (n2 * 2), cornerSize + n2, cornerSize + n2);
|
||||
final int n2 = Math.max(1, Math.round(2 * cardWidth * CardPanel.SELECTED_BORDER_SIZE));
|
||||
g2d.fillRoundRect(cardXOffset - n2, (cardYOffset - n2) + offset, cardWidth + (n2 * 2), cardHeight + (n2 * 2), cornerSize + n2, cornerSize + n2);
|
||||
}
|
||||
|
||||
// Green outline for hover
|
||||
if (this.isSelected) {
|
||||
if (isSelected) {
|
||||
g2d.setColor(Color.green);
|
||||
final int n = Math.max(1, Math.round(this.cardWidth * CardPanel.SELECTED_BORDER_SIZE));
|
||||
g2d.fillRoundRect(this.cardXOffset - n, (this.cardYOffset - n) + offset, this.cardWidth + (n * 2), this.cardHeight + (n * 2), cornerSize + n , cornerSize + n);
|
||||
final int n = Math.max(1, Math.round(cardWidth * CardPanel.SELECTED_BORDER_SIZE));
|
||||
g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n);
|
||||
}
|
||||
|
||||
// Black fill - (will become outline for white bordered cards)
|
||||
final int n = 0;
|
||||
g2d.setColor(Color.black);
|
||||
g2d.fillRoundRect(this.cardXOffset - n, (this.cardYOffset - n) + offset, this.cardWidth + (n * 2), this.cardHeight + (n * 2), cornerSize + n , cornerSize + n);
|
||||
g2d.fillRoundRect(cardXOffset - n, (cardYOffset - n) + offset, cardWidth + (n * 2), cardHeight + (n * 2), cornerSize + n , cornerSize + n);
|
||||
|
||||
// White border if card is known to have it.
|
||||
if (this.getCard() != null) {
|
||||
CardEdition ed = FModel.getMagicDb().getEditions().get(this.getCard().getSetCode());
|
||||
if (ed != null && ed.isWhiteBorder() && this.getCard().getOriginal().getFoilIndex() == 0) {
|
||||
if (getCard() != null) {
|
||||
CardEdition ed = FModel.getMagicDb().getEditions().get(getCard().getSetCode());
|
||||
if (ed != null && ed.isWhiteBorder() && getCard().getOriginal().getFoilIndex() == 0) {
|
||||
g2d.setColor(Color.white);
|
||||
int ins = 1;
|
||||
g2d.fillRoundRect(this.cardXOffset + ins, this.cardYOffset + ins, this.cardWidth - ins*2, this.cardHeight - ins*2, cornerSize-ins, cornerSize-ins);
|
||||
g2d.fillRoundRect(cardXOffset + ins, cardYOffset + ins, cardWidth - ins*2, cardHeight - ins*2, cornerSize-ins, cornerSize-ins);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @param g
|
||||
* @param manaCost
|
||||
*/
|
||||
private void drawManaCost(final Graphics g, ManaCost cost, int deltaY) {
|
||||
int width = CardFaceSymbols.getWidth(cost);
|
||||
int height = CardFaceSymbols.getHeight();
|
||||
CardFaceSymbols.draw(g, cost, (this.cardXOffset + (this.cardWidth / 2)) - (width / 2), deltaY + this.cardYOffset + (this.cardHeight / 2) - height/2);
|
||||
CardFaceSymbols.draw(g, cost, (cardXOffset + (cardWidth / 2)) - (width / 2), deltaY + cardYOffset + (cardHeight / 2) - height/2);
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
protected final void paintChildren(final Graphics g) {
|
||||
super.paintChildren(g);
|
||||
|
||||
if (this.isAnimationPanel || this.card == null) {
|
||||
if (isAnimationPanel || card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
displayIconOverlay(g);
|
||||
drawFoilEffect(g, card, this.cardXOffset, this.cardYOffset,
|
||||
this.cardWidth, this.cardHeight, Math.round(this.cardWidth * BLACK_BORDER_SIZE));
|
||||
drawFoilEffect(g, card, cardXOffset, cardYOffset,
|
||||
cardWidth, cardHeight, Math.round(cardWidth * BLACK_BORDER_SIZE));
|
||||
}
|
||||
|
||||
public static void drawFoilEffect(final Graphics g, final CardView card2, final int x, final int y, final int width, final int height, final int borderSize) {
|
||||
@@ -376,15 +309,15 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
|
||||
@Override
|
||||
public final void doLayout() {
|
||||
final int borderSize = Math.round(this.cardWidth * CardPanel.BLACK_BORDER_SIZE);
|
||||
final int borderSize = Math.round(cardWidth * CardPanel.BLACK_BORDER_SIZE);
|
||||
|
||||
final Point imgPos = new Point(this.cardXOffset + borderSize, this.cardYOffset + borderSize);
|
||||
final Dimension imgSize = new Dimension(this.cardWidth - (borderSize * 2), this.cardHeight - (borderSize * 2));
|
||||
final Point imgPos = new Point(cardXOffset + borderSize, cardYOffset + borderSize);
|
||||
final Dimension imgSize = new Dimension(cardWidth - (borderSize * 2), cardHeight - (borderSize * 2));
|
||||
|
||||
this.imagePanel.setLocation(imgPos);
|
||||
this.imagePanel.setSize(imgSize);
|
||||
imagePanel.setLocation(imgPos);
|
||||
imagePanel.setSize(imgSize);
|
||||
|
||||
boolean showText = !this.imagePanel.hasImage() || !this.isAnimationPanel;
|
||||
boolean showText = !imagePanel.hasImage() || !isAnimationPanel;
|
||||
|
||||
displayCardNameOverlay(showText && showCardNameOverlay(), imgSize, imgPos);
|
||||
displayPTOverlay(showText && showCardPowerOverlay(), imgSize, imgPos);
|
||||
@@ -393,33 +326,33 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
|
||||
private void displayCardIdOverlay(boolean isVisible, Dimension imgSize, Point imgPos) {
|
||||
if (isVisible) {
|
||||
final Dimension idSize = this.cardIdText.getPreferredSize();
|
||||
this.cardIdText.setSize(idSize.width, idSize.height);
|
||||
final Dimension idSize = cardIdText.getPreferredSize();
|
||||
cardIdText.setSize(idSize.width, idSize.height);
|
||||
final int idX = Math.round(imgSize.width * (24f / 480));
|
||||
final int idY = Math.round(imgSize.height * (650f / 680)) - 8;
|
||||
this.cardIdText.setLocation(imgPos.x + idX, imgPos.y + idY);
|
||||
cardIdText.setLocation(imgPos.x + idX, imgPos.y + idY);
|
||||
}
|
||||
this.cardIdText.setVisible(isVisible);
|
||||
cardIdText.setVisible(isVisible);
|
||||
}
|
||||
|
||||
private void displayPTOverlay(boolean isVisible, Dimension imgSize, Point imgPos) {
|
||||
if (isVisible) {
|
||||
final int rightLine = Math.round(imgSize.width * (412f / 480)) + 3;
|
||||
// Power
|
||||
final Dimension ptSize = this.ptText.getPreferredSize();
|
||||
this.ptText.setSize(ptSize.width, ptSize.height);
|
||||
final Dimension ptSize = ptText.getPreferredSize();
|
||||
ptText.setSize(ptSize.width, ptSize.height);
|
||||
final int ptX = rightLine - ptSize.width/2;
|
||||
final int ptY = Math.round(imgSize.height * (650f / 680)) - 10;
|
||||
this.ptText.setLocation(imgPos.x + ptX, imgPos.y + ptY);
|
||||
ptText.setLocation(imgPos.x + ptX, imgPos.y + ptY);
|
||||
// Toughness
|
||||
final Dimension dmgSize = this.damageText.getPreferredSize();
|
||||
this.damageText.setSize(dmgSize.width, dmgSize.height);
|
||||
final Dimension dmgSize = damageText.getPreferredSize();
|
||||
damageText.setSize(dmgSize.width, dmgSize.height);
|
||||
final int dmgX = rightLine - dmgSize.width / 2;
|
||||
final int dmgY = ptY - 16;
|
||||
this.damageText.setLocation(imgPos.x + dmgX, imgPos.y + dmgY);
|
||||
damageText.setLocation(imgPos.x + dmgX, imgPos.y + dmgY);
|
||||
}
|
||||
this.ptText.setVisible(isVisible);
|
||||
this.damageText.setVisible(isVisible);
|
||||
ptText.setVisible(isVisible);
|
||||
damageText.setVisible(isVisible);
|
||||
}
|
||||
|
||||
private void displayCardNameOverlay(boolean isVisible, Dimension imgSize, Point imgPos) {
|
||||
@@ -427,13 +360,13 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
final int titleX = Math.round(imgSize.width * (24f / 480));
|
||||
final int titleY = Math.round(imgSize.height * (54f / 640)) - 15;
|
||||
final int titleH = Math.round(imgSize.height * (360f / 640));
|
||||
this.titleText.setBounds(imgPos.x + titleX, imgPos.y + titleY + 2, imgSize.width - 2 * titleX, titleH - titleY);
|
||||
titleText.setBounds(imgPos.x + titleX, imgPos.y + titleY + 2, imgSize.width - 2 * titleX, titleH - titleY);
|
||||
}
|
||||
this.titleText.setVisible(isVisible);
|
||||
titleText.setVisible(isVisible);
|
||||
}
|
||||
|
||||
private void displayIconOverlay(final Graphics g) {
|
||||
if (showCardManaCostOverlay() && this.cardWidth < 200) {
|
||||
if (showCardManaCostOverlay() && cardWidth < 200) {
|
||||
final boolean showSplitMana = card.isSplitCard();
|
||||
if (!showSplitMana) {
|
||||
drawManaCost(g, card.getOriginal().getManaCost(), 0);
|
||||
@@ -444,26 +377,28 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
}
|
||||
|
||||
int number = 0;
|
||||
for (final Integer i : card.getCounters().values()) {
|
||||
number += i.intValue();
|
||||
if (card.getCounters() != null) {
|
||||
for (final Integer i : card.getCounters().values()) {
|
||||
number += i.intValue();
|
||||
}
|
||||
}
|
||||
|
||||
final int counters = number;
|
||||
final int yCounters = (this.cardYOffset + this.cardHeight) - (this.cardHeight / 3) - 40;
|
||||
final int yCounters = (cardYOffset + cardHeight) - (cardHeight / 3) - 40;
|
||||
|
||||
if (counters == 1) {
|
||||
CardFaceSymbols.drawSymbol("counters1", g, this.cardXOffset - 15, yCounters);
|
||||
CardFaceSymbols.drawSymbol("counters1", g, cardXOffset - 15, yCounters);
|
||||
} else if (counters == 2) {
|
||||
CardFaceSymbols.drawSymbol("counters2", g, this.cardXOffset - 15, yCounters);
|
||||
CardFaceSymbols.drawSymbol("counters2", g, cardXOffset - 15, yCounters);
|
||||
} else if (counters == 3) {
|
||||
CardFaceSymbols.drawSymbol("counters3", g, this.cardXOffset - 15, yCounters);
|
||||
CardFaceSymbols.drawSymbol("counters3", g, cardXOffset - 15, yCounters);
|
||||
} else if (counters > 3) {
|
||||
CardFaceSymbols.drawSymbol("countersMulti", g, this.cardXOffset - 15, yCounters);
|
||||
CardFaceSymbols.drawSymbol("countersMulti", g, cardXOffset - 15, yCounters);
|
||||
}
|
||||
|
||||
final int combatXSymbols = (this.cardXOffset + (this.cardWidth / 4)) - 16;
|
||||
final int stateXSymbols = (this.cardXOffset + (this.cardWidth / 2)) - 16;
|
||||
final int ySymbols = (this.cardYOffset + this.cardHeight) - (this.cardHeight / 8) - 16;
|
||||
final int combatXSymbols = (cardXOffset + (cardWidth / 4)) - 16;
|
||||
final int stateXSymbols = (cardXOffset + (cardWidth / 2)) - 16;
|
||||
final int ySymbols = (cardYOffset + cardHeight) - (cardHeight / 8) - 16;
|
||||
|
||||
if (card.isAttacking()) {
|
||||
CardFaceSymbols.drawSymbol("attack", g, combatXSymbols, ySymbols);
|
||||
@@ -481,131 +416,70 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
}
|
||||
|
||||
if (MatchUtil.isUsedToPay(card)) {
|
||||
CardFaceSymbols.drawSymbol("sacrifice", g, (this.cardXOffset + (this.cardWidth / 2)) - 20,
|
||||
(this.cardYOffset + (this.cardHeight / 2)) - 20);
|
||||
CardFaceSymbols.drawSymbol("sacrifice", g, (cardXOffset + (cardWidth / 2)) - 20,
|
||||
(cardYOffset + (cardHeight / 2)) - 20);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final String toString() {
|
||||
return this.getCard().toString();
|
||||
return getCard().toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* setCardBounds.
|
||||
* </p>
|
||||
*
|
||||
* @param x
|
||||
* a int.
|
||||
* @param y
|
||||
* a int.
|
||||
* @param width
|
||||
* a int.
|
||||
* @param height
|
||||
* a int.
|
||||
*/
|
||||
public final void setCardBounds(final int x, final int y, int width, int height) {
|
||||
this.cardWidth = width;
|
||||
this.cardHeight = height;
|
||||
cardWidth = width;
|
||||
cardHeight = height;
|
||||
final int rotCenterX = Math.round(width / 2f);
|
||||
final int rotCenterY = height - rotCenterX;
|
||||
final int rotCenterToTopCorner = Math.round(width * CardPanel.ROT_CENTER_TO_TOP_CORNER);
|
||||
final int rotCenterToBottomCorner = Math.round(width * CardPanel.ROT_CENTER_TO_BOTTOM_CORNER);
|
||||
final int xOffset = rotCenterX - rotCenterToBottomCorner;
|
||||
final int yOffset = rotCenterY - rotCenterToTopCorner;
|
||||
this.cardXOffset = -xOffset;
|
||||
this.cardYOffset = -yOffset;
|
||||
cardXOffset = -xOffset;
|
||||
cardYOffset = -yOffset;
|
||||
width = -xOffset + rotCenterX + rotCenterToTopCorner;
|
||||
height = -yOffset + rotCenterY + rotCenterToBottomCorner;
|
||||
this.setBounds(x + xOffset, y + yOffset, width, height);
|
||||
setBounds(x + xOffset, y + yOffset, width, height);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* repaint.
|
||||
* </p>
|
||||
*/
|
||||
@Override
|
||||
public final void repaint() {
|
||||
final Rectangle b = this.getBounds();
|
||||
final Rectangle b = getBounds();
|
||||
final JRootPane rootPane = SwingUtilities.getRootPane(this);
|
||||
if (rootPane == null) {
|
||||
return;
|
||||
}
|
||||
final Point p = SwingUtilities.convertPoint(this.getParent(), b.x, b.y, rootPane);
|
||||
final Point p = SwingUtilities.convertPoint(getParent(), b.x, b.y, rootPane);
|
||||
rootPane.repaint(p.x, p.y, b.width, b.height);
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getCardX.
|
||||
* </p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public final int getCardX() {
|
||||
return this.getX() + this.cardXOffset;
|
||||
return getX() + cardXOffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getCardY.
|
||||
* </p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public final int getCardY() {
|
||||
return this.getY() + this.cardYOffset;
|
||||
return getY() + cardYOffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Getter for the field <code>cardWidth</code>.
|
||||
* </p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public final int getCardWidth() {
|
||||
return this.cardWidth;
|
||||
return cardWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Getter for the field <code>cardHeight</code>.
|
||||
* </p>
|
||||
*
|
||||
* @return a int.
|
||||
*/
|
||||
public final int getCardHeight() {
|
||||
return this.cardHeight;
|
||||
return cardHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getCardLocation.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link java.awt.Point} object.
|
||||
*/
|
||||
public final Point getCardLocation() {
|
||||
final Point p = this.getLocation();
|
||||
p.x += this.cardXOffset;
|
||||
p.y += this.cardYOffset;
|
||||
final Point p = getLocation();
|
||||
p.x += cardXOffset;
|
||||
p.y += cardYOffset;
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* getCardLocationOnScreen.
|
||||
* </p>
|
||||
*
|
||||
* @return a {@link java.awt.Point} object.
|
||||
*/
|
||||
public final Point getCardLocationOnScreen() {
|
||||
final Point p = this.getLocationOnScreen();
|
||||
p.x += this.cardXOffset;
|
||||
p.y += this.cardYOffset;
|
||||
final Point p = getLocationOnScreen();
|
||||
p.x += cardXOffset;
|
||||
p.y += cardYOffset;
|
||||
return p;
|
||||
}
|
||||
|
||||
@@ -615,13 +489,13 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
}
|
||||
|
||||
// Card name overlay
|
||||
this.titleText.setText(card.getOriginal().getName());
|
||||
titleText.setText(card.getOriginal().getName());
|
||||
|
||||
int damage = card.getDamage();
|
||||
this.damageText.setText(damage > 0 ? "\u00BB " + String.valueOf(damage) + " \u00AB" : "");
|
||||
damageText.setText(damage > 0 ? "\u00BB " + String.valueOf(damage) + " \u00AB" : "");
|
||||
|
||||
// Card Id overlay
|
||||
this.cardIdText.setText(Integer.toString(card.getId()));
|
||||
cardIdText.setText(Integer.toString(card.getId()));
|
||||
}
|
||||
|
||||
public final void updatePTOverlay() {
|
||||
@@ -637,46 +511,41 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
else if (state.isPlaneswalker()) {
|
||||
sPt = String.valueOf(state.getLoyalty());
|
||||
}
|
||||
this.ptText.setText(sPt);
|
||||
ptText.setText(sPt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the card.
|
||||
*
|
||||
* @return the card
|
||||
*/
|
||||
@Override
|
||||
public final CardView getCard() {
|
||||
return this.card;
|
||||
return card;
|
||||
}
|
||||
|
||||
/** {@inheritDoc} */
|
||||
@Override
|
||||
public final void setCard(final CardView cardView) {
|
||||
if ((this.getCard() != null) && this.getCard().equals(cardView) && this.isAnimationPanel
|
||||
&& this.imagePanel.hasImage()) {
|
||||
if ((getCard() != null) && getCard().equals(cardView) && isAnimationPanel
|
||||
&& imagePanel.hasImage()) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.card = cardView;
|
||||
card = cardView;
|
||||
|
||||
if (this.imagePanel == null) {
|
||||
if (imagePanel == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final BufferedImage image = cardView == null ? null : ImageCache.getImage(cardView, imagePanel.getWidth(), imagePanel.getHeight());
|
||||
this.updateText();
|
||||
this.updatePTOverlay();
|
||||
updateText();
|
||||
updatePTOverlay();
|
||||
|
||||
this.setImage(image);
|
||||
setImage(image);
|
||||
}
|
||||
|
||||
public void dispose() {
|
||||
this.attachedToPanel = null;
|
||||
this.attachedPanels = null;
|
||||
this.imagePanel.setImage(null);
|
||||
this.imagePanel = null;
|
||||
this.card = null;
|
||||
attachedToPanel = null;
|
||||
attachedPanels = null;
|
||||
imagePanel.setImage(null);
|
||||
imagePanel = null;
|
||||
card = null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -704,7 +573,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* @return the attachedToPanel
|
||||
*/
|
||||
public final CardPanel getAttachedToPanel() {
|
||||
return this.attachedToPanel;
|
||||
return attachedToPanel;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -714,7 +583,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* the attachedToPanel to set
|
||||
*/
|
||||
public final void setAttachedToPanel(final CardPanel attachedToPanel0) {
|
||||
this.attachedToPanel = attachedToPanel0;
|
||||
attachedToPanel = attachedToPanel0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -723,7 +592,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* @return the attachedPanels
|
||||
*/
|
||||
public final List<CardPanel> getAttachedPanels() {
|
||||
return this.attachedPanels;
|
||||
return attachedPanels;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -733,7 +602,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* the attachedPanels to set
|
||||
*/
|
||||
public final void setAttachedPanels(final List<CardPanel> attachedPanels0) {
|
||||
this.attachedPanels = attachedPanels0;
|
||||
attachedPanels = attachedPanels0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -742,7 +611,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* @return the tapped
|
||||
*/
|
||||
public final boolean isTapped() {
|
||||
return this.tapped;
|
||||
return tapped;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -752,7 +621,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* the tapped to set
|
||||
*/
|
||||
public final void setTapped(final boolean tapped0) {
|
||||
this.tapped = tapped0;
|
||||
tapped = tapped0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -761,7 +630,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* @return the tappedAngle
|
||||
*/
|
||||
public final double getTappedAngle() {
|
||||
return this.tappedAngle;
|
||||
return tappedAngle;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -771,7 +640,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
* the tappedAngle to set
|
||||
*/
|
||||
public final void setTappedAngle(final double tappedAngle0) {
|
||||
this.tappedAngle = tappedAngle0;
|
||||
tappedAngle = tappedAngle0;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -788,7 +657,7 @@ public class CardPanel extends SkinnedPanel implements CardContainer, IDisposabl
|
||||
}
|
||||
|
||||
private boolean isShowingOverlays() {
|
||||
return isPreferenceEnabled(FPref.UI_SHOW_CARD_OVERLAYS) && this.card != null;
|
||||
return isPreferenceEnabled(FPref.UI_SHOW_CARD_OVERLAYS) && card != null;
|
||||
}
|
||||
|
||||
private boolean showCardNameOverlay() {
|
||||
|
||||
@@ -30,11 +30,11 @@ import java.util.List;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.game.card.CardView;
|
||||
import forge.screens.match.CMatchUI;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.FSkin.SkinnedPanel;
|
||||
import forge.toolbox.special.CardZoomer;
|
||||
import forge.view.CardView;
|
||||
import forge.view.arcane.util.CardPanelMouseListener;
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,14 +28,14 @@ import java.util.List;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.CardView.CardStateView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.screens.match.CMatchUI;
|
||||
import forge.screens.match.controllers.CPrompt;
|
||||
import forge.toolbox.FScrollPane;
|
||||
import forge.toolbox.MouseTriggerEvent;
|
||||
import forge.view.CardView;
|
||||
import forge.view.CardView.CardStateView;
|
||||
import forge.view.PlayerView;
|
||||
import forge.view.arcane.util.Animation;
|
||||
import forge.view.arcane.util.CardPanelMouseListener;
|
||||
|
||||
@@ -124,7 +124,7 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
break;
|
||||
}
|
||||
if (!panel.getAttachedPanels().isEmpty()
|
||||
|| !panel.getCard().getCounters().equals(firstPanel.getCard().getCounters())
|
||||
|| !panel.getCard().hasSameCounters(firstPanel.getCard())
|
||||
|| firstPanel.getCard().isEnchanted() || (stack.size() == this.landStackMax)) {
|
||||
// If this land has attachments or the stack is full,
|
||||
// put it to the right.
|
||||
@@ -180,7 +180,7 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
final String firstText = firstState.getText();
|
||||
|
||||
if (!panel.getAttachedPanels().isEmpty()
|
||||
|| !card.getCounters().equals(firstPanel.getCard().getCounters())
|
||||
|| !card.hasSameCounters(firstPanel.getCard())
|
||||
|| (card.isSick() != firstCard.isSick())
|
||||
|| (state.getPower() != firstState.getPower())
|
||||
|| (state.getToughness() != firstState.getToughness())
|
||||
@@ -670,27 +670,33 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
}
|
||||
toPanel.getAttachedPanels().clear();
|
||||
|
||||
final Iterable<CardView> enchants = card.getEnchantedBy();
|
||||
for (final CardView e : enchants) {
|
||||
final CardPanel cardE = getCardPanel(e.getId());
|
||||
if (cardE != null) {
|
||||
toPanel.getAttachedPanels().add(cardE);
|
||||
if (card.isEnchanted()) {
|
||||
final Iterable<CardView> enchants = card.getEnchantedBy();
|
||||
for (final CardView e : enchants) {
|
||||
final CardPanel cardE = getCardPanel(e.getId());
|
||||
if (cardE != null) {
|
||||
toPanel.getAttachedPanels().add(cardE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Iterable<CardView> equips = card.getEquippedBy();
|
||||
for (final CardView e : equips) {
|
||||
final CardPanel cardE = getCardPanel(e.getId());
|
||||
if (cardE != null) {
|
||||
toPanel.getAttachedPanels().add(cardE);
|
||||
if (card.isEquipped()) {
|
||||
final Iterable<CardView> equips = card.getEquippedBy();
|
||||
for (final CardView e : equips) {
|
||||
final CardPanel cardE = getCardPanel(e.getId());
|
||||
if (cardE != null) {
|
||||
toPanel.getAttachedPanels().add(cardE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Iterable<CardView> fortifications = card.getFortifiedBy();
|
||||
for (final CardView f : fortifications) {
|
||||
final CardPanel cardE = getCardPanel(f.getId());
|
||||
if (cardE != null) {
|
||||
toPanel.getAttachedPanels().add(cardE);
|
||||
if (card.isFortified()) {
|
||||
final Iterable<CardView> fortifications = card.getFortifiedBy();
|
||||
for (final CardView f : fortifications) {
|
||||
final CardPanel cardE = getCardPanel(f.getId());
|
||||
if (cardE != null) {
|
||||
toPanel.getAttachedPanels().add(cardE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -773,7 +779,7 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
|
||||
final CardStateView thisState = thisCard.getOriginal();
|
||||
if (otherState.getName().equals(thisState.getName()) && s.size() < othersStackMax) {
|
||||
if (panel.getAttachedPanels().isEmpty()
|
||||
&& thisCard.getCounters().equals(otherCard.getCounters())
|
||||
&& thisCard.hasSameCounters(otherCard)
|
||||
&& (thisCard.isSick() == otherCard.isSick())
|
||||
&& (thisCard.isCloned() == otherCard.isCloned())) {
|
||||
s.add(panel);
|
||||
|
||||
Reference in New Issue
Block a user