diff --git a/forge-game/src/main/java/forge/game/card/CardView.java b/forge-game/src/main/java/forge/game/card/CardView.java index d753c8acdcf..195c98ea936 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -1082,6 +1082,7 @@ public class CardView extends GameEntityView { public String getProtectionKey() { return get(TrackableProperty.ProtectionKey); } public String getHexproofKey() { return get(TrackableProperty.HexproofKey); } public boolean hasDeathtouch() { return get(TrackableProperty.HasDeathtouch); } + public boolean hasDevoid() { return get(TrackableProperty.HasDevoid); } public boolean hasDefender() { return get(TrackableProperty.HasDefender); } public boolean hasDoubleStrike() { return get(TrackableProperty.HasDoubleStrike); } public boolean hasFirstStrike() { return get(TrackableProperty.HasFirstStrike); } @@ -1118,6 +1119,7 @@ public class CardView extends GameEntityView { void updateKeywords(Card c, CardState state) { c.updateKeywordsCache(state); set(TrackableProperty.HasDeathtouch, c.hasKeyword(Keyword.DEATHTOUCH, state)); + set(TrackableProperty.HasDevoid, c.hasKeyword(Keyword.DEVOID, state)); set(TrackableProperty.HasDefender, c.hasKeyword(Keyword.DEFENDER, state)); set(TrackableProperty.HasDoubleStrike, c.hasKeyword(Keyword.DOUBLE_STRIKE, state)); set(TrackableProperty.HasFirstStrike, c.hasKeyword(Keyword.FIRST_STRIKE, state)); diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index 99228d48b56..e8b8348f8a2 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -92,6 +92,7 @@ public enum TrackableProperty { KeywordKey(TrackableTypes.StringType), HasDeathtouch(TrackableTypes.BooleanType), + HasDevoid(TrackableTypes.BooleanType), HasDefender(TrackableTypes.BooleanType), HasDoubleStrike(TrackableTypes.BooleanType), HasFirstStrike(TrackableTypes.BooleanType), diff --git a/forge-gui-mobile/src/forge/Graphics.java b/forge-gui-mobile/src/forge/Graphics.java index 91a14362601..d503653abaf 100644 --- a/forge-gui-mobile/src/forge/Graphics.java +++ b/forge-gui-mobile/src/forge/Graphics.java @@ -637,7 +637,7 @@ public class Graphics { public void drawBorderImage(FImage image, Color borderColor, Color tintColor, float x, float y, float w, float h, boolean tint) { float oldalpha = alphaComposite; - if(tint){ + if(tint && !tintColor.equals(borderColor)){ drawRoundRect(2f, borderLining(borderColor.toString()), x, y, w, h, (h-w)/12); fillRoundRect(tintColor, x, y, w, h, (h-w)/12); } else { diff --git a/forge-gui-mobile/src/forge/assets/ImageCache.java b/forge-gui-mobile/src/forge/assets/ImageCache.java index 95e6d9a0345..d1ad2fda02e 100644 --- a/forge-gui-mobile/src/forge/assets/ImageCache.java +++ b/forge-gui-mobile/src/forge/assets/ImageCache.java @@ -288,15 +288,20 @@ public class ImageCache { public static FImage getBorderImage(String textureString) { return getBorder(textureString); } - public static Color getTint(CardView c) { + public static Color getTint(CardView c, Texture t) { if (c == null) - return Color.CLEAR; + return borderColor(t); if (c.isFaceDown()) - return Color.CLEAR; + return Color.valueOf("#171717"); + + //todo: determine correct splitcards colors CardView.CardStateView state = c.getCurrentState(); - if (state.getColors().isColorless()) //Moonlace -> target spell or permanent becomes colorless. + if (state.getColors().isColorless()) { //Moonlace -> target spell or permanent becomes colorless. + if (state.hasDevoid()) //devoid is colorless at all zones so return its corresponding border color... + return borderColor(t); return Color.valueOf("#A0A6A4"); + } else if (state.getColors().isMonoColor()) { if (state.getColors().hasBlack()) return Color.valueOf("#48494a"); @@ -311,6 +316,7 @@ public class ImageCache { } else if (state.getColors().isMulticolor()) return Color.valueOf("#F9E084"); - return Color.CLEAR; + + return borderColor(t); } } diff --git a/forge-gui-mobile/src/forge/card/CardRenderer.java b/forge-gui-mobile/src/forge/card/CardRenderer.java index 3f352afeedb..460412fdb9c 100644 --- a/forge-gui-mobile/src/forge/card/CardRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardRenderer.java @@ -522,7 +522,7 @@ public class CardRenderer { g.drawImage(image, x, y, w, h); else { boolean t = (card.getCurrentState().getOriginalColors() != card.getCurrentState().getColors()) || card.getCurrentState().hasChangeColors(); - g.drawBorderImage(ImageCache.getBorderImage(image.toString(), canshow), ImageCache.borderColor(image), ImageCache.getTint(card), x, y, w, h, t); //tint check for changed colors + g.drawBorderImage(ImageCache.getBorderImage(image.toString(), canshow), ImageCache.borderColor(image), ImageCache.getTint(card, image), x, y, w, h, t); //tint check for changed colors g.drawImage(ImageCache.croppedBorderImage(image), x + radius / 2.4f-minusxy, y + radius / 2-minusxy, w * croppedArea, h * croppedArea); } } else {