diff --git a/src/main/java/forge/card/cardfactory/CardFactory.java b/src/main/java/forge/card/cardfactory/CardFactory.java
index f695216cb85..2f280ccfe6a 100644
--- a/src/main/java/forge/card/cardfactory/CardFactory.java
+++ b/src/main/java/forge/card/cardfactory/CardFactory.java
@@ -234,7 +234,7 @@ public class CardFactory {
if (c.hasAlternateState()) {
if (c.isFlipCard()) {
c.setState(CardCharacteristicName.Flipped);
- c.setImageKey(originalPicture); // should assign a 180 degrees rotated picture here?
+ c.setImageKey(ImageCache.getImageKey(cp, true));
}
else if (c.isDoubleFaced() && cp instanceof CardPrinted) {
c.setState(CardCharacteristicName.Transformed);
diff --git a/src/main/java/forge/gui/match/controllers/CDetail.java b/src/main/java/forge/gui/match/controllers/CDetail.java
index e6df851a1fc..f34b628af02 100644
--- a/src/main/java/forge/gui/match/controllers/CDetail.java
+++ b/src/main/java/forge/gui/match/controllers/CDetail.java
@@ -29,13 +29,11 @@ import forge.item.InventoryItem;
import forge.item.InventoryItemFromSet;
/**
- *
* Controls the card detail area in the match UI.
*
*
(C at beginning of class name denotes a control class.)
*/
public enum CDetail implements ICDoc {
- /** */
SINGLETON_INSTANCE;
private VDetail view = VDetail.SINGLETON_INSTANCE;
@@ -46,7 +44,7 @@ public enum CDetail implements ICDoc {
* @param c Card object
*/
public void showCard(final Card c) {
- view.getLblFlipcard().setVisible(c != null && c.isDoubleFaced());
+ view.getLblFlipcard().setVisible(c != null && (c.isDoubleFaced() || c.isFlipCard()));
view.getPnlDetail().setCard(c);
view.getParentCell().repaintSelf();
}
@@ -63,17 +61,11 @@ public enum CDetail implements ICDoc {
}
}
- /* (non-Javadoc)
- * @see forge.gui.framework.ICDoc#getCommandOnSelect()
- */
@Override
public Command getCommandOnSelect() {
return null;
}
- /* (non-Javadoc)
- * @see forge.gui.framework.ICDoc#initialize()
- */
@Override
public void initialize() {
view.getPnlDetail().addMouseListener(new MouseAdapter() {
@@ -84,9 +76,6 @@ public enum CDetail implements ICDoc {
});
}
- /* (non-Javadoc)
- * @see forge.gui.framework.ICDoc#update()
- */
@Override
public void update() {
}
diff --git a/src/main/java/forge/gui/match/controllers/CPicture.java b/src/main/java/forge/gui/match/controllers/CPicture.java
index 95319353c04..8c3dd28b81f 100644
--- a/src/main/java/forge/gui/match/controllers/CPicture.java
+++ b/src/main/java/forge/gui/match/controllers/CPicture.java
@@ -33,11 +33,11 @@ import forge.item.InventoryItem;
*
(C at beginning of class name denotes a control class.)
*/
public enum CPicture implements ICDoc {
- /** */
SINGLETON_INSTANCE;
private Card currentCard = null;
private boolean flipped = false;
+ private boolean canFlip = false;
/**
* Shows card details and/or picture in sidebar cardview tabber.
@@ -46,15 +46,16 @@ public enum CPicture implements ICDoc {
* Card object
*/
public void showCard(final Card c) {
- boolean canFlip = c != null && c.isDoubleFaced();
+ canFlip = c != null && (c.isDoubleFaced() || c.isFlipCard());
this.currentCard = c;
- flipped = canFlip && c.getCurState() == CardCharacteristicName.Transformed;
+ flipped = canFlip && (c.getCurState() == CardCharacteristicName.Transformed ||
+ c.getCurState() == CardCharacteristicName.Flipped);
VPicture.SINGLETON_INSTANCE.getLblFlipcard().setVisible(canFlip);
VPicture.SINGLETON_INSTANCE.getPnlPicture().setCard(c);
}
public void showCard(final InventoryItem item) {
- if ( item instanceof IPaperCard ) {
+ if (item instanceof IPaperCard) {
showCard(((IPaperCard)item).getMatchingForgeCard());
return;
}
@@ -64,26 +65,15 @@ public enum CPicture implements ICDoc {
VPicture.SINGLETON_INSTANCE.getPnlPicture().setCard(item);
}
- /**
- * Gets the current card.
- *
- * @return Card
- */
public Card getCurrentCard() {
return this.currentCard;
}
- /* (non-Javadoc)
- * @see forge.gui.framework.ICDoc#getCommandOnSelect()
- */
@Override
public Command getCommandOnSelect() {
return null;
}
- /* (non-Javadoc)
- * @see forge.gui.framework.ICDoc#initialize()
- */
@Override
public void initialize() {
VPicture.SINGLETON_INSTANCE.getPnlPicture().addMouseListener(new MouseAdapter() {
@@ -94,26 +84,36 @@ public enum CPicture implements ICDoc {
});
}
- /* (non-Javadoc)
- * @see forge.gui.framework.ICDoc#update()
- */
@Override
public void update() {
}
- /** */
public void flipCard() {
- flipped = !flipped;
- if ( null == currentCard ) return;
+ if (!canFlip || null == currentCard) { return; }
- CardCharacteristicName newState = flipped && currentCard.isDoubleFaced() ? CardCharacteristicName.Transformed : CardCharacteristicName.Original;
+ flipped = !flipped;
+
+ final CardCharacteristicName newState;
+ if (flipped) {
+ if (currentCard.isDoubleFaced()) {
+ newState = CardCharacteristicName.Transformed;
+ } else if (currentCard.isFlipCard()) {
+ newState = CardCharacteristicName.Flipped;
+ } else {
+ throw new RuntimeException("unhandled flippable card");
+ }
+ } else {
+ newState = CardCharacteristicName.Original;
+ }
+
CardCharacteristicName oldState = currentCard.getCurState();
- if ( oldState != newState ) {
+ if (oldState != newState) {
currentCard.setState(newState);
}
+
CDetail.SINGLETON_INSTANCE.showCard(this.currentCard);
VPicture.SINGLETON_INSTANCE.getPnlPicture().setImage();
- if ( oldState != newState ) {
+ if (oldState != newState) {
currentCard.setState(oldState);
}
}