Refactor so mobile game can determine whether card can be flipped

This commit is contained in:
drdev
2014-05-04 05:01:47 +00:00
parent b869d5732f
commit cdf8dd84ee
4 changed files with 58 additions and 55 deletions

View File

@@ -499,4 +499,48 @@ public class CardDetailUtil {
}
return area.toString();
}
public static boolean isCardFlippable(Card card) {
return card.isDoubleFaced() || card.isFlipCard() || card.isFaceDown();
}
/**
* Card characteristic state machine.
* <p>
* Given a card and a state in terms of {@code CardCharacteristicName} this
* will determine whether there is a valid alternate {@code CardCharacteristicName}
* state for that card.
*
* @param card the {@code Card}
* @param currentState not necessarily {@code card.getCurState()}
* @return the alternate {@code CardCharacteristicName} state or default if not applicable
*/
public static CardCharacteristicName getAlternateState(final Card card, CardCharacteristicName currentState) {
// Default. Most cards will only ever have an "Original" state represented by a single image.
CardCharacteristicName alternateState = CardCharacteristicName.Original;
if (card.isDoubleFaced()) {
if (currentState == CardCharacteristicName.Original) {
alternateState = CardCharacteristicName.Transformed;
}
}
else if (card.isFlipCard()) {
if (currentState == CardCharacteristicName.Original) {
alternateState = CardCharacteristicName.Flipped;
}
}
else if (card.isFaceDown()) {
if (currentState == CardCharacteristicName.Original) {
alternateState = CardCharacteristicName.FaceDown;
}
else if (GuiBase.getInterface().mayShowCard(card)) {
alternateState = CardCharacteristicName.Original;
}
else {
alternateState = currentState;
}
}
return alternateState;
}
}