diff --git a/forge-game/src/main/java/forge/game/GameAction.java b/forge-game/src/main/java/forge/game/GameAction.java index a465bf90a1d..aed8d191d9c 100644 --- a/forge-game/src/main/java/forge/game/GameAction.java +++ b/forge-game/src/main/java/forge/game/GameAction.java @@ -148,7 +148,7 @@ public class GameAction { } // if an adventureCard is put from Stack somewhere else, need to reset to Original State - if (c.isAdventureCard() && (zoneFrom.is(ZoneType.Stack) || !zoneTo.is(ZoneType.Stack))) { + if (c.isAdventureCard() && (ZoneType.Stack.equals(zoneFrom) || !ZoneType.Stack.equals(zoneTo))) { //fix NPE momir c.setState(CardStateName.Original, true); } 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 845b729ebe0..e14f45f1bb6 100644 --- a/forge-game/src/main/java/forge/game/card/CardView.java +++ b/forge-game/src/main/java/forge/game/card/CardView.java @@ -1027,11 +1027,13 @@ public class CardView extends GameEntityView { public boolean hasFlying() { return get(TrackableProperty.HasFlying); } public boolean hasFear() { return get(TrackableProperty.HasFear); } public boolean hasHexproof() { return get(TrackableProperty.HasHexproof); } + public boolean hasHorsemanship() { return get(TrackableProperty.HasHorsemanship); } public boolean hasIndestructible() { return get(TrackableProperty.HasIndestructible); } public boolean hasIntimidate() { return get(TrackableProperty.HasIntimidate); } public boolean hasLifelink() { return get(TrackableProperty.HasLifelink); } public boolean hasMenace() { return get(TrackableProperty.HasMenace); } public boolean hasReach() { return get(TrackableProperty.HasReach); } + public boolean hasShadow() { return get(TrackableProperty.HasShadow); } public boolean hasShroud() { return get(TrackableProperty.HasShroud); } public boolean hasTrample() { return get(TrackableProperty.HasTrample); } public boolean hasVigilance() { return get(TrackableProperty.HasVigilance); } @@ -1061,11 +1063,13 @@ public class CardView extends GameEntityView { set(TrackableProperty.HasFlying, c.hasKeyword(Keyword.FLYING, state)); set(TrackableProperty.HasFear, c.hasKeyword(Keyword.FEAR, state)); set(TrackableProperty.HasHexproof, c.hasKeyword(Keyword.HEXPROOF, state)); + set(TrackableProperty.HasHorsemanship, c.hasKeyword(Keyword.HORSEMANSHIP, state)); set(TrackableProperty.HasIndestructible, c.hasKeyword(Keyword.INDESTRUCTIBLE, state)); set(TrackableProperty.HasIntimidate, c.hasKeyword(Keyword.INTIMIDATE, state)); set(TrackableProperty.HasLifelink, c.hasKeyword(Keyword.LIFELINK, state)); set(TrackableProperty.HasMenace, c.hasKeyword(Keyword.MENACE, state)); set(TrackableProperty.HasReach, c.hasKeyword(Keyword.REACH, state)); + set(TrackableProperty.HasShadow, c.hasKeyword(Keyword.SHADOW, state)); set(TrackableProperty.HasShroud, c.hasKeyword(Keyword.SHROUD, state)); set(TrackableProperty.HasTrample, c.hasKeyword(Keyword.TRAMPLE, state)); set(TrackableProperty.HasVigilance, c.hasKeyword(Keyword.VIGILANCE, state)); diff --git a/forge-game/src/main/java/forge/trackable/TrackableProperty.java b/forge-game/src/main/java/forge/trackable/TrackableProperty.java index bae1cc49933..a26cfa0951b 100644 --- a/forge-game/src/main/java/forge/trackable/TrackableProperty.java +++ b/forge-game/src/main/java/forge/trackable/TrackableProperty.java @@ -90,11 +90,13 @@ public enum TrackableProperty { HasFlying(TrackableTypes.BooleanType), HasFear(TrackableTypes.BooleanType), HasHexproof(TrackableTypes.BooleanType), + HasHorsemanship(TrackableTypes.BooleanType), HasIndestructible(TrackableTypes.BooleanType), HasIntimidate(TrackableTypes.BooleanType), HasLifelink(TrackableTypes.BooleanType), HasMenace(TrackableTypes.BooleanType), HasReach(TrackableTypes.BooleanType), + HasShadow(TrackableTypes.BooleanType), HasShroud(TrackableTypes.BooleanType), HasTrample(TrackableTypes.BooleanType), HasVigilance(TrackableTypes.BooleanType), 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 2782bda17f2..f7e658da7ae 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/FSkin.java @@ -1039,7 +1039,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; + bimOldFoils, bimDefaultAvatars, bimPreferredAvatars, bimTrophies, bimAbilities, bimManaIcons; private static int x0, y0, w0, h0, newW, newH, preferredW, preferredH; private static int[] tempCoords; private static int defaultFontSize = 12; @@ -1172,6 +1172,7 @@ public class FSkin { final File f8 = new File(defaultDir + ForgeConstants.DRAFT_DECK_IMG_FILE); final File f9 = new File(defaultDir + ForgeConstants.SPRITE_FAVICONS_FILE); final File f10 = new File(defaultDir + ForgeConstants.SPRITE_ABILITY_FILE); + final File f11 = new File(defaultDir + ForgeConstants.SPRITE_MANAICONS_FILE); try { int p = 0; @@ -1179,6 +1180,8 @@ public class FSkin { FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimAbilities = ImageIO.read(f10); FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); + bimManaIcons = ImageIO.read(f11); + FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimPreferredSprite = ImageIO.read(f2); FView.SINGLETON_INSTANCE.incrementSplashProgessBar(++p); bimFoils = ImageIO.read(f3); @@ -1242,6 +1245,9 @@ public class FSkin { case ABILITY: setImage(prop, bimAbilities); break; + case MANAICONS: + setImage(prop, bimManaIcons); + break; default: break; } @@ -1263,6 +1269,7 @@ public class FSkin { bimQuestDraftDeck.flush(); bimTrophies.flush(); bimAbilities.flush(); + bimManaIcons.flush(); if (bimPreferredAvatars != null) { bimPreferredAvatars.flush(); } @@ -1275,6 +1282,7 @@ public class FSkin { bimQuestDraftDeck = null; bimTrophies = null; bimAbilities = null; + bimManaIcons = null; //establish encoding symbols final File dir = new File(ForgeConstants.CACHE_SYMBOLS_DIR); diff --git a/forge-gui-mobile/src/forge/assets/FSkin.java b/forge-gui-mobile/src/forge/assets/FSkin.java index 4b1e202785a..9ed94ee43c3 100644 --- a/forge-gui-mobile/src/forge/assets/FSkin.java +++ b/forge-gui-mobile/src/forge/assets/FSkin.java @@ -182,6 +182,7 @@ public class FSkin { final FileHandle f4 = getDefaultSkinFile(ForgeConstants.SPRITE_AVATARS_FILE); final FileHandle f5 = getSkinFile(ForgeConstants.SPRITE_AVATARS_FILE); final FileHandle f6 = getDefaultSkinFile(SourceFile.OLD_FOILS.getFilename()); + final FileHandle f7 = getDefaultSkinFile(ForgeConstants.SPRITE_MANAICONS_FILE); try { textures.put(f1.path(), new Texture(f1)); @@ -194,6 +195,11 @@ public class FSkin { else { textures.put(f6.path(), textures.get(f3.path())); } + if (f7.exists()){ + Texture t = new Texture(f7, true); + t.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear); + textures.put(f7.path(), t); + } //update colors for (final FSkinColor.Colors c : FSkinColor.Colors.values()) { diff --git a/forge-gui-mobile/src/forge/assets/FSkinImage.java b/forge-gui-mobile/src/forge/assets/FSkinImage.java index 0444e1628a5..7048fe68698 100644 --- a/forge-gui-mobile/src/forge/assets/FSkinImage.java +++ b/forge-gui-mobile/src/forge/assets/FSkinImage.java @@ -8,6 +8,7 @@ import com.badlogic.gdx.graphics.Pixmap; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.TextureRegion; +import forge.Forge; import forge.Graphics; import forge.properties.ForgeConstants; import forge.util.ImageUtil; @@ -25,67 +26,67 @@ public enum FSkinImage implements FImage { POISON (FSkinProp.IMG_ZONE_POISON, SourceFile.ICONS), //Mana symbols - MANA_COLORLESS (FSkinProp.IMG_MANA_COLORLESS, SourceFile.ICONS), - MANA_B (FSkinProp.IMG_MANA_B, SourceFile.ICONS), - MANA_R (FSkinProp.IMG_MANA_R, SourceFile.ICONS), - MANA_U (FSkinProp.IMG_MANA_U, SourceFile.ICONS), - MANA_G (FSkinProp.IMG_MANA_G, SourceFile.ICONS), - MANA_W (FSkinProp.IMG_MANA_W, SourceFile.ICONS), - MANA_2B (FSkinProp.IMG_MANA_2B, SourceFile.ICONS), - MANA_2G (FSkinProp.IMG_MANA_2G, SourceFile.ICONS), - MANA_2R (FSkinProp.IMG_MANA_2R, SourceFile.ICONS), - MANA_2U (FSkinProp.IMG_MANA_2U, SourceFile.ICONS), - MANA_2W (FSkinProp.IMG_MANA_2W, SourceFile.ICONS), - MANA_HYBRID_BG (FSkinProp.IMG_MANA_HYBRID_BG, SourceFile.ICONS), - MANA_HYBRID_BR (FSkinProp.IMG_MANA_HYBRID_BR, SourceFile.ICONS), - MANA_HYBRID_GU (FSkinProp.IMG_MANA_HYBRID_GU, SourceFile.ICONS), - MANA_HYBRID_GW (FSkinProp.IMG_MANA_HYBRID_GW, SourceFile.ICONS), - MANA_HYBRID_RG (FSkinProp.IMG_MANA_HYBRID_RG, SourceFile.ICONS), - MANA_HYBRID_RW (FSkinProp.IMG_MANA_HYBRID_RW, SourceFile.ICONS), - MANA_HYBRID_UB (FSkinProp.IMG_MANA_HYBRID_UB, SourceFile.ICONS), - MANA_HYBRID_UR (FSkinProp.IMG_MANA_HYBRID_UR, SourceFile.ICONS), - MANA_HYBRID_WB (FSkinProp.IMG_MANA_HYBRID_WB, SourceFile.ICONS), - MANA_HYBRID_WU (FSkinProp.IMG_MANA_HYBRID_WU, SourceFile.ICONS), - MANA_PHRYX_U (FSkinProp.IMG_MANA_PHRYX_U, SourceFile.ICONS), - MANA_PHRYX_W (FSkinProp.IMG_MANA_PHRYX_W, SourceFile.ICONS), - MANA_PHRYX_R (FSkinProp.IMG_MANA_PHRYX_R, SourceFile.ICONS), - MANA_PHRYX_G (FSkinProp.IMG_MANA_PHRYX_G, SourceFile.ICONS), - MANA_PHRYX_B (FSkinProp.IMG_MANA_PHRYX_B, SourceFile.ICONS), - MANA_SNOW (FSkinProp.IMG_MANA_SNOW, SourceFile.ICONS), - MANA_0 (FSkinProp.IMG_MANA_0, SourceFile.ICONS), - MANA_1 (FSkinProp.IMG_MANA_1, SourceFile.ICONS), - MANA_2 (FSkinProp.IMG_MANA_2, SourceFile.ICONS), - MANA_3 (FSkinProp.IMG_MANA_3, SourceFile.ICONS), - MANA_4 (FSkinProp.IMG_MANA_4, SourceFile.ICONS), - MANA_5 (FSkinProp.IMG_MANA_5, SourceFile.ICONS), - MANA_6 (FSkinProp.IMG_MANA_6, SourceFile.ICONS), - MANA_7 (FSkinProp.IMG_MANA_7, SourceFile.ICONS), - MANA_8 (FSkinProp.IMG_MANA_8, SourceFile.ICONS), - MANA_9 (FSkinProp.IMG_MANA_9, SourceFile.ICONS), - MANA_10 (FSkinProp.IMG_MANA_10, SourceFile.ICONS), - MANA_11 (FSkinProp.IMG_MANA_11, SourceFile.ICONS), - MANA_12 (FSkinProp.IMG_MANA_12, SourceFile.ICONS), - MANA_13 (FSkinProp.IMG_MANA_13, SourceFile.ICONS), - MANA_14 (FSkinProp.IMG_MANA_14, SourceFile.ICONS), - MANA_15 (FSkinProp.IMG_MANA_15, SourceFile.ICONS), - MANA_16 (FSkinProp.IMG_MANA_16, SourceFile.ICONS), - MANA_17 (FSkinProp.IMG_MANA_17, SourceFile.ICONS), - MANA_18 (FSkinProp.IMG_MANA_18, SourceFile.ICONS), - MANA_19 (FSkinProp.IMG_MANA_19, SourceFile.ICONS), - MANA_20 (FSkinProp.IMG_MANA_20, SourceFile.ICONS), - MANA_X (FSkinProp.IMG_MANA_X, SourceFile.ICONS), - MANA_Y (FSkinProp.IMG_MANA_Y, SourceFile.ICONS), - MANA_Z (FSkinProp.IMG_MANA_Z, SourceFile.ICONS), + MANA_COLORLESS (FSkinProp.IMG_MANA_COLORLESS, SourceFile.MANAICONS), + MANA_B (FSkinProp.IMG_MANA_B, SourceFile.MANAICONS), + MANA_R (FSkinProp.IMG_MANA_R, SourceFile.MANAICONS), + MANA_U (FSkinProp.IMG_MANA_U, SourceFile.MANAICONS), + MANA_G (FSkinProp.IMG_MANA_G, SourceFile.MANAICONS), + MANA_W (FSkinProp.IMG_MANA_W, SourceFile.MANAICONS), + MANA_2B (FSkinProp.IMG_MANA_2B, SourceFile.MANAICONS), + MANA_2G (FSkinProp.IMG_MANA_2G, SourceFile.MANAICONS), + MANA_2R (FSkinProp.IMG_MANA_2R, SourceFile.MANAICONS), + MANA_2U (FSkinProp.IMG_MANA_2U, SourceFile.MANAICONS), + MANA_2W (FSkinProp.IMG_MANA_2W, SourceFile.MANAICONS), + MANA_HYBRID_BG (FSkinProp.IMG_MANA_HYBRID_BG, SourceFile.MANAICONS), + MANA_HYBRID_BR (FSkinProp.IMG_MANA_HYBRID_BR, SourceFile.MANAICONS), + MANA_HYBRID_GU (FSkinProp.IMG_MANA_HYBRID_GU, SourceFile.MANAICONS), + MANA_HYBRID_GW (FSkinProp.IMG_MANA_HYBRID_GW, SourceFile.MANAICONS), + MANA_HYBRID_RG (FSkinProp.IMG_MANA_HYBRID_RG, SourceFile.MANAICONS), + MANA_HYBRID_RW (FSkinProp.IMG_MANA_HYBRID_RW, SourceFile.MANAICONS), + MANA_HYBRID_UB (FSkinProp.IMG_MANA_HYBRID_UB, SourceFile.MANAICONS), + MANA_HYBRID_UR (FSkinProp.IMG_MANA_HYBRID_UR, SourceFile.MANAICONS), + MANA_HYBRID_WB (FSkinProp.IMG_MANA_HYBRID_WB, SourceFile.MANAICONS), + MANA_HYBRID_WU (FSkinProp.IMG_MANA_HYBRID_WU, SourceFile.MANAICONS), + MANA_PHRYX_U (FSkinProp.IMG_MANA_PHRYX_U, SourceFile.MANAICONS), + MANA_PHRYX_W (FSkinProp.IMG_MANA_PHRYX_W, SourceFile.MANAICONS), + 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_SNOW (FSkinProp.IMG_MANA_SNOW, SourceFile.MANAICONS), + MANA_0 (FSkinProp.IMG_MANA_0, SourceFile.MANAICONS), + MANA_1 (FSkinProp.IMG_MANA_1, SourceFile.MANAICONS), + MANA_2 (FSkinProp.IMG_MANA_2, SourceFile.MANAICONS), + MANA_3 (FSkinProp.IMG_MANA_3, SourceFile.MANAICONS), + MANA_4 (FSkinProp.IMG_MANA_4, SourceFile.MANAICONS), + MANA_5 (FSkinProp.IMG_MANA_5, SourceFile.MANAICONS), + MANA_6 (FSkinProp.IMG_MANA_6, SourceFile.MANAICONS), + MANA_7 (FSkinProp.IMG_MANA_7, SourceFile.MANAICONS), + MANA_8 (FSkinProp.IMG_MANA_8, SourceFile.MANAICONS), + MANA_9 (FSkinProp.IMG_MANA_9, SourceFile.MANAICONS), + MANA_10 (FSkinProp.IMG_MANA_10, SourceFile.MANAICONS), + MANA_11 (FSkinProp.IMG_MANA_11, SourceFile.MANAICONS), + MANA_12 (FSkinProp.IMG_MANA_12, SourceFile.MANAICONS), + MANA_13 (FSkinProp.IMG_MANA_13, SourceFile.MANAICONS), + MANA_14 (FSkinProp.IMG_MANA_14, SourceFile.MANAICONS), + MANA_15 (FSkinProp.IMG_MANA_15, SourceFile.MANAICONS), + MANA_16 (FSkinProp.IMG_MANA_16, SourceFile.MANAICONS), + MANA_17 (FSkinProp.IMG_MANA_17, SourceFile.MANAICONS), + MANA_18 (FSkinProp.IMG_MANA_18, SourceFile.MANAICONS), + MANA_19 (FSkinProp.IMG_MANA_19, SourceFile.MANAICONS), + MANA_20 (FSkinProp.IMG_MANA_20, SourceFile.MANAICONS), + MANA_X (FSkinProp.IMG_MANA_X, SourceFile.MANAICONS), + MANA_Y (FSkinProp.IMG_MANA_Y, SourceFile.MANAICONS), + MANA_Z (FSkinProp.IMG_MANA_Z, SourceFile.MANAICONS), //CMC ranges - CMC_LOW (FSkinProp.IMG_CMC_LOW, SourceFile.ICONS), - CMC_LOW_MID (FSkinProp.IMG_CMC_LOW_MID, SourceFile.ICONS), - CMC_MID_HIGH (FSkinProp.IMG_CMC_MID_HIGH, SourceFile.ICONS), - CMC_HIGH (FSkinProp.IMG_CMC_HIGH, SourceFile.ICONS), + CMC_LOW (FSkinProp.IMG_CMC_LOW, SourceFile.MANAICONS), + CMC_LOW_MID (FSkinProp.IMG_CMC_LOW_MID, SourceFile.MANAICONS), + CMC_MID_HIGH (FSkinProp.IMG_CMC_MID_HIGH, SourceFile.MANAICONS), + CMC_HIGH (FSkinProp.IMG_CMC_HIGH, SourceFile.MANAICONS), //Gameplay - TAP (FSkinProp.IMG_TAP, SourceFile.ICONS), - UNTAP (FSkinProp.IMG_UNTAP, SourceFile.ICONS), + TAP (FSkinProp.IMG_TAP, SourceFile.MANAICONS), + UNTAP (FSkinProp.IMG_UNTAP, SourceFile.MANAICONS), CHAOS (FSkinProp.IMG_CHAOS, SourceFile.ICONS), SLASH (FSkinProp.IMG_SLASH, SourceFile.ICONS), ATTACK (FSkinProp.IMG_ATTACK, SourceFile.ICONS), @@ -194,15 +195,15 @@ public enum FSkinImage implements FImage { //Editor images STAR_OUTINE (FSkinProp.IMG_STAR_OUTINE, SourceFile.ICONS), STAR_FILLED (FSkinProp.IMG_STAR_FILLED, SourceFile.ICONS), - ARTIFACT (FSkinProp.IMG_ARTIFACT, SourceFile.ICONS), - CREATURE (FSkinProp.IMG_CREATURE, SourceFile.ICONS), - ENCHANTMENT (FSkinProp.IMG_ENCHANTMENT, SourceFile.ICONS), - INSTANT (FSkinProp.IMG_INSTANT, SourceFile.ICONS), - LAND (FSkinProp.IMG_LAND, SourceFile.ICONS), + ARTIFACT (FSkinProp.IMG_ARTIFACT, SourceFile.MANAICONS), + CREATURE (FSkinProp.IMG_CREATURE, SourceFile.MANAICONS), + ENCHANTMENT (FSkinProp.IMG_ENCHANTMENT, SourceFile.MANAICONS), + INSTANT (FSkinProp.IMG_INSTANT, SourceFile.MANAICONS), + LAND (FSkinProp.IMG_LAND, SourceFile.MANAICONS), MULTI (FSkinProp.IMG_MULTI, SourceFile.ICONS), - PLANESWALKER (FSkinProp.IMG_PLANESWALKER, SourceFile.ICONS), + PLANESWALKER (FSkinProp.IMG_PLANESWALKER, SourceFile.MANAICONS), PACK (FSkinProp.IMG_PACK, SourceFile.ICONS), - SORCERY (FSkinProp.IMG_SORCERY, SourceFile.ICONS), + SORCERY (FSkinProp.IMG_SORCERY, SourceFile.MANAICONS), COMMANDER (FSkinProp.IMG_COMMANDER, SourceFile.ICONS), //Buttons @@ -259,12 +260,15 @@ public enum FSkinImage implements FImage { IMG_ABILITY_FIRST_STRIKE (FSkinProp.IMG_ABILITY_FIRST_STRIKE, SourceFile.ABILITIES), IMG_ABILITY_FEAR (FSkinProp.IMG_ABILITY_FEAR, SourceFile.ABILITIES), IMG_ABILITY_FLYING (FSkinProp.IMG_ABILITY_FLYING, SourceFile.ABILITIES), + IMG_ABILITY_HASTE (FSkinProp.IMG_ABILITY_HASTE, SourceFile.ABILITIES), IMG_ABILITY_HEXPROOF (FSkinProp.IMG_ABILITY_HEXPROOF, SourceFile.ABILITIES), + IMG_ABILITY_HORSEMANSHIP (FSkinProp.IMG_ABILITY_HORSEMANSHIP, SourceFile.ABILITIES), IMG_ABILITY_INDESTRUCTIBLE (FSkinProp.IMG_ABILITY_INDESTRUCTIBLE, SourceFile.ABILITIES), IMG_ABILITY_INTIMIDATE (FSkinProp.IMG_ABILITY_INTIMIDATE, SourceFile.ABILITIES), IMG_ABILITY_LIFELINK (FSkinProp.IMG_ABILITY_LIFELINK, SourceFile.ABILITIES), IMG_ABILITY_MENACE (FSkinProp.IMG_ABILITY_MENACE, SourceFile.ABILITIES), IMG_ABILITY_REACH (FSkinProp.IMG_ABILITY_REACH, SourceFile.ABILITIES), + IMG_ABILITY_SHADOW (FSkinProp.IMG_ABILITY_SHADOW, SourceFile.ABILITIES), IMG_ABILITY_SHROUD (FSkinProp.IMG_ABILITY_SHROUD, SourceFile.ABILITIES), IMG_ABILITY_TRAMPLE (FSkinProp.IMG_ABILITY_TRAMPLE, SourceFile.ABILITIES), IMG_ABILITY_VIGILANCE (FSkinProp.IMG_ABILITY_VIGILANCE, SourceFile.ABILITIES), @@ -304,6 +308,7 @@ public enum FSkinImage implements FImage { OLD_FOILS(ForgeConstants.SPRITE_OLD_FOILS_FILE), TROPHIES(ForgeConstants.SPRITE_TROPHIES_FILE), ABILITIES(ForgeConstants.SPRITE_ABILITY_FILE), + MANAICONS(ForgeConstants.SPRITE_MANAICONS_FILE), PLANAR_CONQUEST(ForgeConstants.SPRITE_PLANAR_CONQUEST_FILE); private final String filename; @@ -338,7 +343,12 @@ public enum FSkinImage implements FImage { if (texture == null) { if (preferredFile.exists()) { try { - texture = new Texture(preferredFile); + if (Forge.isTextureFilteringEnabled()){ + texture = new Texture(preferredFile, true); + texture.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear); + } else { + texture = new Texture(preferredFile); + } } catch (final Exception e) { System.err.println("Failed to load skin file: " + preferredFile); @@ -409,7 +419,12 @@ public enum FSkinImage implements FImage { if (texture == null) { if (defaultFile.exists()) { try { - texture = new Texture(defaultFile); + if (Forge.isTextureFilteringEnabled()){ + texture = new Texture(defaultFile, true); + texture.setFilter(Texture.TextureFilter.MipMapLinearLinear, Texture.TextureFilter.Linear); + } else { + texture = new Texture(defaultFile); + } } catch (final Exception e) { System.err.println("Failed to load skin file: " + defaultFile); diff --git a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java index 6882225190a..7a2213747a2 100644 --- a/forge-gui-mobile/src/forge/card/CardFaceSymbols.java +++ b/forge-gui-mobile/src/forge/card/CardFaceSymbols.java @@ -109,12 +109,15 @@ public class CardFaceSymbols { MANA_IMAGES.put("firststrike", FSkinImage.IMG_ABILITY_FIRST_STRIKE); MANA_IMAGES.put("fear", FSkinImage.IMG_ABILITY_FEAR); MANA_IMAGES.put("flying", FSkinImage.IMG_ABILITY_FLYING); + MANA_IMAGES.put("haste", FSkinImage.IMG_ABILITY_HASTE); MANA_IMAGES.put("hexproof", FSkinImage.IMG_ABILITY_HEXPROOF); + MANA_IMAGES.put("horsemanship", FSkinImage.IMG_ABILITY_HORSEMANSHIP); MANA_IMAGES.put("indestructible", FSkinImage.IMG_ABILITY_INDESTRUCTIBLE); MANA_IMAGES.put("intimidate", FSkinImage.IMG_ABILITY_INTIMIDATE); MANA_IMAGES.put("lifelink", FSkinImage.IMG_ABILITY_LIFELINK); MANA_IMAGES.put("menace", FSkinImage.IMG_ABILITY_MENACE); MANA_IMAGES.put("reach", FSkinImage.IMG_ABILITY_REACH); + MANA_IMAGES.put("shadow", FSkinImage.IMG_ABILITY_SHADOW); MANA_IMAGES.put("shroud", FSkinImage.IMG_ABILITY_SHROUD); MANA_IMAGES.put("trample", FSkinImage.IMG_ABILITY_TRAMPLE); MANA_IMAGES.put("vigilance", FSkinImage.IMG_ABILITY_VIGILANCE); diff --git a/forge-gui-mobile/src/forge/card/CardRenderer.java b/forge-gui-mobile/src/forge/card/CardRenderer.java index 22dfa2eaafd..6084ac0726f 100644 --- a/forge-gui-mobile/src/forge/card/CardRenderer.java +++ b/forge-gui-mobile/src/forge/card/CardRenderer.java @@ -562,6 +562,7 @@ public class CardRenderer { if (card.isToken()){ CardFaceSymbols.drawSymbol("token", g, abiX, abiY, abiScale, abiScale); abiY += abiSpace; + abiCount += 1; } if (card.getCurrentState().hasFlying()) { CardFaceSymbols.drawSymbol("flying", g, abiX, abiY, abiScale, abiScale); @@ -570,6 +571,13 @@ public class CardRenderer { abiY += abiSpace; abiCount += 1; } + if (card.getCurrentState().hasHaste()) { + CardFaceSymbols.drawSymbol("haste", g, abiX, abiY, abiScale, abiScale); + if (unselectable){ + g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} + abiY += abiSpace; + abiCount += 1; + } if (card.getCurrentState().hasDoubleStrike()) { CardFaceSymbols.drawSymbol("doublestrike", g, abiX, abiY, abiScale, abiScale); if (unselectable){ @@ -585,6 +593,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasDeathtouch()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("deathtouch", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -592,6 +601,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasIndestructible()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("indestructible", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -599,6 +609,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasMenace()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("menace", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -606,6 +617,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasFear()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("fear", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -613,13 +625,31 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasIntimidate()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("intimidate", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} abiY += abiSpace; abiCount += 1; } + if (card.getCurrentState().hasShadow()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } + CardFaceSymbols.drawSymbol("shadow", g, abiX, abiY, abiScale, abiScale); + if (unselectable){ + g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} + abiY += abiSpace; + abiCount += 1; + } + if (card.getCurrentState().hasHorsemanship()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } + CardFaceSymbols.drawSymbol("horsemanship", g, abiX, abiY, abiScale, abiScale); + if (unselectable){ + g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} + abiY += abiSpace; + abiCount += 1; + } if (card.getCurrentState().hasHexproof()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } if (!card.getCurrentState().getHexproofKey().isEmpty()){ String[] splitK = card.getCurrentState().getHexproofKey().split(":"); List listHK = Arrays.asList(splitK); @@ -681,6 +711,7 @@ public class CardRenderer { } } else if (card.getCurrentState().hasShroud()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("shroud", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -688,14 +719,15 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasVigilance()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("vigilance", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} abiY += abiSpace; abiCount += 1; } - //TODO: If ability icons is more than 7 where to put??? if (card.getCurrentState().hasTrample()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("trample", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -703,6 +735,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasReach()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("reach", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -710,6 +743,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasLifelink()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("lifelink", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -717,6 +751,7 @@ public class CardRenderer { abiCount += 1; } if (card.getCurrentState().hasDefender()) { + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } CardFaceSymbols.drawSymbol("defender", g, abiX, abiY, abiScale, abiScale); if (unselectable){ g.setAlphaComposite(0.6f); g.fillRect(Color.BLACK, abiX, abiY, abiScale, abiScale ); g.setAlphaComposite(oldAlpha);} @@ -725,6 +760,7 @@ public class CardRenderer { } //Protection Icons if (!card.getCurrentState().getProtectionKey().isEmpty()){ + if (abiCount > 5 ) { abiY = cy + (abiScale * (abiCount - 6)); abiX = cx + ((cw*2)/1.93f); } if (card.getCurrentState().getProtectionKey().contains("everything") || card.getCurrentState().getProtectionKey().contains("allcolors")) { CardFaceSymbols.drawSymbol("protectAll", g, abiX, abiY, abiScale, abiScale); if (unselectable){ diff --git a/forge-gui/res/skins/default/sprite_ability.png b/forge-gui/res/skins/default/sprite_ability.png index d945f610398..a42a706c686 100644 Binary files a/forge-gui/res/skins/default/sprite_ability.png and b/forge-gui/res/skins/default/sprite_ability.png differ diff --git a/forge-gui/res/skins/default/sprite_manaicons.png b/forge-gui/res/skins/default/sprite_manaicons.png new file mode 100644 index 00000000000..aba3574e8f2 Binary files /dev/null and b/forge-gui/res/skins/default/sprite_manaicons.png differ diff --git a/forge-gui/res/skins/default/sprite_planar_conquest.png b/forge-gui/res/skins/default/sprite_planar_conquest.png index 661905e24a8..b0aceea88a0 100644 Binary files a/forge-gui/res/skins/default/sprite_planar_conquest.png and b/forge-gui/res/skins/default/sprite_planar_conquest.png differ diff --git a/forge-gui/src/main/java/forge/assets/FSkinProp.java b/forge-gui/src/main/java/forge/assets/FSkinProp.java index aa46154ec12..0de1c4bc7ac 100644 --- a/forge-gui/src/main/java/forge/assets/FSkinProp.java +++ b/forge-gui/src/main/java/forge/assets/FSkinProp.java @@ -55,69 +55,69 @@ public enum FSkinProp { IMG_ZONE_POISON (new int[] {320, 80, 40, 40}, PropType.IMAGE), //mana images - IMG_MANA_B (new int[] {360, 160, 40, 40}, PropType.IMAGE), - IMG_MANA_R (new int[] {400, 160, 40, 40}, PropType.IMAGE), - IMG_MANA_COLORLESS (new int[] {440, 160, 40, 40}, PropType.IMAGE), - IMG_MANA_U (new int[] {360, 200, 40, 40}, PropType.IMAGE), - IMG_MANA_G (new int[] {400, 200, 40, 40}, PropType.IMAGE), - IMG_MANA_W (new int[] {440, 200, 40, 40}, PropType.IMAGE), - IMG_MANA_2B (new int[] {360, 400, 40, 40}, PropType.IMAGE), - IMG_MANA_2G (new int[] {400, 400, 40, 40}, PropType.IMAGE), - IMG_MANA_2R (new int[] {440, 400, 40, 40}, PropType.IMAGE), - IMG_MANA_2U (new int[] {440, 360, 40, 40}, PropType.IMAGE), - IMG_MANA_2W (new int[] {400, 360, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_BG (new int[] {360, 240, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_BR (new int[] {400, 240, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_GU (new int[] {360, 280, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_GW (new int[] {440, 280, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_RG (new int[] {360, 320, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_RW (new int[] {400, 320, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_UB (new int[] {440, 240, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_UR (new int[] {440, 320, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_WB (new int[] {400, 280, 40, 40}, PropType.IMAGE), - IMG_MANA_HYBRID_WU (new int[] {360, 360, 40, 40}, PropType.IMAGE), - IMG_MANA_PHRYX_U (new int[] {320, 200, 40, 40}, PropType.IMAGE), - IMG_MANA_PHRYX_W (new int[] {320, 240, 40, 40}, PropType.IMAGE), - IMG_MANA_PHRYX_R (new int[] {320, 280, 40, 40}, PropType.IMAGE), - IMG_MANA_PHRYX_G (new int[] {320, 320, 40, 40}, PropType.IMAGE), - IMG_MANA_PHRYX_B (new int[] {320, 360, 40, 40}, PropType.IMAGE), - IMG_MANA_SNOW (new int[] {320, 160, 40, 40}, PropType.IMAGE), + IMG_MANA_B (new int[] {166, 2, 80, 80}, PropType.MANAICONS), + IMG_MANA_R (new int[] {330, 2, 80, 80}, PropType.MANAICONS), + IMG_MANA_COLORLESS (new int[] {248, 2, 80, 80}, PropType.MANAICONS), + IMG_MANA_U (new int[] {330, 84, 80, 80}, PropType.MANAICONS), + IMG_MANA_G (new int[] {166, 84, 80, 80}, PropType.MANAICONS), + IMG_MANA_W (new int[] {412, 84, 80, 80}, PropType.MANAICONS), + IMG_MANA_2B (new int[] {166, 494, 80, 80}, PropType.MANAICONS), + IMG_MANA_2G (new int[] {248, 494, 80, 80}, PropType.MANAICONS), + IMG_MANA_2R (new int[] {330, 494, 80, 80}, PropType.MANAICONS), + IMG_MANA_2U (new int[] {412, 494, 80, 80}, PropType.MANAICONS), + IMG_MANA_2W (new int[] {166, 576, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_BG (new int[] {166, 166, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_BR (new int[] {248, 166, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_GU (new int[] {166, 248, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_GW (new int[] {248, 248, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_RG (new int[] {166, 330, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_RW (new int[] {248, 330, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_UB (new int[] {330, 330, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_UR (new int[] {412, 330, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_WB (new int[] {330, 412, 80, 80}, PropType.MANAICONS), + IMG_MANA_HYBRID_WU (new int[] {412, 412, 80, 80}, PropType.MANAICONS), + IMG_MANA_PHRYX_U (new int[] {330, 248, 80, 80}, PropType.MANAICONS), + IMG_MANA_PHRYX_W (new int[] {412, 248, 80, 80}, PropType.MANAICONS), + 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_SNOW (new int[] {412, 2, 80, 80}, PropType.MANAICONS), //generic mana images - IMG_MANA_0 (new int[] {640, 200, 20, 20}, PropType.IMAGE), - IMG_MANA_1 (new int[] {660, 200, 20, 20}, PropType.IMAGE), - IMG_MANA_2 (new int[] {640, 220, 20, 20}, PropType.IMAGE), - IMG_MANA_3 (new int[] {660, 220, 20, 20}, PropType.IMAGE), - IMG_MANA_4 (new int[] {640, 240, 20, 20}, PropType.IMAGE), - IMG_MANA_5 (new int[] {660, 240, 20, 20}, PropType.IMAGE), - IMG_MANA_6 (new int[] {640, 260, 20, 20}, PropType.IMAGE), - IMG_MANA_7 (new int[] {660, 260, 20, 20}, PropType.IMAGE), - IMG_MANA_8 (new int[] {640, 280, 20, 20}, PropType.IMAGE), - IMG_MANA_9 (new int[] {660, 280, 20, 20}, PropType.IMAGE), - IMG_MANA_10 (new int[] {640, 300, 20, 20}, PropType.IMAGE), - IMG_MANA_11 (new int[] {660, 300, 20, 20}, PropType.IMAGE), - IMG_MANA_12 (new int[] {640, 320, 20, 20}, PropType.IMAGE), - IMG_MANA_13 (new int[] {660, 320, 20, 20}, PropType.IMAGE), - IMG_MANA_14 (new int[] {640, 340, 20, 20}, PropType.IMAGE), - IMG_MANA_15 (new int[] {660, 340, 20, 20}, PropType.IMAGE), - IMG_MANA_16 (new int[] {640, 360, 20, 20}, PropType.IMAGE), - IMG_MANA_17 (new int[] {660, 360, 20, 20}, PropType.IMAGE), - IMG_MANA_18 (new int[] {640, 380, 20, 20}, PropType.IMAGE), - IMG_MANA_19 (new int[] {660, 380, 20, 20}, PropType.IMAGE), - IMG_MANA_20 (new int[] {640, 400, 20, 20}, PropType.IMAGE), - IMG_MANA_X (new int[] {660, 400, 20, 20}, PropType.IMAGE), - IMG_MANA_Y (new int[] {640, 420, 20, 20}, PropType.IMAGE), - IMG_MANA_Z (new int[] {660, 420, 20, 20}, PropType.IMAGE), + IMG_MANA_0 (new int[] {2, 2, 80, 80}, PropType.MANAICONS), + IMG_MANA_1 (new int[] {84, 2, 80, 80}, PropType.MANAICONS), + IMG_MANA_2 (new int[] {2, 84, 80, 80}, PropType.MANAICONS), + IMG_MANA_3 (new int[] {84, 84, 80, 80}, PropType.MANAICONS), + IMG_MANA_4 (new int[] {2, 166, 80, 80}, PropType.MANAICONS), + IMG_MANA_5 (new int[] {84, 166, 80, 80}, PropType.MANAICONS), + IMG_MANA_6 (new int[] {2, 248, 80, 80}, PropType.MANAICONS), + IMG_MANA_7 (new int[] {84, 248, 80, 80}, PropType.MANAICONS), + IMG_MANA_8 (new int[] {2, 330, 80, 80}, PropType.MANAICONS), + IMG_MANA_9 (new int[] {84, 330, 80, 80}, PropType.MANAICONS), + IMG_MANA_10 (new int[] {2, 412, 80, 80}, PropType.MANAICONS), + IMG_MANA_11 (new int[] {84, 412, 80, 80}, PropType.MANAICONS), + IMG_MANA_12 (new int[] {2, 494, 80, 80}, PropType.MANAICONS), + IMG_MANA_13 (new int[] {84, 494, 80, 80}, PropType.MANAICONS), + IMG_MANA_14 (new int[] {2, 576, 80, 80}, PropType.MANAICONS), + IMG_MANA_15 (new int[] {84, 576, 80, 80}, PropType.MANAICONS), + IMG_MANA_16 (new int[] {2, 658, 80, 80}, PropType.MANAICONS), + IMG_MANA_17 (new int[] {84, 658, 80, 80}, PropType.MANAICONS), + IMG_MANA_18 (new int[] {166, 658, 80, 80}, PropType.MANAICONS), + IMG_MANA_19 (new int[] {248, 658, 80, 80}, PropType.MANAICONS), + IMG_MANA_20 (new int[] {330, 658, 80, 80}, PropType.MANAICONS), + IMG_MANA_X (new int[] {248, 576, 80, 80}, PropType.MANAICONS), + IMG_MANA_Y (new int[] {330, 576, 80, 80}, PropType.MANAICONS), + IMG_MANA_Z (new int[] {412, 576, 80, 80}, PropType.MANAICONS), //combination images for CMC ranges - IMG_CMC_LOW (new int[] {640, 200, 40, 40}, PropType.IMAGE), - IMG_CMC_LOW_MID (new int[] {640, 220, 40, 40}, PropType.IMAGE), - IMG_CMC_MID_HIGH (new int[] {640, 240, 40, 40}, PropType.IMAGE), - IMG_CMC_HIGH (new int[] {640, 260, 40, 40}, PropType.IMAGE), + IMG_CMC_LOW (new int[] {2, 2, 160, 160}, PropType.MANAICONS), + IMG_CMC_LOW_MID (new int[] {2, 84, 160, 160}, PropType.MANAICONS), + IMG_CMC_MID_HIGH (new int[] {2, 166, 160, 160}, PropType.MANAICONS), + IMG_CMC_HIGH (new int[] {2, 248, 160, 160}, PropType.MANAICONS), //gameplay images - IMG_TAP (new int[] {640, 440, 20, 20}, PropType.IMAGE), - IMG_UNTAP (new int[] {660, 440, 20, 20}, PropType.IMAGE), + IMG_TAP (new int[] {166, 412, 80, 80}, PropType.MANAICONS), + IMG_UNTAP (new int[] {248, 412, 80, 80}, PropType.MANAICONS), IMG_CHAOS (new int[] {320, 400, 40, 40}, PropType.IMAGE), IMG_SLASH (new int[] {660, 400, 10, 13}, PropType.IMAGE), IMG_ATTACK (new int[] {160, 320, 80, 80, 32, 32}, PropType.IMAGE), @@ -231,15 +231,15 @@ public enum FSkinProp { //editor images IMG_STAR_OUTINE (new int[] {640, 460, 20, 20}, PropType.IMAGE), IMG_STAR_FILLED (new int[] {660, 460, 20, 20}, PropType.IMAGE), - IMG_ARTIFACT (new int[] {280, 720, 40, 40}, PropType.IMAGE), - IMG_CREATURE (new int[] {240, 720, 40, 40}, PropType.IMAGE), - IMG_ENCHANTMENT (new int[] {320, 720, 40, 40}, PropType.IMAGE), - IMG_INSTANT (new int[] {360, 720, 40, 40}, PropType.IMAGE), - IMG_LAND (new int[] {120, 720, 40, 40}, PropType.IMAGE), + IMG_ARTIFACT (new int[] {412, 658, 80, 80}, PropType.MANAICONS), + IMG_CREATURE (new int[] {2, 740, 80, 80}, PropType.MANAICONS), + IMG_ENCHANTMENT (new int[] {84, 740, 80, 80}, PropType.MANAICONS), + IMG_INSTANT (new int[] {166, 740, 80, 80}, PropType.MANAICONS), + IMG_LAND (new int[] {248, 740, 80, 80}, PropType.MANAICONS), IMG_MULTI (new int[] {80, 720, 40, 40}, PropType.IMAGE), - IMG_PLANESWALKER (new int[] {200, 720, 40, 40}, PropType.IMAGE), + IMG_PLANESWALKER (new int[] {330, 740, 80, 80}, PropType.MANAICONS), IMG_PACK (new int[] {80, 760, 40, 40}, PropType.IMAGE), - IMG_SORCERY (new int[] {160, 720, 40, 40}, PropType.IMAGE), + IMG_SORCERY (new int[] {412, 740, 80, 80}, PropType.MANAICONS), IMG_COMMANDER (new int[] {120, 760, 40, 40}, PropType.IMAGE), //achievement trophies and shelf @@ -253,14 +253,14 @@ public enum FSkinProp { IMG_TROPHY_SHELF (new int[] {0, 223, 798, 257}, PropType.TROPHY), //planar conquest images - IMG_PLANE_MONITOR (new int[] {0, 0, 443, 315}, PropType.PLANAR_CONQUEST), - IMG_AETHER_SHARD (new int[] {0, 315, 120, 120}, PropType.PLANAR_CONQUEST), - IMG_MULTIVERSE (new int[] {125, 320, 110, 110}, PropType.PLANAR_CONQUEST), - IMG_SPELLBOOK (new int[] {240, 315, 120, 120}, PropType.PLANAR_CONQUEST), - IMG_PW_BADGE_COMMON (new int[] {443, 0, 110, 110}, PropType.PLANAR_CONQUEST), - IMG_PW_BADGE_UNCOMMON (new int[] {443, 110, 110, 110}, PropType.PLANAR_CONQUEST), - IMG_PW_BADGE_RARE (new int[] {443, 220, 110, 110}, PropType.PLANAR_CONQUEST), - IMG_PW_BADGE_MYTHIC (new int[] {443, 330, 110, 110}, PropType.PLANAR_CONQUEST), + IMG_PLANE_MONITOR (new int[] {2, 466, 900, 650}, PropType.PLANAR_CONQUEST), + IMG_AETHER_SHARD (new int[] {244, 224, 240, 240}, PropType.PLANAR_CONQUEST), + IMG_MULTIVERSE (new int[] {486, 244, 220, 220}, PropType.PLANAR_CONQUEST), + IMG_SPELLBOOK (new int[] {2, 224, 240, 240}, PropType.PLANAR_CONQUEST), + IMG_PW_BADGE_COMMON (new int[] {224, 2, 220, 220}, PropType.PLANAR_CONQUEST), + IMG_PW_BADGE_UNCOMMON (new int[] {668, 22, 220, 220}, PropType.PLANAR_CONQUEST), + IMG_PW_BADGE_RARE (new int[] {2, 2, 220, 220}, PropType.PLANAR_CONQUEST), + IMG_PW_BADGE_MYTHIC (new int[] {446, 2, 220, 220}, PropType.PLANAR_CONQUEST), //button images IMG_BTN_START_UP (new int[] {480, 200, 160, 80}, PropType.ICON), @@ -300,12 +300,15 @@ public enum FSkinProp { IMG_ABILITY_FIRST_STRIKE (new int[] {248, 2, 80, 80}, PropType.ABILITY), IMG_ABILITY_FEAR (new int[] {84, 412, 80, 80}, PropType.ABILITY), IMG_ABILITY_FLYING (new int[] {330, 2, 80, 80}, PropType.ABILITY), + IMG_ABILITY_HASTE (new int[] {412, 494, 80, 80}, PropType.ABILITY), IMG_ABILITY_HEXPROOF (new int[] {412, 2, 80, 80}, PropType.ABILITY), + IMG_ABILITY_HORSEMANSHIP (new int[] {2, 576, 80, 80}, PropType.ABILITY), IMG_ABILITY_INDESTRUCTIBLE (new int[] {2, 84, 80, 80}, PropType.ABILITY), IMG_ABILITY_INTIMIDATE (new int[] {166, 412, 80, 80}, PropType.ABILITY), IMG_ABILITY_LIFELINK (new int[] {84, 84, 80, 80}, PropType.ABILITY), IMG_ABILITY_MENACE (new int[] {166, 84, 80, 80}, PropType.ABILITY), IMG_ABILITY_REACH (new int[] {248, 330, 80, 80}, PropType.ABILITY), + IMG_ABILITY_SHADOW (new int[] {84, 576, 80, 80}, PropType.ABILITY), IMG_ABILITY_SHROUD (new int[] {330, 330, 80, 80}, PropType.ABILITY), IMG_ABILITY_TRAMPLE (new int[] {412, 330, 80, 80}, PropType.ABILITY), IMG_ABILITY_VIGILANCE (new int[] {2, 412, 80, 80}, PropType.ABILITY), @@ -371,6 +374,7 @@ public enum FSkinProp { OLD_FOIL, TROPHY, ABILITY, + MANAICONS, PLANAR_CONQUEST, FAVICON } diff --git a/forge-gui/src/main/java/forge/properties/ForgeConstants.java b/forge-gui/src/main/java/forge/properties/ForgeConstants.java index 403be511384..11c582e9de1 100644 --- a/forge-gui/src/main/java/forge/properties/ForgeConstants.java +++ b/forge-gui/src/main/java/forge/properties/ForgeConstants.java @@ -94,6 +94,7 @@ public final class ForgeConstants { public static final String SPRITE_OLD_FOILS_FILE = "sprite_old_foils.png"; public static final String SPRITE_TROPHIES_FILE = "sprite_trophies.png"; public static final String SPRITE_ABILITY_FILE = "sprite_ability.png"; + public static final String SPRITE_MANAICONS_FILE = "sprite_manaicons.png"; public static final String SPRITE_AVATARS_FILE = "sprite_avatars.png"; public static final String SPRITE_FAVICONS_FILE = "sprite_favicons.png"; public static final String SPRITE_PLANAR_CONQUEST_FILE = "sprite_planar_conquest.png";