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 86121a87cc3..c28b2c4ff18 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -1492,6 +1492,16 @@ public class CardView extends GameEntityView { public boolean isArtifact() { return getType().isArtifact(); } + public boolean isNyx() { + int count = 0; + if (!getType().isEnchantment()) + return false; + for (CardType.CoreType coreType : getType().getCoreTypes()) { + if (coreType.isPermanent) + count += 1; + } + return count > 1; + } } //special methods for updating card and player properties as needed and returning the new collection diff --git a/forge-gui-mobile/src/forge/assets/FSkinImage.java b/forge-gui-mobile/src/forge/assets/FSkinImage.java index e70cbd8bf5f..cbc5ef4e426 100644 --- a/forge-gui-mobile/src/forge/assets/FSkinImage.java +++ b/forge-gui-mobile/src/forge/assets/FSkinImage.java @@ -136,6 +136,31 @@ public enum FSkinImage implements FImage { CARDBG_WG (FSkinProp.IMG_CARDBG_WG, SourceFile.CARDBG), CARDBG_WR (FSkinProp.IMG_CARDBG_WR, SourceFile.CARDBG), CARDBG_WU (FSkinProp.IMG_CARDBG_WU, SourceFile.CARDBG), + //PWBG + PWBG_B (FSkinProp.IMG_PWBG_B, SourceFile.CARDBG), + PWBG_BG (FSkinProp.IMG_PWBG_BG, SourceFile.CARDBG), + PWBG_BR (FSkinProp.IMG_PWBG_BR, SourceFile.CARDBG), + PWBG_C (FSkinProp.IMG_PWBG_C, SourceFile.CARDBG), + PWBG_G (FSkinProp.IMG_PWBG_G, SourceFile.CARDBG), + PWBG_M (FSkinProp.IMG_PWBG_M, SourceFile.CARDBG), + PWBG_R (FSkinProp.IMG_PWBG_R, SourceFile.CARDBG), + PWBG_RG (FSkinProp.IMG_PWBG_RG, SourceFile.CARDBG), + PWBG_U (FSkinProp.IMG_PWBG_U, SourceFile.CARDBG), + PWBG_UB (FSkinProp.IMG_PWBG_UB, SourceFile.CARDBG), + PWBG_UG (FSkinProp.IMG_PWBG_UG, SourceFile.CARDBG), + PWBG_UR (FSkinProp.IMG_PWBG_UR, SourceFile.CARDBG), + PWBG_W (FSkinProp.IMG_PWBG_W, SourceFile.CARDBG), + PWBG_WB (FSkinProp.IMG_PWBG_WB, SourceFile.CARDBG), + PWBG_WG (FSkinProp.IMG_PWBG_WG, SourceFile.CARDBG), + PWBG_WR (FSkinProp.IMG_PWBG_WR, SourceFile.CARDBG), + PWBG_WU (FSkinProp.IMG_PWBG_WU, SourceFile.CARDBG), + //NYX OVERLAY + NYX_B (FSkinProp.IMG_NYX_B, SourceFile.CARDBG), + NYX_G (FSkinProp.IMG_NYX_G, SourceFile.CARDBG), + NYX_M (FSkinProp.IMG_NYX_M, SourceFile.CARDBG), + NYX_R (FSkinProp.IMG_NYX_R, SourceFile.CARDBG), + NYX_U (FSkinProp.IMG_NYX_U, SourceFile.CARDBG), + NYX_W (FSkinProp.IMG_NYX_W, SourceFile.CARDBG), //Gameplay TAP (FSkinProp.IMG_TAP, SourceFile.MANAICONS), diff --git a/forge-gui-mobile/src/forge/card/CardImageRenderer.java b/forge-gui-mobile/src/forge/card/CardImageRenderer.java index fcd3f8ba82a..a7b267366f5 100644 --- a/forge-gui-mobile/src/forge/card/CardImageRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardImageRenderer.java @@ -815,6 +815,8 @@ public class CardImageRenderer { } public static Color[] drawCardBackgroundTexture(CardStateView state, Graphics g, List backColors, float x, float y, float w, float h) { boolean isHybrid = state.getManaCost().hasHybrid(); + boolean isPW = state.isPlaneswalker(); + boolean isNyx = state.isNyx(); Color[] colors = new Color[backColors.size()]; for (int i = 0; i < colors.length; i++) { DetailColors dc = backColors.get(i); @@ -825,58 +827,77 @@ public class CardImageRenderer { if (backColors.get(0) == DetailColors.FACE_DOWN) { g.drawImage(FSkinImage.CARDBG_C, x, y, w,h); } else if (backColors.get(0) == DetailColors.LAND) { - g.drawImage(FSkinImage.CARDBG_L, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_C : FSkinImage.CARDBG_L, x, y, w,h); }else if (backColors.get(0) == DetailColors.MULTICOLOR) { - g.drawImage(FSkinImage.CARDBG_M, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_M : FSkinImage.CARDBG_M, x, y, w,h); + if (isNyx) + g.drawImage(FSkinImage.NYX_M, x, y, w, (h/2)+(h/5)); } else if (backColors.get(0) == DetailColors.COLORLESS) { - if (state.isVehicle()) + if (isPW) + g.drawImage(FSkinImage.PWBG_C, x, y, w,h); + else if (state.isVehicle()) g.drawImage(FSkinImage.CARDBG_V, x, y, w,h); else if (state.isArtifact()) g.drawImage(FSkinImage.CARDBG_A, x, y, w,h); else g.drawImage(FSkinImage.CARDBG_C, x, y, w,h); + //todo add NYX for colorless? } else if (backColors.get(0) == DetailColors.GREEN) { - g.drawImage(FSkinImage.CARDBG_G, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_G : FSkinImage.CARDBG_G, x, y, w,h); + if (isNyx) + g.drawImage(FSkinImage.NYX_G, x, y, w, (h/2)+(h/5)); } else if (backColors.get(0) == DetailColors.RED) { - g.drawImage(FSkinImage.CARDBG_R, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_R : FSkinImage.CARDBG_R, x, y, w,h); + if (isNyx) + g.drawImage(FSkinImage.NYX_R, x, y, w, (h/2)+(h/5)); } else if (backColors.get(0) == DetailColors.BLACK) { - g.drawImage(FSkinImage.CARDBG_B, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_B : FSkinImage.CARDBG_B, x, y, w,h); + if (isNyx) + g.drawImage(FSkinImage.NYX_B, x, y, w, (h/2)+(h/5)); } else if (backColors.get(0) == DetailColors.BLUE) { - g.drawImage(FSkinImage.CARDBG_U, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_U : FSkinImage.CARDBG_U, x, y, w,h); + if (isNyx) + g.drawImage(FSkinImage.NYX_U, x, y, w, (h/2)+(h/5)); } else if (backColors.get(0) == DetailColors.WHITE) { - g.drawImage(FSkinImage.CARDBG_W, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_W : FSkinImage.CARDBG_W, x, y, w,h); + if (isNyx) + g.drawImage(FSkinImage.NYX_W, x, y, w, (h/2)+(h/5)); } break; case 2: if (!isHybrid) { - g.drawImage(FSkinImage.CARDBG_M, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_M : FSkinImage.CARDBG_M, x, y, w, h); } else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.BLUE)) { - g.drawImage(FSkinImage.CARDBG_WU, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_WU : FSkinImage.CARDBG_WU, x, y, w, h); } else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.BLACK)) { - g.drawImage(FSkinImage.CARDBG_WB, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_WB : FSkinImage.CARDBG_WB, x, y, w, h); } else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.RED)) { - g.drawImage(FSkinImage.CARDBG_WR, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_WR : FSkinImage.CARDBG_WR, x, y, w, h); } else if (backColors.contains(DetailColors.WHITE) && backColors.contains(DetailColors.GREEN)) { - g.drawImage(FSkinImage.CARDBG_WG, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_WG : FSkinImage.CARDBG_WG, x, y, w, h); } else if (backColors.contains(DetailColors.BLUE) && backColors.contains(DetailColors.BLACK)) { - g.drawImage(FSkinImage.CARDBG_UB, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_UB : FSkinImage.CARDBG_UB, x, y, w, h); } else if (backColors.contains(DetailColors.BLUE) && backColors.contains(DetailColors.RED)) { - g.drawImage(FSkinImage.CARDBG_UR, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_UR : FSkinImage.CARDBG_UR, x, y, w, h); } else if (backColors.contains(DetailColors.BLUE) && backColors.contains(DetailColors.GREEN)) { - g.drawImage(FSkinImage.CARDBG_UG, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_UG : FSkinImage.CARDBG_UG, x, y, w, h); } else if (backColors.contains(DetailColors.BLACK) && backColors.contains(DetailColors.RED)) { - g.drawImage(FSkinImage.CARDBG_BR, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_BR : FSkinImage.CARDBG_BR, x, y, w, h); } else if (backColors.contains(DetailColors.BLACK) && backColors.contains(DetailColors.GREEN)) { - g.drawImage(FSkinImage.CARDBG_BG, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_BG : FSkinImage.CARDBG_BG, x, y, w, h); } else if (backColors.contains(DetailColors.RED) && backColors.contains(DetailColors.GREEN)) { - g.drawImage(FSkinImage.CARDBG_RG, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_RG : FSkinImage.CARDBG_RG, x, y, w, h); } + if (isNyx) + g.drawImage(FSkinImage.NYX_M, x, y, w, (h/2)+(h/5)); break; case 3: - g.drawImage(FSkinImage.CARDBG_M, x, y, w, h); + g.drawImage(isPW ? FSkinImage.PWBG_M : FSkinImage.CARDBG_M, x, y, w, h); + if (isNyx) + g.drawImage(FSkinImage.NYX_M, x, y, w, (h/2)+(h/5)); break; default: - g.drawImage(FSkinImage.CARDBG_C, x, y, w,h); + g.drawImage(isPW ? FSkinImage.PWBG_C : FSkinImage.CARDBG_C, x, y, w,h); break; } return colors; diff --git a/forge-gui/res/skins/default/sprite_cardbg.png b/forge-gui/res/skins/default/sprite_cardbg.png index 344a531202b..1eea41c2b03 100644 Binary files a/forge-gui/res/skins/default/sprite_cardbg.png and b/forge-gui/res/skins/default/sprite_cardbg.png differ diff --git a/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java b/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java index 779eb4c2a42..743bbdc9ab4 100644 --- a/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java +++ b/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java @@ -431,6 +431,31 @@ public enum FSkinProp { IMG_CARDBG_WG (new int[] {684, 1496, 339, 496}, PropType.CARDBG), IMG_CARDBG_WR (new int[] {1025, 1496, 339, 496}, PropType.CARDBG), IMG_CARDBG_WU (new int[] {1366, 1496, 339, 496}, PropType.CARDBG), + //FOR PW BG + IMG_PWBG_B (new int[] {2, 1994, 339, 496}, PropType.CARDBG), + IMG_PWBG_BG (new int[] {343, 1994, 339, 496}, PropType.CARDBG), + IMG_PWBG_BR (new int[] {684, 1994, 339, 496}, PropType.CARDBG), + IMG_PWBG_C (new int[] {1025, 1994, 339, 496}, PropType.CARDBG), + IMG_PWBG_G (new int[] {1366, 1994, 339, 496}, PropType.CARDBG), + IMG_PWBG_M (new int[] {2, 2492, 339, 496}, PropType.CARDBG), + IMG_PWBG_R (new int[] {343, 2492, 339, 496}, PropType.CARDBG), + IMG_PWBG_RG (new int[] {684, 2492, 339, 496}, PropType.CARDBG), + IMG_PWBG_U (new int[] {1025, 2492, 339, 496}, PropType.CARDBG), + IMG_PWBG_UB (new int[] {1366, 2492, 339, 496}, PropType.CARDBG), + IMG_PWBG_UG (new int[] {2, 2990, 339, 496}, PropType.CARDBG), + IMG_PWBG_UR (new int[] {343, 2990, 339, 496}, PropType.CARDBG), + IMG_PWBG_W (new int[] {684, 2990, 339, 496}, PropType.CARDBG), + IMG_PWBG_WB (new int[] {1025, 2990, 339, 496}, PropType.CARDBG), + IMG_PWBG_WG (new int[] {1366, 2990, 339, 496}, PropType.CARDBG), + IMG_PWBG_WR (new int[] {2, 3488, 339, 496}, PropType.CARDBG), + IMG_PWBG_WU (new int[] {343, 3488, 339, 496}, PropType.CARDBG), + //NYX OVERLAY + IMG_NYX_B (new int[] {684, 3488, 339, 248}, PropType.CARDBG), + IMG_NYX_G (new int[] {1025, 3488, 339, 248}, PropType.CARDBG), + IMG_NYX_M (new int[] {1366, 3488, 339, 248}, PropType.CARDBG), + IMG_NYX_R (new int[] {684, 3736, 339, 248}, PropType.CARDBG), + IMG_NYX_U (new int[] {1025, 3736, 339, 248}, PropType.CARDBG), + IMG_NYX_W (new int[] {1366, 3736, 339, 248}, PropType.CARDBG), IMG_FAV1 (new int[] {0, 0, 100, 100}, PropType.FAVICON), IMG_FAV2 (new int[] {100, 0, 100, 100}, PropType.FAVICON),