diff --git a/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java b/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java index d04d889a77d..df0d987c483 100644 --- a/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java +++ b/forge-gui-desktop/src/main/java/forge/toolbox/special/PlayerDetailsPanel.java @@ -69,22 +69,7 @@ public class PlayerDetailsPanel extends JPanel { } public static FSkinProp iconFromZone(ZoneType zoneType) { - switch (zoneType) { - case Hand: return FSkinProp.IMG_ZONE_HAND; - case Library: return FSkinProp.IMG_ZONE_LIBRARY; - case Graveyard: return FSkinProp.IMG_ZONE_GRAVEYARD; - case Exile: return FSkinProp.IMG_ZONE_EXILE; - case Sideboard: return FSkinProp.IMG_ZONE_SIDEBOARD; - case Flashback: return FSkinProp.IMG_ZONE_FLASHBACK; - case Command: return FSkinProp.IMG_ZONE_COMMAND; //IMG_PLANESWALKER - case PlanarDeck: return FSkinProp.IMG_ZONE_PLANAR; - case SchemeDeck: return FSkinProp.IMG_ZONE_SCHEME; - case AttractionDeck: return FSkinProp.IMG_ZONE_ATTRACTION; - case ContraptionDeck: return FSkinProp.IMG_ZONE_CONTRAPTION; - case Ante: return FSkinProp.IMG_ZONE_ANTE; - case Junkyard: return FSkinProp.IMG_ZONE_JUNKYARD; - default: return FSkinProp.IMG_HDZONE_LIBRARY; - } + return FSkinProp.iconFromZone(zoneType, false); } /** Adds various labels to pool area JPanel container. */ diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index eff2481bff0..0307b1a9f7d 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -30,6 +30,7 @@ import forge.itemmanager.ItemManager.ContextMenuBuilder; import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.filters.ItemFilter; import forge.localinstance.properties.ForgePreferences.FPref; +import forge.localinstance.skin.FSkinProp; import forge.menu.*; import forge.model.FModel; import forge.screens.FScreen; @@ -409,18 +410,7 @@ public class FDeckEditor extends TabPageScreen { } public static FImage iconFromDeckSection(DeckSection deckSection) { - return switch (deckSection) { - case Main -> MAIN_DECK_ICON; - case Sideboard -> SIDEBOARD_ICON; - case Commander -> FSkinImage.COMMAND; - case Avatar -> FSkinImage.AVATAR; - case Conspiracy -> FSkinImage.CONSPIRACY; - case Planes -> FSkinImage.PLANAR; - case Schemes -> FSkinImage.SCHEME; - case Attractions -> FSkinImage.ATTRACTION; - case Contraptions -> FSkinImage.CONTRAPTION; - default -> FSkinImage.HDSIDEBOARD; - }; + return FSkin.getImages().get(FSkinProp.iconFromDeckSection(deckSection, Forge.hdbuttons)); } private final DeckEditorConfig editorConfig; diff --git a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java index 477ad165d8c..b80b3ce3930 100644 --- a/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java +++ b/forge-gui-mobile/src/forge/screens/match/views/VPlayerPanel.java @@ -9,6 +9,7 @@ import com.badlogic.gdx.utils.Align; import forge.Forge; import forge.Graphics; +import forge.assets.FSkin; import forge.assets.FSkinColor; import forge.assets.FSkinColor.Colors; import forge.assets.FSkinFont; @@ -19,6 +20,7 @@ import forge.game.card.CounterEnumType; import forge.game.player.PlayerView; import forge.game.zone.ZoneType; import forge.localinstance.properties.ForgePreferences.FPref; +import forge.localinstance.skin.FSkinProp; import forge.menu.FMenuBar; import forge.menu.FMenuItem; import forge.menu.FPopupMenu; @@ -139,23 +141,8 @@ public class VPlayerPanel extends FContainer { tabs.add(zoneTab); } - public static FSkinImage iconFromZone(ZoneType zoneType) { - return switch (zoneType) { - case Hand -> Forge.hdbuttons ? FSkinImage.HDHAND : FSkinImage.HAND; - case Library -> Forge.hdbuttons ? FSkinImage.HDLIBRARY : FSkinImage.LIBRARY; - case Graveyard -> Forge.hdbuttons ? FSkinImage.HDGRAVEYARD : FSkinImage.GRAVEYARD; - case Exile -> Forge.hdbuttons ? FSkinImage.HDEXILE : FSkinImage.EXILE; - case Sideboard -> Forge.hdbuttons ? FSkinImage.HDSIDEBOARD : FSkinImage.SIDEBOARD; - case Flashback -> Forge.hdbuttons ? FSkinImage.HDFLASHBACK : FSkinImage.FLASHBACK; - case Command -> FSkinImage.COMMAND; - case PlanarDeck -> FSkinImage.PLANAR; - case SchemeDeck -> FSkinImage.SCHEME; - case AttractionDeck -> FSkinImage.ATTRACTION; - case ContraptionDeck -> FSkinImage.CONTRAPTION; - case Ante -> FSkinImage.ANTE; - case Junkyard -> FSkinImage.JUNKYARD; - default -> FSkinImage.HDLIBRARY; - }; + public static FSkinImageInterface iconFromZone(ZoneType zoneType) { + return FSkin.getImages().get(FSkinProp.iconFromZone(zoneType, Forge.hdbuttons)); } public Iterable getTabs() { @@ -308,6 +295,7 @@ public class VPlayerPanel extends FContainer { tabManaPool.update(); } + @SuppressWarnings("incomplete-switch") public void updateZone(ZoneType zoneType) { if (zoneType == ZoneType.Battlefield) { field.update(true); 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 99d9fb683ce..66cf630f5a6 100644 --- a/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java +++ b/forge-gui/src/main/java/forge/localinstance/skin/FSkinProp.java @@ -22,7 +22,10 @@ import java.util.Map; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; +import forge.card.MagicColor; import forge.card.mana.ManaCostShard; +import forge.deck.DeckSection; +import forge.game.zone.ZoneType; import forge.localinstance.properties.ForgeConstants; /** @@ -705,6 +708,51 @@ public enum FSkinProp { MANA_IMG.put("AL6OFF", FSkinProp.IMG_ATTR_6_OFF); } + public static FSkinProp iconFromColor(MagicColor.Color color) { + return switch (color) { + case WHITE -> IMG_MANA_W; + case BLUE -> IMG_MANA_U; + case BLACK -> IMG_MANA_B; + case RED -> IMG_MANA_R; + case GREEN -> IMG_MANA_G; + case COLORLESS -> IMG_MANA_COLORLESS; + }; + } + + public static FSkinProp iconFromZone(ZoneType zoneType, boolean hdbuttons) { + return switch (zoneType) { + case Hand -> hdbuttons ? IMG_HDZONE_HAND : IMG_ZONE_HAND; + case Library -> hdbuttons ? IMG_HDZONE_LIBRARY : IMG_ZONE_LIBRARY; + case Graveyard -> hdbuttons ? IMG_HDZONE_GRAVEYARD : IMG_ZONE_GRAVEYARD; + case Exile -> hdbuttons ? IMG_HDZONE_EXILE : IMG_ZONE_EXILE; + case Sideboard -> hdbuttons ? IMG_HDZONE_SIDEBOARD : IMG_ZONE_SIDEBOARD; + case Flashback -> hdbuttons ? IMG_HDZONE_FLASHBACK : IMG_ZONE_FLASHBACK; + case Command -> IMG_ZONE_COMMAND; //IMG_PLANESWALKER + case PlanarDeck -> IMG_ZONE_PLANAR; + case SchemeDeck -> IMG_ZONE_SCHEME; + case AttractionDeck -> IMG_ZONE_ATTRACTION; + case ContraptionDeck -> IMG_ZONE_CONTRAPTION; + case Ante -> IMG_ZONE_ANTE; + case Junkyard ->IMG_ZONE_JUNKYARD; + default -> IMG_HDZONE_LIBRARY; + }; + } + + public static FSkinProp iconFromDeckSection(DeckSection deckSection, boolean hdbuttons) { + return switch (deckSection) { + case Main -> hdbuttons ? IMG_HDZONE_LIBRARY : ICO_DECKLIST; + case Sideboard -> hdbuttons ? IMG_HDZONE_SIDEBOARD : IMG_ZONE_SIDEBOARD; + case Commander -> IMG_ZONE_COMMAND; + case Avatar -> IMG_ZONE_AVATAR; + case Conspiracy -> IMG_ZONE_CONSPIRACY; + case Planes -> IMG_ZONE_PLANAR; + case Schemes -> IMG_ZONE_SCHEME; + case Attractions -> IMG_ZONE_ATTRACTION; + case Contraptions -> IMG_ZONE_CONTRAPTION; + default -> IMG_HDZONE_SIDEBOARD; + }; + } + public enum PropType { BACKGROUND(null), COLOR(null),