diff --git a/forge-core/src/main/java/forge/card/mana/ManaCostShard.java b/forge-core/src/main/java/forge/card/mana/ManaCostShard.java index a0141250fc0..75b5663811e 100644 --- a/forge-core/src/main/java/forge/card/mana/ManaCostShard.java +++ b/forge-core/src/main/java/forge/card/mana/ManaCostShard.java @@ -63,6 +63,16 @@ public enum ManaCostShard { PB(ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "P/B", "PB"), PR(ManaAtom.RED | ManaAtom.OR_2_LIFE, "P/R", "PR"), PG(ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "P/G", "PG"), + PBG(ManaAtom.BLACK | ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "P/B/G", "PBG"), + PBR(ManaAtom.BLACK | ManaAtom.RED | ManaAtom.OR_2_LIFE, "P/B/R", "PBR"), + PGU(ManaAtom.GREEN | ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "P/G/U", "PGU"), + PGW(ManaAtom.GREEN | ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "P/G/W", "PGW"), + PRG(ManaAtom.RED | ManaAtom.GREEN | ManaAtom.OR_2_LIFE, "P/R/G", "PRG"), + PRW(ManaAtom.RED | ManaAtom.WHITE | ManaAtom.OR_2_LIFE, "P/R/W", "PRW"), + PUB(ManaAtom.BLUE | ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "P/U/B", "PUB"), + PUR(ManaAtom.BLUE | ManaAtom.RED | ManaAtom.OR_2_LIFE, "P/U/R", "PUR"), + PWB(ManaAtom.WHITE | ManaAtom.BLACK | ManaAtom.OR_2_LIFE, "P/W/B", "PWB"), + PWU(ManaAtom.WHITE | ManaAtom.BLUE | ManaAtom.OR_2_LIFE, "P/W/U", "PWU"), X(ManaAtom.IS_X, "X"), diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java index 013fce84fce..780742b3ea1 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/CardFaceSymbols.java @@ -78,6 +78,16 @@ public class CardFaceSymbols { MANA_IMAGES.put("PU", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_U)); MANA_IMAGES.put("PB", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_B)); MANA_IMAGES.put("PG", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_G)); + MANA_IMAGES.put("PBG", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_BG)); + MANA_IMAGES.put("PBR", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_BR)); + MANA_IMAGES.put("PGU", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_GU)); + MANA_IMAGES.put("PGW", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_GW)); + MANA_IMAGES.put("PRG", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_RG)); + MANA_IMAGES.put("PRW", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_RW)); + MANA_IMAGES.put("PUB", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_UB)); + MANA_IMAGES.put("PUR", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_UR)); + MANA_IMAGES.put("PWB", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_WB)); + MANA_IMAGES.put("PWU", FSkin.getImage(FSkinProp.IMG_MANA_PHRYX_WU)); MANA_IMAGES.put("2W", FSkin.getImage(FSkinProp.IMG_MANA_2W)); MANA_IMAGES.put("2U", FSkin.getImage(FSkinProp.IMG_MANA_2U)); MANA_IMAGES.put("2R", FSkin.getImage(FSkinProp.IMG_MANA_2R)); diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java index bb2e069cb51..fd9c4053484 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java @@ -1089,9 +1089,9 @@ public class FSkin { return str; } //format mana symbols to display as icons - pattern = "\\{([A-Z0-9]+)\\}|\\{([A-Z0-9]+)/([A-Z0-9]+)\\}"; //fancy pattern needed so "/" can be omitted from replacement + pattern = "\\{([A-Z0-9]+)\\}|\\{([A-Z0-9]+)/([A-Z0-9]+)\\}|\\{([A-Z0-9]+)/([A-Z0-9]+)/([A-Z0-9]+)\\}"; //fancy pattern needed so "/" can be omitted from replacement try { - replacement = ""; + replacement = ""; str = str.replaceAll(pattern, replacement); } catch (final MalformedURLException e) { e.printStackTrace(); @@ -1108,7 +1108,7 @@ public class FSkin { private static String preferredDir; private static String preferredName; private static BufferedImage bimDefaultSprite, bimFavIcon, bimPreferredSprite, bimFoils, bimQuestDraftDeck, bimOldFoils, - bimDefaultAvatars, bimPreferredAvatars, bimTrophies, bimAbilities, bimManaIcons, bimDefaultSleeve, bimDefaultSleeve2, bimDefaultDeckbox, bimPrefferedSetLogo, bimDefaultWatermark; + bimDefaultAvatars, bimPreferredAvatars, bimTrophies, bimAbilities, bimManaIcons, bimPhyrexian, bimDefaultSleeve, bimDefaultSleeve2, bimDefaultDeckbox, bimPrefferedSetLogo, bimDefaultWatermark; private static int x0, y0, w0, h0, newW, newH, preferredW, preferredH; private static int[] tempCoords; private static int defaultFontSize = 12; @@ -1249,6 +1249,7 @@ public class FSkin { final File f15 = new File(defaultDir + ForgeConstants.SPRITE_SETLOGO_FILE); final File f16 = new File(preferredDir + ForgeConstants.SPRITE_SETLOGO_FILE); final File f17 = new File(defaultDir + ForgeConstants.SPRITE_WATERMARK_FILE); + final File f18 = new File(defaultDir +ForgeConstants.SPRITE_PHYREXIAN_FILE); try { int p = 0; @@ -1258,6 +1259,8 @@ public class FSkin { FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimManaIcons = ImageIO.read(f11); FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); + bimPhyrexian = ImageIO.read(f18); + FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimPreferredSprite = ImageIO.read(f2); FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimFoils = ImageIO.read(f3); @@ -1337,6 +1340,9 @@ public class FSkin { case MANAICONS: setImage(prop, bimManaIcons); break; + case PHYREXIAN: + setImage(prop, bimPhyrexian); + break; case DECKBOX: setImage(prop, bimDefaultDeckbox); break; @@ -1374,6 +1380,7 @@ public class FSkin { bimQuestDraftDeck.flush(); bimTrophies.flush(); bimAbilities.flush(); + bimPhyrexian.flush(); bimManaIcons.flush(); if (bimPreferredAvatars != null) { bimPreferredAvatars.flush(); } @@ -1392,6 +1399,7 @@ public class FSkin { bimQuestDraftDeck = null; bimTrophies = null; bimAbilities = null; + bimPhyrexian = null; bimManaIcons = null; //establish encoding symbols @@ -1436,6 +1444,16 @@ public class FSkin { addEncodingSymbol("B/P", FSkinProp.IMG_MANA_PHRYX_B); addEncodingSymbol("R/P", FSkinProp.IMG_MANA_PHRYX_R); addEncodingSymbol("G/P", FSkinProp.IMG_MANA_PHRYX_G); + addEncodingSymbol("P/B/G", FSkinProp.IMG_MANA_PHRYX_BG); + addEncodingSymbol("P/B/R", FSkinProp.IMG_MANA_PHRYX_BR); + addEncodingSymbol("P/G/U", FSkinProp.IMG_MANA_PHRYX_GU); + addEncodingSymbol("P/G/W", FSkinProp.IMG_MANA_PHRYX_GW); + addEncodingSymbol("P/R/G", FSkinProp.IMG_MANA_PHRYX_RG); + addEncodingSymbol("P/R/W", FSkinProp.IMG_MANA_PHRYX_RW); + addEncodingSymbol("P/U/B", FSkinProp.IMG_MANA_PHRYX_UB); + addEncodingSymbol("P/U/R", FSkinProp.IMG_MANA_PHRYX_UR); + addEncodingSymbol("P/W/B", FSkinProp.IMG_MANA_PHRYX_WB); + addEncodingSymbol("P/W/U", FSkinProp.IMG_MANA_PHRYX_WU); for (int i = 0; i <= 20; i++) { addEncodingSymbol(String.valueOf(i), FSkinProp.valueOf("IMG_MANA_" + i)); } diff --git a/forge-gui-mobile/src/forge/assets/FSkin.java b/forge-gui-mobile/src/forge/assets/FSkin.java index f1c70dfcd97..a11c31a7662 100644 --- a/forge-gui-mobile/src/forge/assets/FSkin.java +++ b/forge-gui-mobile/src/forge/assets/FSkin.java @@ -244,6 +244,7 @@ public class FSkin { final FileHandle f12 = getSkinFile(ForgeConstants.SPRITE_START_FILE); final FileHandle f13 = getDefaultSkinFile(ForgeConstants.SPRITE_DECKBOX_FILE); final FileHandle f17 = getDefaultSkinFile(ForgeConstants.SPRITE_CRACKS_FILE); + final FileHandle f18 = getDefaultSkinFile(ForgeConstants.SPRITE_PHYREXIAN_FILE); /*TODO Themeable final FileHandle f14 = getDefaultSkinFile(ForgeConstants.SPRITE_SETLOGO_FILE); diff --git a/forge-gui-mobile/src/forge/assets/FSkinImage.java b/forge-gui-mobile/src/forge/assets/FSkinImage.java index ef094994d03..a2475ed916d 100644 --- a/forge-gui-mobile/src/forge/assets/FSkinImage.java +++ b/forge-gui-mobile/src/forge/assets/FSkinImage.java @@ -68,6 +68,16 @@ public enum FSkinImage implements FImage { MANA_PHRYX_R (FSkinProp.IMG_MANA_PHRYX_R, SourceFile.MANAICONS), MANA_PHRYX_G (FSkinProp.IMG_MANA_PHRYX_G, SourceFile.MANAICONS), MANA_PHRYX_B (FSkinProp.IMG_MANA_PHRYX_B, SourceFile.MANAICONS), + MANA_PHRYX_BG (FSkinProp.IMG_MANA_PHRYX_BG, SourceFile.PHYREXIAN), + MANA_PHRYX_BR (FSkinProp.IMG_MANA_PHRYX_BR, SourceFile.PHYREXIAN), + MANA_PHRYX_GU (FSkinProp.IMG_MANA_PHRYX_GU, SourceFile.PHYREXIAN), + MANA_PHRYX_GW (FSkinProp.IMG_MANA_PHRYX_GW, SourceFile.PHYREXIAN), + MANA_PHRYX_RG (FSkinProp.IMG_MANA_PHRYX_RG, SourceFile.PHYREXIAN), + MANA_PHRYX_RW (FSkinProp.IMG_MANA_PHRYX_RW, SourceFile.PHYREXIAN), + MANA_PHRYX_UB (FSkinProp.IMG_MANA_PHRYX_UB, SourceFile.PHYREXIAN), + MANA_PHRYX_UR (FSkinProp.IMG_MANA_PHRYX_UR, SourceFile.PHYREXIAN), + MANA_PHRYX_WB (FSkinProp.IMG_MANA_PHRYX_WB, SourceFile.PHYREXIAN), + MANA_PHRYX_WU (FSkinProp.IMG_MANA_PHRYX_WU, SourceFile.PHYREXIAN), MANA_SNOW (FSkinProp.IMG_MANA_SNOW, SourceFile.MANAICONS), MANA_0 (FSkinProp.IMG_MANA_0, SourceFile.MANAICONS), MANA_1 (FSkinProp.IMG_MANA_1, SourceFile.MANAICONS), @@ -484,6 +494,7 @@ public enum FSkinImage implements FImage { BUTTONS(ForgeConstants.SPRITE_BUTTONS_FILE), BTNSTART(ForgeConstants.SPRITE_START_FILE), MANAICONS(ForgeConstants.SPRITE_MANAICONS_FILE), + PHYREXIAN(ForgeConstants.SPRITE_PHYREXIAN_FILE), SETLOGOS(ForgeConstants.SPRITE_SETLOGO_FILE), WATERMARKS(ForgeConstants.SPRITE_WATERMARK_FILE), CRACKS(ForgeConstants.SPRITE_CRACKS_FILE), diff --git a/forge-gui-mobile/src/forge/assets/TextRenderer.java b/forge-gui-mobile/src/forge/assets/TextRenderer.java index ca516e63a8b..231e16cfc66 100644 --- a/forge-gui-mobile/src/forge/assets/TextRenderer.java +++ b/forge-gui-mobile/src/forge/assets/TextRenderer.java @@ -54,6 +54,16 @@ public class TextRenderer { symbolLookup.put("B/P", FSkinImage.MANA_PHRYX_B); symbolLookup.put("R/P", FSkinImage.MANA_PHRYX_R); symbolLookup.put("G/P", FSkinImage.MANA_PHRYX_G); + symbolLookup.put("P/B/G", FSkinImage.MANA_PHRYX_BG); + symbolLookup.put("P/B/R", FSkinImage.MANA_PHRYX_BR); + symbolLookup.put("P/G/U", FSkinImage.MANA_PHRYX_GU); + symbolLookup.put("P/G/W", FSkinImage.MANA_PHRYX_GW); + symbolLookup.put("P/R/G", FSkinImage.MANA_PHRYX_RG); + symbolLookup.put("P/R/W", FSkinImage.MANA_PHRYX_RW); + symbolLookup.put("P/U/B", FSkinImage.MANA_PHRYX_UB); + symbolLookup.put("P/U/R", FSkinImage.MANA_PHRYX_UR); + symbolLookup.put("P/W/B", FSkinImage.MANA_PHRYX_WB); + symbolLookup.put("P/W/U", FSkinImage.MANA_PHRYX_WU); for (int i = 0; i <= 20; i++) { symbolLookup.put(String.valueOf(i), FSkinImage.valueOf("MANA_" + i)); } diff --git a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java index 0c8becebb2f..4c73a945404 100644 --- a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java +++ b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java @@ -62,6 +62,16 @@ public class CardFaceSymbols { MANA_IMAGES.put("PU", FSkinImage.MANA_PHRYX_U); MANA_IMAGES.put("PB", FSkinImage.MANA_PHRYX_B); MANA_IMAGES.put("PG", FSkinImage.MANA_PHRYX_G); + MANA_IMAGES.put("PBG", FSkinImage.MANA_PHRYX_BG); + MANA_IMAGES.put("PBR", FSkinImage.MANA_PHRYX_BR); + MANA_IMAGES.put("PGU", FSkinImage.MANA_PHRYX_GU); + MANA_IMAGES.put("PGW", FSkinImage.MANA_PHRYX_GW); + MANA_IMAGES.put("PRG", FSkinImage.MANA_PHRYX_RG); + MANA_IMAGES.put("PRW", FSkinImage.MANA_PHRYX_RW); + MANA_IMAGES.put("PUB", FSkinImage.MANA_PHRYX_UB); + MANA_IMAGES.put("PUR", FSkinImage.MANA_PHRYX_UR); + MANA_IMAGES.put("PWB", FSkinImage.MANA_PHRYX_WB); + MANA_IMAGES.put("PWU", FSkinImage.MANA_PHRYX_WU); MANA_IMAGES.put("2W", FSkinImage.MANA_2W); MANA_IMAGES.put("2U", FSkinImage.MANA_2U); MANA_IMAGES.put("2R", FSkinImage.MANA_2R); diff --git a/forge-gui/res/skins/default/sprite_phyrexian.png b/forge-gui/res/skins/default/sprite_phyrexian.png new file mode 100644 index 00000000000..ef09ba3fab3 Binary files /dev/null and b/forge-gui/res/skins/default/sprite_phyrexian.png differ diff --git a/forge-gui/src/main/java/forge/localinstance/properties/ForgeConstants.java b/forge-gui/src/main/java/forge/localinstance/properties/ForgeConstants.java index 82888f18c2f..1ce2be201fc 100644 --- a/forge-gui/src/main/java/forge/localinstance/properties/ForgeConstants.java +++ b/forge-gui/src/main/java/forge/localinstance/properties/ForgeConstants.java @@ -117,6 +117,7 @@ public final class ForgeConstants { public static final String SPRITE_DECKBOX_FILE = "sprite_deckbox.png"; public static final String SPRITE_START_FILE = "sprite_start.png"; public static final String SPRITE_MANAICONS_FILE = "sprite_manaicons.png"; + public static final String SPRITE_PHYREXIAN_FILE = "sprite_phyrexian.png"; public static final String SPRITE_AVATARS_FILE = "sprite_avatars.png"; public static final String SPRITE_CRACKS_FILE = "sprite_cracks.png"; public static final String SPRITE_SLEEVES_FILE = "sprite_sleeves.png"; 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 381ec7864fa..7069852d424 100644 --- a/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java +++ b/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java @@ -101,6 +101,16 @@ public enum FSkinProp { IMG_MANA_PHRYX_R (new int[] {412, 166, 80, 80}, PropType.MANAICONS), IMG_MANA_PHRYX_G (new int[] {330, 166, 80, 80}, PropType.MANAICONS), IMG_MANA_PHRYX_B (new int[] {248, 84, 80, 80}, PropType.MANAICONS), + IMG_MANA_PHRYX_BG (new int[] {439, 222, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_BR (new int[] {439, 2, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_GU (new int[] {876, 219, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_GW (new int[] {878, 2, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_RG (new int[] {657, 221, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_RW (new int[] {657, 2, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_UB (new int[] {219, 2, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_UR (new int[] {219, 222, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_WB (new int[] {2, 221, 199, 199}, PropType.PHYREXIAN), + IMG_MANA_PHRYX_WU (new int[] {2, 2, 199, 199}, PropType.PHYREXIAN), IMG_MANA_SNOW (new int[] {412, 2, 80, 80}, PropType.MANAICONS), //generic mana images @@ -559,6 +569,7 @@ public enum FSkinProp { BUTTONS, BTNSTART, MANAICONS, + PHYREXIAN, PLANAR_CONQUEST, DECKBOX, SETLOGO,