merge getPermanentImage(MagicPermanent permanent) and getCardImage(MagicCardDefinition cdef) into getCardImage(IRenderableCard face)

master
melvinzhang 2016-10-06 14:12:38 +08:00
parent be37bad925
commit 60976579b8
5 changed files with 15 additions and 17 deletions

View File

@ -145,4 +145,8 @@ public interface IRenderableCard {
default boolean hasTextOverlay() { default boolean hasTextOverlay() {
return hasAbility(MagicAbility.LevelUp) || isLand(); return hasAbility(MagicAbility.LevelUp) || isLand();
} }
default long getRenderKey() {
return getCardDefinition().getDistinctName().hashCode();
}
} }

View File

@ -204,6 +204,10 @@ public class MagicPermanent extends MagicObjectImpl implements MagicSource, Magi
return stateId; return stateId;
} }
public long getRenderKey() {
return getStateId();
}
private long getCountersHash() { private long getCountersHash() {
final long[] keys = new long[counters.size() * 2]; final long[] keys = new long[counters.size() * 2];
int idx = 0; int idx = 0;

View File

@ -305,24 +305,12 @@ public final class MagicImages {
return ImageType.PROXY; return ImageType.PROXY;
} }
public static BufferedImage getCardImage(MagicCardDefinition cdef) { public static BufferedImage getCardImage(IRenderableCard face) {
final Long key = (long)cdef.getDistinctName().hashCode(); final Long key = face.getRenderKey();
if (cache.containsKey(key)) { if (cache.containsKey(key)) {
return cache.get(key); return cache.get(key);
} }
final BufferedImage image = createImage(cdef); final BufferedImage image = createImage(face);
if (image != MISSING_CARD) {
cache.put(key, image);
}
return image;
}
public static BufferedImage getPermanentImage(MagicPermanent permanent) {
final Long key = permanent.getStateId();
if (cache.containsKey(key)) {
return cache.get(key);
}
final BufferedImage image = createImage(permanent);
if (image != MISSING_CARD) { if (image != MISSING_CARD) {
cache.put(key, image); cache.put(key, image);
} }

View File

@ -322,7 +322,9 @@ public class AnnotatedCardPanel extends JPanel {
private BufferedImage getCardImage(final MagicObject magicObject) { private BufferedImage getCardImage(final MagicObject magicObject) {
if (magicObject instanceof MagicPermanent) { if (magicObject instanceof MagicPermanent) {
final MagicPermanent perm = (MagicPermanent)magicObject; final MagicPermanent perm = (MagicPermanent)magicObject;
return canRevealTrueFace(perm) && perm.getCardDefinition() != perm.getRealCardDefinition() ? getCardImage(perm.getRealCardDefinition()) : MagicImages.getPermanentImage(perm); return canRevealTrueFace(perm) && perm.getCardDefinition() != perm.getRealCardDefinition() ?
getCardImage(perm.getRealCardDefinition()) :
MagicImages.getCardImage(perm);
} else { } else {
return getCardImage(magicObject.getCardDefinition()); return getCardImage(magicObject.getCardDefinition());
} }

View File

@ -270,7 +270,7 @@ public class ImagePermanentViewer extends JPanel {
final int y2 = y1 + linkedRect.height - 1; final int y2 = y1 + linkedRect.height - 1;
final BufferedImage image = GraphicsUtils.scale( final BufferedImage image = GraphicsUtils.scale(
MagicImages.getPermanentImage(linkedInfo.permanent), MagicImages.getCardImage(linkedInfo.permanent),
linkedInfo.tapped ? linkedRect.height : linkedRect.width, linkedInfo.tapped ? linkedRect.height : linkedRect.width,
linkedInfo.tapped ? linkedRect.width : linkedRect.height linkedInfo.tapped ? linkedRect.width : linkedRect.height
); );