mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Use interface to simplify getting list items with associated card views to display card image
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -471,6 +471,7 @@ forge-game/src/main/java/forge/game/card/CardState.java -text
|
||||
forge-game/src/main/java/forge/game/card/CardUtil.java svneol=native#text/plain
|
||||
forge-game/src/main/java/forge/game/card/CardView.java -text
|
||||
forge-game/src/main/java/forge/game/card/CounterType.java svneol=native#text/plain
|
||||
forge-game/src/main/java/forge/game/card/IHasCardView.java -text
|
||||
forge-game/src/main/java/forge/game/card/package-info.java -text
|
||||
forge-game/src/main/java/forge/game/combat/AttackConstraints.java -text
|
||||
forge-game/src/main/java/forge/game/combat/AttackRequirement.java -text
|
||||
|
||||
@@ -7,6 +7,8 @@ import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardFactoryUtil;
|
||||
import forge.game.card.CardLists;
|
||||
import forge.game.card.CardUtil;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.IHasCardView;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.util.Expressions;
|
||||
@@ -20,7 +22,7 @@ import com.google.common.collect.Maps;
|
||||
* Base class for Triggers,ReplacementEffects and StaticAbilities.
|
||||
*
|
||||
*/
|
||||
public abstract class CardTraitBase extends GameObject {
|
||||
public abstract class CardTraitBase extends GameObject implements IHasCardView {
|
||||
|
||||
/** The host card. */
|
||||
protected Card hostCard;
|
||||
@@ -385,4 +387,9 @@ public abstract class CardTraitBase extends GameObject {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public CardView getCardView() {
|
||||
return CardView.get(hostCard);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package forge.game.card;
|
||||
|
||||
public interface IHasCardView {
|
||||
CardView getCardView();
|
||||
}
|
||||
@@ -18,6 +18,7 @@
|
||||
package forge.game.spellability;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.game.CardTraitBase;
|
||||
import forge.game.Game;
|
||||
|
||||
@@ -20,6 +20,8 @@ package forge.game.spellability;
|
||||
import forge.game.IIdentifiable;
|
||||
import forge.game.card.Card;
|
||||
import forge.game.card.CardCollection;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.IHasCardView;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.trigger.TriggerType;
|
||||
import forge.game.zone.ZoneType;
|
||||
@@ -39,7 +41,7 @@ import java.util.Set;
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
public class SpellAbilityStackInstance implements IIdentifiable {
|
||||
public class SpellAbilityStackInstance implements IIdentifiable, IHasCardView {
|
||||
private static int maxId = 0;
|
||||
private static int nextId() { return ++maxId; }
|
||||
|
||||
@@ -311,4 +313,9 @@ public class SpellAbilityStackInstance implements IIdentifiable {
|
||||
public StackItemView getView() {
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CardView getCardView() {
|
||||
return CardView.get(getSourceCard());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package forge.game.spellability;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.IHasCardView;
|
||||
import forge.trackable.TrackableCollection;
|
||||
import forge.trackable.TrackableObject;
|
||||
import forge.trackable.TrackableProperty;
|
||||
|
||||
public class SpellAbilityView extends TrackableObject {
|
||||
public class SpellAbilityView extends TrackableObject implements IHasCardView {
|
||||
private static final long serialVersionUID = 2514234930798754769L;
|
||||
|
||||
public static SpellAbilityView get(SpellAbility spab) {
|
||||
@@ -62,4 +63,9 @@ public class SpellAbilityView extends TrackableObject {
|
||||
void updatePromptIfOnlyPossibleAbility(SpellAbility sa) {
|
||||
set(TrackableProperty.PromptIfOnlyPossibleAbility, sa.promptIfOnlyPossibleAbility());
|
||||
}
|
||||
|
||||
@Override
|
||||
public CardView getCardView() {
|
||||
return getHostCard();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
package forge.game.spellability;
|
||||
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.IHasCardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.trackable.TrackableCollection;
|
||||
import forge.trackable.TrackableObject;
|
||||
import forge.trackable.TrackableProperty;
|
||||
import forge.util.FCollectionView;
|
||||
|
||||
public class StackItemView extends TrackableObject {
|
||||
public class StackItemView extends TrackableObject implements IHasCardView {
|
||||
private static final long serialVersionUID = 6733415646691356052L;
|
||||
|
||||
public static StackItemView get(SpellAbilityStackInstance si) {
|
||||
@@ -113,4 +114,9 @@ public class StackItemView extends TrackableObject {
|
||||
public String toString() {
|
||||
return getText();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CardView getCardView() {
|
||||
return getSourceCard();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,9 @@ import forge.card.CardZoom;
|
||||
import forge.card.CardRenderer.CardStackPosition;
|
||||
import forge.card.CardZoom.ActivateHandler;
|
||||
import forge.game.card.CardView;
|
||||
import forge.game.card.IHasCardView;
|
||||
import forge.game.player.PlayerView;
|
||||
import forge.game.spellability.SpellAbilityStackInstance;
|
||||
import forge.game.spellability.SpellAbilityView;
|
||||
import forge.game.spellability.StackItemView;
|
||||
import forge.item.PaperCard;
|
||||
import forge.screens.match.MatchController;
|
||||
@@ -63,11 +63,8 @@ public class FChoiceList<T> extends FList<T> implements ActivateHandler {
|
||||
else if (item instanceof CardView) {
|
||||
renderer = new CardItemRenderer();
|
||||
}
|
||||
else if (item instanceof SpellAbilityView) {
|
||||
renderer = new SpellAbilityItemRenderer();
|
||||
}
|
||||
else if (item instanceof SpellAbilityStackInstance) {
|
||||
renderer = new StackItemRenderer();
|
||||
else if (item instanceof IHasCardView) {
|
||||
renderer = new IHasCardViewItemRenderer();
|
||||
}
|
||||
else if (item instanceof PlayerView) {
|
||||
renderer = new PlayerItemRenderer();
|
||||
@@ -408,7 +405,7 @@ public class FChoiceList<T> extends FList<T> implements ActivateHandler {
|
||||
}
|
||||
}
|
||||
//special renderer for SpellAbilities
|
||||
protected class SpellAbilityItemRenderer extends ItemRenderer {
|
||||
protected class IHasCardViewItemRenderer extends ItemRenderer {
|
||||
private final TextRenderer textRenderer = new TextRenderer(true);
|
||||
|
||||
@Override
|
||||
@@ -424,7 +421,7 @@ public class FChoiceList<T> extends FList<T> implements ActivateHandler {
|
||||
@Override
|
||||
public boolean tap(Integer index, T value, float x, float y, int count) {
|
||||
if (x <= VStack.CARD_WIDTH + 2 * FList.PADDING) {
|
||||
CardZoom.show(((SpellAbilityView)value).getHostCard());
|
||||
CardZoom.show(((IHasCardView)value).getCardView());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -432,59 +429,18 @@ public class FChoiceList<T> extends FList<T> implements ActivateHandler {
|
||||
|
||||
@Override
|
||||
public boolean longPress(Integer index, T value, float x, float y) {
|
||||
CardZoom.show(((SpellAbilityView)value).getHostCard());
|
||||
CardZoom.show(((IHasCardView)value).getCardView());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawValue(Graphics g, T value, FSkinFont font, FSkinColor foreColor, boolean pressed, float x, float y, float w, float h) {
|
||||
SpellAbilityView spellAbility = (SpellAbilityView)value;
|
||||
CardRenderer.drawCardWithOverlays(g, spellAbility.getHostCard(), x, y, VStack.CARD_WIDTH, VStack.CARD_HEIGHT, CardStackPosition.Top);
|
||||
CardRenderer.drawCardWithOverlays(g, ((IHasCardView)value).getCardView(), x, y, VStack.CARD_WIDTH, VStack.CARD_HEIGHT, CardStackPosition.Top);
|
||||
|
||||
float dx = VStack.CARD_WIDTH + FList.PADDING;
|
||||
x += dx;
|
||||
w -= dx;
|
||||
textRenderer.drawText(g, spellAbility.toString(), font, foreColor, x, y, w, h, y, h, true, HAlignment.LEFT, true);
|
||||
}
|
||||
}
|
||||
//special renderer for StackItems
|
||||
protected class StackItemRenderer extends ItemRenderer {
|
||||
private final TextRenderer textRenderer = new TextRenderer(true);
|
||||
|
||||
@Override
|
||||
public FSkinFont getDefaultFont() {
|
||||
return FSkinFont.get(14);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getItemHeight() {
|
||||
return VStack.CARD_HEIGHT + 2 * FList.PADDING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean tap(Integer index, T value, float x, float y, int count) {
|
||||
if (x <= VStack.CARD_WIDTH + 2 * FList.PADDING) {
|
||||
CardZoom.show(((SpellAbilityStackInstance)value).getView().getSourceCard());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean longPress(Integer index, T value, float x, float y) {
|
||||
CardZoom.show(((SpellAbilityStackInstance)value).getView().getSourceCard());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawValue(Graphics g, T value, FSkinFont font, FSkinColor foreColor, boolean pressed, float x, float y, float w, float h) {
|
||||
StackItemView stackItem = ((SpellAbilityStackInstance)value).getView();
|
||||
CardRenderer.drawCardWithOverlays(g, stackItem.getSourceCard(), x, y, VStack.CARD_WIDTH, VStack.CARD_HEIGHT, CardStackPosition.Top);
|
||||
|
||||
float dx = VStack.CARD_WIDTH + FList.PADDING;
|
||||
x += dx;
|
||||
w -= dx;
|
||||
textRenderer.drawText(g, stackItem.toString(), font, foreColor, x, y, w, h, y, h, true, HAlignment.LEFT, true);
|
||||
textRenderer.drawText(g, value.toString(), font, foreColor, x, y, w, h, y, h, true, HAlignment.LEFT, true);
|
||||
}
|
||||
}
|
||||
protected class PlayerItemRenderer extends ItemRenderer {
|
||||
|
||||
Reference in New Issue
Block a user