From fe2acaef1bed5c66da8b8a48c1454ab6a7d2827a Mon Sep 17 00:00:00 2001 From: teferi Date: Sat, 1 Mar 2014 22:50:09 +0000 Subject: [PATCH] moving res content to new forge resources module --- .gitattributes | 3 +- .gitignore | 1 + .../src/main/java/forge/ai/AiProfileUtil.java | 2 +- forge-bundle/pom.xml | 24 +++++++- forge-bundle/src/main/conf/windows-linux.xml | 17 +++--- forge-core/pom.xml | 5 ++ .../src/main/java/forge/StaticData.java | 2 +- forge-gui/pom.xml | 5 ++ forge-gui/src/main/java/forge/Singletons.java | 2 +- .../gui/deckchooser/GenerateThemeDeck.java | 5 +- .../home/quest/QuestPreferencesHandler.java | 9 +-- .../main/java/forge/gui/menus/HelpMenu.java | 3 +- .../main/java/forge/gui/toolbox/FSkin.java | 2 +- .../main/java/forge/limited/BoosterDraft.java | 2 +- .../limited/SealedCardPoolGenerator.java | 5 +- .../src/main/java/forge/model/FModel.java | 10 +-- .../src/main/java/forge/model/MetaSet.java | 5 +- .../java/forge/properties/NewConstants.java | 9 ++- .../java/forge/quest/QuestController.java | 4 +- .../src/main/java/forge/sound/IAudioClip.java | 4 +- forge-gui/src/main/java/forge/view/FView.java | 8 +-- .../util/CardDatabaseHelper.java | 2 +- .../test/java/forge/item/DeckHintsTest.java | 3 +- forge-m-base/src/main/java/forge/Forge.java | 2 +- forge-resources/pom.xml | 61 +++++++++++++++++++ .../src/main/conf/cardsfolder.xml | 2 +- pom.xml | 6 ++ 27 files changed, 157 insertions(+), 46 deletions(-) create mode 100644 forge-resources/pom.xml rename {forge-bundle => forge-resources}/src/main/conf/cardsfolder.xml (73%) diff --git a/.gitattributes b/.gitattributes index 8e1d2cb21a8..c5fe7feb74a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -139,7 +139,6 @@ forge-ai/src/main/java/forge/ai/ability/UntapAi.java -text forge-ai/src/main/java/forge/ai/ability/UntapAllAi.java -text forge-ai/src/main/java/forge/ai/ability/ZoneExchangeAi.java -text forge-bundle/pom.xml svneol=native#text/xml -forge-bundle/src/main/conf/cardsfolder.xml svneol=native#text/xml forge-bundle/src/main/conf/forge.ico -text svneol=unset#image/ico forge-bundle/src/main/conf/windows-linux.xml svneol=native#text/xml forge-bundle/src/main/resources/CHANGES.txt -text @@ -16064,4 +16063,6 @@ forge-net/src/main/java/forge/net/protocol/toserver/EchoPacketSrv.java -text forge-net/src/main/java/forge/net/protocol/toserver/IPacketSrv.java -text forge-net/src/main/java/forge/net/protocol/toserver/IncorrectPacketSrv.java -text forge-net/src/main/java/forge/net/protocol/toserver/package-info.java -text +forge-resources/pom.xml -text +forge-resources/src/main/conf/cardsfolder.xml svneol=native#text/xml /pom.xml svneol=native#text/xml diff --git a/.gitignore b/.gitignore index a46f475e1dd..c755952a094 100644 --- a/.gitignore +++ b/.gitignore @@ -99,6 +99,7 @@ forge-m-desktop/libs forge-m-desktop/res forge-m-desktop/target forge-net/target +forge-resources/target /forge.profile.properties /nbactions.xml /pom.xml.next diff --git a/forge-ai/src/main/java/forge/ai/AiProfileUtil.java b/forge-ai/src/main/java/forge/ai/AiProfileUtil.java index dd2b5372ddb..8d64cb05199 100644 --- a/forge-ai/src/main/java/forge/ai/AiProfileUtil.java +++ b/forge-ai/src/main/java/forge/ai/AiProfileUtil.java @@ -40,7 +40,7 @@ import java.util.Map; public class AiProfileUtil { private static Map> loadedProfiles = new HashMap>(); - private static final String AI_PROFILE_DIR = "res/ai"; + private static final String AI_PROFILE_DIR = AiProfileUtil.class.getResource("/").getFile()+"ai"; private static final String AI_PROFILE_EXT = ".ai"; public static final String AI_PROFILE_RANDOM_MATCH = "* Random (Match) *"; diff --git a/forge-bundle/pom.xml b/forge-bundle/pom.xml index cec6b69acce..67f1190bf45 100644 --- a/forge-bundle/pom.xml +++ b/forge-bundle/pom.xml @@ -17,6 +17,11 @@ forge forge-gui + + + forge + forge-resources + provided @@ -34,6 +39,21 @@ + org.apache.maven.plugins maven-assembly-plugin @@ -58,7 +78,7 @@ - + windows-linux package diff --git a/forge-bundle/src/main/conf/windows-linux.xml b/forge-bundle/src/main/conf/windows-linux.xml index 38b91d1e17c..f67e575bb5a 100644 --- a/forge-bundle/src/main/conf/windows-linux.xml +++ b/forge-bundle/src/main/conf/windows-linux.xml @@ -4,6 +4,13 @@ tar.bz2 false + + + provided + true + /res + + ${project.basedir}/src/main/resources @@ -18,25 +25,19 @@ ${project.basedir}/src/main/resources - res/cardsfolder/** + forge.sh forge.command forge.bat / - - ${project.build.directory} - - cardsfolder.zip - - /res/cardsfolder - ${project.build.directory} / forge.exe + ${project.build.finalName}-jar-with-dependencies.jar diff --git a/forge-core/pom.xml b/forge-core/pom.xml index 3b2a674e4d1..d80e9085a3c 100644 --- a/forge-core/pom.xml +++ b/forge-core/pom.xml @@ -13,6 +13,11 @@ Forge Core + + forge + forge-resources + runtime + com.google.guava guava diff --git a/forge-core/src/main/java/forge/StaticData.java b/forge-core/src/main/java/forge/StaticData.java index 5512ce13330..ae60e4e0161 100644 --- a/forge-core/src/main/java/forge/StaticData.java +++ b/forge-core/src/main/java/forge/StaticData.java @@ -56,7 +56,7 @@ public class StaticData { this.boosters = new StorageBase("Boosters", editions.getBoosterGenerator()); this.specialBoosters = new StorageBase("Special boosters", new SealedProduct.Template.Reader(new File(blockDataFolder, "boosters-special.txt"))); this.tournaments = new StorageBase("Starter sets", new SealedProduct.Template.Reader(new File(blockDataFolder, "starters.txt"))); - this.fatPacks = new StorageBase("Fat packs", new FatPack.Template.Reader("res/blockdata/fatpacks.txt")); + this.fatPacks = new StorageBase("Fat packs", new FatPack.Template.Reader(StaticData.class.getResource("/").getFile()+"/blockdata/fatpacks.txt")); this.printSheets = new StorageBase("Special print runs", new PrintSheet.Reader(new File(blockDataFolder, "printsheets.txt"))); } diff --git a/forge-gui/pom.xml b/forge-gui/pom.xml index e46e65cbcff..63856ba1c1c 100644 --- a/forge-gui/pom.xml +++ b/forge-gui/pom.xml @@ -66,6 +66,11 @@ forge forge-net + + + forge + forge-resources + runtime com.miglayout diff --git a/forge-gui/src/main/java/forge/Singletons.java b/forge-gui/src/main/java/forge/Singletons.java index 3562f6710d8..31f43dc438c 100644 --- a/forge-gui/src/main/java/forge/Singletons.java +++ b/forge-gui/src/main/java/forge/Singletons.java @@ -77,7 +77,7 @@ public final class Singletons { // Loads all cards (using progress bar). final CardStorageReader reader = new CardStorageReader(NewConstants.CARD_DATA_DIR, progressBarBridge, CardScriptInfo.readerObserver); - magicDb = new StaticData(reader, "res/editions", "res/blockdata"); + magicDb = new StaticData(reader, NewConstants.EDITIONS_DIR, NewConstants.BLOCKDATA_DIR); model = FModel.getInstance(withUi); if (withUi) { diff --git a/forge-gui/src/main/java/forge/gui/deckchooser/GenerateThemeDeck.java b/forge-gui/src/main/java/forge/gui/deckchooser/GenerateThemeDeck.java index a7916898215..7a816051b29 100644 --- a/forge-gui/src/main/java/forge/gui/deckchooser/GenerateThemeDeck.java +++ b/forge-gui/src/main/java/forge/gui/deckchooser/GenerateThemeDeck.java @@ -21,6 +21,7 @@ import forge.Singletons; import forge.deck.CardPool; import forge.deck.generation.DeckGeneratorBase; import forge.error.BugReporter; +import forge.properties.NewConstants; import forge.util.FileUtil; import forge.util.MyRandom; @@ -61,7 +62,7 @@ public class GenerateThemeDeck extends DeckGeneratorBase { public static final ArrayList getThemeNames() { final ArrayList ltNames = new ArrayList(); - final File file = new File("res/quest/themes/"); + final File file = new File(NewConstants._QUEST_DIR+"themes/"); if (!file.exists()) { throw new RuntimeException("GenerateThemeDeck : getThemeNames error -- file not found -- filename is " @@ -98,7 +99,7 @@ public class GenerateThemeDeck extends DeckGeneratorBase { String s = ""; // read theme file - final String tFileName = "res/quest/themes/" + themeName + ".thm"; + final String tFileName = NewConstants._QUEST_DIR+"themes/" + themeName + ".thm"; List lines = FileUtil.readFile(tFileName); final List groups = readGroups(lines); diff --git a/forge-gui/src/main/java/forge/gui/home/quest/QuestPreferencesHandler.java b/forge-gui/src/main/java/forge/gui/home/quest/QuestPreferencesHandler.java index 05e62394541..6fb10fcb0a3 100644 --- a/forge-gui/src/main/java/forge/gui/home/quest/QuestPreferencesHandler.java +++ b/forge-gui/src/main/java/forge/gui/home/quest/QuestPreferencesHandler.java @@ -5,6 +5,7 @@ import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin.SkinnedPanel; import forge.gui.toolbox.FSkin.SkinnedTextField; +import forge.properties.NewConstants; import forge.quest.data.QuestPreferences; import forge.quest.data.QuestPreferences.QPref; import net.miginfocom.swing.MigLayout; @@ -61,7 +62,7 @@ public class QuestPreferencesHandler extends SkinnedPanel { pnlRewards.setLayout(new MigLayout("insets 0, gap 0, wrap 2")); pnlRewards.add(new FLabel.Builder().text("Rewards") - .icon(new FSkin.UnskinnedIcon("res/images/icons/CoinIcon.png")).build(), + .icon(new FSkin.UnskinnedIcon(NewConstants.IMAGES_DIR+"icons/CoinIcon.png")).build(), "w 100%!, h 30px!, span 2 1"); pnlRewards.add(lblErrRewards, "w 100%!, h 30px!, span 2 1"); @@ -102,7 +103,7 @@ public class QuestPreferencesHandler extends SkinnedPanel { pnlDifficulty.setOpaque(false); pnlDifficulty.setLayout(new MigLayout("insets 0, gap 0, wrap 5")); - pnlDifficulty.add(new FLabel.Builder().text("Difficulty Adjustments").icon(new FSkin.UnskinnedIcon("res/images/icons/NotesIcon.png")).build(), "w 100%!, h 30px!, span 5 1"); + pnlDifficulty.add(new FLabel.Builder().text("Difficulty Adjustments").icon(new FSkin.UnskinnedIcon(NewConstants.IMAGES_DIR+"icons/NotesIcon.png")).build(), "w 100%!, h 30px!, span 5 1"); pnlDifficulty.add(lblErrDifficulty, "w 100%!, h 30px!, span 5 1"); constraints1 = "w 60px!, h 26px!"; @@ -185,7 +186,7 @@ public class QuestPreferencesHandler extends SkinnedPanel { pnlBooster.setLayout(new MigLayout("insets 0, gap 0, wrap 2")); pnlBooster.add(new FLabel.Builder().text("Booster Pack Ratios") - .icon(new FSkin.UnskinnedIcon("res/images/icons/BookIcon.png")).build(), + .icon(new FSkin.UnskinnedIcon(NewConstants.IMAGES_DIR+"icons/BookIcon.png")).build(), "w 100%!, h 30px!, span 2 1"); pnlBooster.add(lblErrBooster, "w 100%!, h 30px!, span 2 1"); @@ -205,7 +206,7 @@ public class QuestPreferencesHandler extends SkinnedPanel { pnlShop.setLayout(new MigLayout("insets 0, gap 0, wrap 2")); pnlShop.add(new FLabel.Builder().text("Shop Preferences") - .icon(new FSkin.UnskinnedIcon("res/images/icons/CoinIcon.png")).build(), "w 100%!, h 30px!, span 2 1"); + .icon(new FSkin.UnskinnedIcon(NewConstants.IMAGES_DIR+"icons/CoinIcon.png")).build(), "w 100%!, h 30px!, span 2 1"); pnlShop.add(lblErrShop, "w 100%!, h 30px!, span 2 1"); constraints1 = "w 60px, h 26px!"; diff --git a/forge-gui/src/main/java/forge/gui/menus/HelpMenu.java b/forge-gui/src/main/java/forge/gui/menus/HelpMenu.java index 51a5e860f2c..4ca9b2852ef 100644 --- a/forge-gui/src/main/java/forge/gui/menus/HelpMenu.java +++ b/forge-gui/src/main/java/forge/gui/menus/HelpMenu.java @@ -1,6 +1,7 @@ package forge.gui.menus; import forge.gui.toolbox.FOptionPane; +import forge.properties.NewConstants; import forge.util.BuildInfo; import forge.util.FileUtil; @@ -72,7 +73,7 @@ public final class HelpMenu { private static JMenuItem getMenuItem_HowToPlayFile() { JMenuItem menuItem = new JMenuItem("How to Play"); - menuItem.addActionListener(getOpenFileAction(getFile("res\\howto.txt"))); + menuItem.addActionListener(getOpenFileAction(getFile(NewConstants._RES_ROOT+"howto.txt"))); return menuItem; } diff --git a/forge-gui/src/main/java/forge/gui/toolbox/FSkin.java b/forge-gui/src/main/java/forge/gui/toolbox/FSkin.java index e8e0aac0975..fa63e6f7a42 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/FSkin.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/FSkin.java @@ -1268,7 +1268,7 @@ public enum FSkin { } private static final String - FILE_SKINS_DIR = "res/skins/", + FILE_SKINS_DIR = NewConstants._RES_ROOT+"skins/", FILE_ICON_SPRITE = "sprite_icons.png", FILE_FOIL_SPRITE = "sprite_foils.png", FILE_OLD_FOIL_SPRITE = "sprite_old_foils.png", diff --git a/forge-gui/src/main/java/forge/limited/BoosterDraft.java b/forge-gui/src/main/java/forge/limited/BoosterDraft.java index 60ff7679786..fc8ff307bcb 100644 --- a/forge-gui/src/main/java/forge/limited/BoosterDraft.java +++ b/forge-gui/src/main/java/forge/limited/BoosterDraft.java @@ -133,7 +133,7 @@ public final class BoosterDraft implements IBoosterDraft { break; case Custom: - final List myDrafts = draft.loadCustomDrafts("res/draft/", ".draft"); + final List myDrafts = draft.loadCustomDrafts(NewConstants._RES_ROOT+"draft/", ".draft"); if (myDrafts.isEmpty()) { FOptionPane.showMessageDialog("No custom draft files found."); diff --git a/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java b/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java index 9dceab4eb0b..cb639cf2b2e 100644 --- a/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java +++ b/forge-gui/src/main/java/forge/limited/SealedCardPoolGenerator.java @@ -28,6 +28,7 @@ import forge.item.PaperCard; import forge.item.SealedProduct; import forge.model.CardBlock; import forge.model.UnOpenedMeta; +import forge.properties.NewConstants; import forge.util.FileUtil; import forge.util.TextUtil; import org.apache.commons.lang3.ArrayUtils; @@ -125,7 +126,7 @@ public class SealedCardPoolGenerator { final ArrayList customs = new ArrayList(); // get list of custom draft files - final File dFolder = new File("res/sealed/"); + final File dFolder = new File(NewConstants._RES_ROOT+"sealed/"); if (!dFolder.exists()) { throw new RuntimeException("GenerateSealed : folder not found -- folder is " + dFolder.getAbsolutePath()); @@ -139,7 +140,7 @@ public class SealedCardPoolGenerator { for (final String element : dList) { if (element.endsWith(".sealed")) { - final List dfData = FileUtil.readFile("res/sealed/" + element); + final List dfData = FileUtil.readFile(NewConstants._RES_ROOT+"sealed/" + element); final CustomLimited cs = CustomLimited.parse(dfData, Singletons.getModel().getDecks().getCubes()); if (cs.getSealedProductTemplate().getNumberOfCardsExpected() > 5) { // Do not allow too small cubes to be played as 'stand-alone'! customs.add(cs); diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 91e60228133..722350d10de 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -128,16 +128,16 @@ public class FModel { throw new RuntimeException(exn); } - this.formats = new GameFormat.Collection(new GameFormat.Reader(new File("res/blockdata", "formats.txt"))); + this.formats = new GameFormat.Collection(new GameFormat.Reader(new File(NewConstants._RES_ROOT+"blockdata", "formats.txt"))); - this.blocks = new StorageBase("Block definitions", new CardBlock.Reader("res/blockdata/blocks.txt", Singletons.getMagicDb().getEditions())); + this.blocks = new StorageBase("Block definitions", new CardBlock.Reader(NewConstants._RES_ROOT+"blockdata/blocks.txt", Singletons.getMagicDb().getEditions())); this.questPreferences = new QuestPreferences(); this.gauntletData = new GauntletData(); - this.fantasyBlocks = new StorageBase("Custom blocks", new CardBlock.Reader("res/blockdata/fantasyblocks.txt", Singletons.getMagicDb().getEditions())); - this.worlds = new StorageBase("Quest worlds", new QuestWorld.Reader("res/quest/world/worlds.txt")); + this.fantasyBlocks = new StorageBase("Custom blocks", new CardBlock.Reader(NewConstants._RES_ROOT+"blockdata/fantasyblocks.txt", Singletons.getMagicDb().getEditions())); + this.worlds = new StorageBase("Quest worlds", new QuestWorld.Reader(NewConstants._RES_ROOT+"quest/world/worlds.txt")); // TODO - there's got to be a better place for this...oblivion? ForgePreferences.DEV_MODE = this.preferences.getPrefBoolean(FPref.DEV_MODE_ENABLED); @@ -256,7 +256,7 @@ public class FModel { /* * if (!MagicColor.Constant.loaded[0]) { ArrayList lcListFile = - * FileUtil.readFile("res/gamedata/LandColorList"); + * FileUtil.readFile(NewConstants._RES_ROOT+"gamedata/LandColorList"); * * if (lcListFile.size() > 1) { for (int i=0; i 1) diff --git a/forge-gui/src/main/java/forge/model/MetaSet.java b/forge-gui/src/main/java/forge/model/MetaSet.java index 42a921507f4..fb8f59174b5 100644 --- a/forge-gui/src/main/java/forge/model/MetaSet.java +++ b/forge-gui/src/main/java/forge/model/MetaSet.java @@ -26,6 +26,7 @@ import forge.item.IPaperCard; import forge.item.PaperCard; import forge.item.SealedProduct; import forge.limited.CustomLimited; +import forge.properties.NewConstants; import forge.util.FileUtil; import java.io.File; @@ -184,7 +185,7 @@ public class MetaSet { case Combo: return UnOpenedMeta.selectAll(data); case Cube: - final File dFolder = new File("res/sealed/"); + final File dFolder = new File(NewConstants._RES_ROOT+"sealed/"); if (!dFolder.exists()) { throw new RuntimeException("GenerateSealed : folder not found -- folder is " + dFolder.getAbsolutePath()); @@ -194,7 +195,7 @@ public class MetaSet { throw new RuntimeException("GenerateSealed : not a folder -- " + dFolder.getAbsolutePath()); } - List dfData = FileUtil.readFile("res/sealed/" + data + ".sealed"); + List dfData = FileUtil.readFile(NewConstants._RES_ROOT+"sealed/" + data + ".sealed"); final CustomLimited myCube = CustomLimited.parse(dfData, Singletons.getModel().getDecks().getCubes()); SealedProduct.Template fnPick = myCube.getSealedProductTemplate(); diff --git a/forge-gui/src/main/java/forge/properties/NewConstants.java b/forge-gui/src/main/java/forge/properties/NewConstants.java index c932d40acac..ddd80ab8284 100644 --- a/forge-gui/src/main/java/forge/properties/NewConstants.java +++ b/forge-gui/src/main/java/forge/properties/NewConstants.java @@ -25,7 +25,7 @@ public final class NewConstants { public static final String PROFILE_TEMPLATE_FILE = PROFILE_FILE + ".example"; // data that is only in the program dir - private static final String _RES_ROOT = NewConstants.class.getResource("/").getFile(); + public static final String _RES_ROOT = NewConstants.class.getResource("/").getFile(); private static final String _LIST_DIR = _RES_ROOT + "lists/"; public static final String KEYWORD_LIST_FILE = _LIST_DIR + "NonStackingKWList.txt"; public static final String TYPE_LIST_FILE = _LIST_DIR + "TypeLists.txt"; @@ -38,7 +38,7 @@ public final class NewConstants { public static final String IMAGE_LIST_QUEST_PRECONS_FILE = _LIST_DIR + "precon-images.txt"; public static final String IMAGE_LIST_QUEST_TOURNAMENTPACKS_FILE = _LIST_DIR + "tournamentpack-images.txt"; - private static final String _QUEST_DIR = _RES_ROOT + "quest/"; + public static final String _QUEST_DIR = _RES_ROOT + "quest/"; public static final String TEXT_HOWTO_FILE = _RES_ROOT + "howto.txt"; public static final String DRAFT_RANKINGS_FILE = _RES_ROOT + "draft/rankings.txt"; public static final String PRICES_BOOSTER_FILE = _QUEST_DIR + "booster-prices.txt"; @@ -47,7 +47,10 @@ public final class NewConstants { public static final String DECK_CUBE_DIR = _RES_ROOT + "cube"; public static final String QUEST_WORLD_DIR = _QUEST_DIR + "worlds/"; public static final String QUEST_PRECON_DIR = _QUEST_DIR + "precons/"; - + public static final String EDITIONS_DIR = _RES_ROOT + "editions/"; + public static final String BLOCKDATA_DIR = _RES_ROOT + "blockdata/"; + public static final String IMAGES_DIR = _RES_ROOT + "images/"; + public static final String CARD_DATA_PETS_DIR = _QUEST_DIR + "bazaar/"; public static final String DEFAULT_DUELS_DIR = _QUEST_DIR + "duels"; public static final String DEFAULT_CHALLENGES_DIR = _QUEST_DIR + "challenges"; diff --git a/forge-gui/src/main/java/forge/quest/QuestController.java b/forge-gui/src/main/java/forge/quest/QuestController.java index 573d7a53ce4..5b93eaf9fc0 100644 --- a/forge-gui/src/main/java/forge/quest/QuestController.java +++ b/forge-gui/src/main/java/forge/quest/QuestController.java @@ -396,7 +396,7 @@ public class QuestController { */ public void resetDuelsManager() { QuestWorld world = getWorld(); - String path = world == null || world.getDuelsDir() == null ? NewConstants.DEFAULT_DUELS_DIR : "res/quest/world/" + world.getDuelsDir(); + String path = world == null || world.getDuelsDir() == null ? NewConstants.DEFAULT_DUELS_DIR : NewConstants._RES_ROOT+"quest/world/" + world.getDuelsDir(); this.duelManager = new QuestEventDuelManager(new File(path)); } @@ -406,7 +406,7 @@ public class QuestController { */ public void resetChallengesManager() { QuestWorld world = getWorld(); - String path = world == null || world.getChallengesDir() == null ? NewConstants.DEFAULT_CHALLENGES_DIR : "res/quest/world/" + world.getChallengesDir(); + String path = world == null || world.getChallengesDir() == null ? NewConstants.DEFAULT_CHALLENGES_DIR : NewConstants._RES_ROOT+"quest/world/" + world.getChallengesDir(); this.allChallenges = new StorageBase("Quest Challenges", new QuestChallengeReader(new File(path))); } diff --git a/forge-gui/src/main/java/forge/sound/IAudioClip.java b/forge-gui/src/main/java/forge/sound/IAudioClip.java index 1654917fd53..ee2d74f94bd 100644 --- a/forge-gui/src/main/java/forge/sound/IAudioClip.java +++ b/forge-gui/src/main/java/forge/sound/IAudioClip.java @@ -1,7 +1,9 @@ package forge.sound; +import forge.properties.NewConstants; + public interface IAudioClip { - public static final String PathToSound = "res/sound"; + public static final String PathToSound = NewConstants._RES_ROOT+"sound"; public void play(); public boolean isDone(); diff --git a/forge-gui/src/main/java/forge/view/FView.java b/forge-gui/src/main/java/forge/view/FView.java index 3bff88c9ee5..cac102e41b6 100644 --- a/forge-gui/src/main/java/forge/view/FView.java +++ b/forge-gui/src/main/java/forge/view/FView.java @@ -137,21 +137,21 @@ public enum FView { final List resDirs = new ArrayList(); for (String resDir : Lists.newArrayList("decks", "gauntlet", "layouts", "pics", "preferences", "quest/data")) { - resDirs.add(new File("res", resDir)); + resDirs.add(new File(NewConstants._RES_ROOT, resDir)); } final Set doNotDeleteDirs = new HashSet(); for (String dir : Lists.newArrayList("decks", "decks/constructed", "decks/draft", "decks/plane", "decks/scheme", "decks/sealed", "gauntlet", "layouts", "pics", "preferences", "quest/data")) { - doNotDeleteDirs.add(new File("res", dir)); + doNotDeleteDirs.add(new File(NewConstants._RES_ROOT, dir)); } // if we have any data to migrate, pop up the migration dialog if (_addRemainingFiles(null, resDirs, profileDirs, doNotDeleteDirs)) { - new ImportDialog("res", new Runnable() { + new ImportDialog(NewConstants._RES_ROOT, new Runnable() { @Override public void run() { // remove known cruft files, yes this is ugly, but it's also temporary for (String cruftFile : Lists.newArrayList("decks/SkieraCube-cards_not_supported_yet.txt", "decks/cube/ArabianExtended.dck", "decks/cube/GtcGuildBoros.dck", "decks/cube/GtcGuildDimir.dck", "decks/cube/GtcGuildGruul.dck", "decks/cube/GtcGuildOrzhov.dck", "decks/cube/GtcGuildSimic.dck", "decks/cube/GtcPromoBoros.dck", "decks/cube/GtcPromoDimir.dck", "decks/cube/GtcPromoGruul.dck", "decks/cube/GtcPromoOrzhov.dck", "decks/cube/GtcPromoSimic.dck", "decks/cube/JuzamjediCube.dck", "decks/cube/RtRGuildAzorius.dck", "decks/cube/RtRGuildGolgari.dck", "decks/cube/RtRGuildIzzet.dck", "decks/cube/RtRGuildRakdos.dck", "decks/cube/RtRGuildSelesnya.dck", "decks/cube/RtRPromoAzorius.dck", "decks/cube/RtRPromoGolgari.dck", "decks/cube/RtRPromoIzzet.dck", "decks/cube/RtRPromoRakdos.dck", "decks/cube/RtRPromoSelesnya.dck", "decks/cube/SkieraCube.dck", "gauntlet/LOCKED_DotP Preconstructed.dat", "gauntlet/LOCKED_Swimming With Sharks.dat", "layouts/editor_default.xml", "layouts/home_default.xml", "layouts/match_default.xml", "pics/snow_covered_forest1.jpg", "pics/snow_covered_forest2.jpg", "pics/snow_covered_forest3.jpg", "pics/snow_covered_island1.jpg", "pics/snow_covered_island2.jpg", "pics/snow_covered_island3.jpg", "pics/snow_covered_mountain1.jpg", "pics/snow_covered_mountain2.jpg", "pics/snow_covered_mountain3.jpg", "pics/snow_covered_plains1.jpg", "pics/snow_covered_plains2.jpg", "pics/snow_covered_plains3.jpg", "pics/snow_covered_swamp1.jpg", "pics/snow_covered_swamp2.jpg", "pics/snow_covered_swamp3.jpg", "pics/VAN/Birds of Paradise Avatar.full.jpg", "pics/VAN/Erhnam Djinn Avatar.full.jpg", "pics/VAN/Goblin Warchief Avatar.full.jpg", "pics/VAN/Grinning Demon Avatar.full.jpg", "pics/VAN/Platinum Angel Avatar.full.jpg", "pics/VAN/Prodigal Sorcerer Avatar.full.jpg", "pics/VAN/Rith, the Awakener Avatar.full.jpg", "pics/VAN/Royal Assassin Avatar.full.jpg", "pics/VAN/Serra Angel Avatar.full.jpg", "pics/VAN/Tradewind Rider Avatar.full.jpg", "pics_product/10E.jpg", "pics_product/2ED.jpg", "pics_product/3ED.jpg", "pics_product/4ED.jpg", "pics_product/5DN.jpg", "pics_product/5ED.jpg", "pics_product/6ED.jpg", "pics_product/7ED.jpg", "pics_product/8ED.jpg", "pics_product/9ED.jpg", "pics_product/ALA.jpg", "pics_product/ALL.jpg", "pics_product/APC.jpg", "pics_product/ARB.jpg", "pics_product/ARN.jpg", "pics_product/ATQ.jpg", "pics_product/BOK.jpg", "pics_product/CFX.jpg", "pics_product/CHK.jpg", "pics_product/CHR.jpg", "pics_product/CSP.jpg", "pics_product/DIS.jpg", "pics_product/DKA.jpg", "pics_product/DRK.jpg", "pics_product/DST.jpg", "pics_product/EVE.jpg", "pics_product/EXO.jpg", "pics_product/FEM.jpg", "pics_product/FUT.jpg", "pics_product/GPT.jpg", "pics_product/HML.jpg", "pics_product/ICE.jpg", "pics_product/INV.jpg", "pics_product/ISD.jpg", "pics_product/JUD.jpg", "pics_product/LEA.jpg", "pics_product/LEB.jpg", "pics_product/LEG.jpg", "pics_product/LGN.jpg", "pics_product/LRW.jpg", "pics_product/M10.jpg", "pics_product/M11.jpg", "pics_product/M12.jpg", "pics_product/MBS.jpg", "pics_product/MIR.jpg", "pics_product/MMQ.jpg", "pics_product/MOR.jpg", "pics_product/MRD.jpg", "pics_product/NMS.jpg", "pics_product/NPH.jpg", "pics_product/ODY.jpg", "pics_product/ONS.jpg", "pics_product/PCY.jpg", "pics_product/PLC.jpg", "pics_product/PLS.jpg", "pics_product/PO2.jpg", "pics_product/POR.jpg", "pics_product/PTK.jpg", "pics_product/RAV.jpg", "pics_product/ROE.jpg", "pics_product/S99.jpg", "pics_product/SCG.jpg", "pics_product/SHM.jpg", "pics_product/SOK.jpg", "pics_product/SOM.jpg", "pics_product/STH.jpg", "pics_product/TMP.jpg", "pics_product/TOR.jpg", "pics_product/TSP.jpg", "pics_product/UDS.jpg", "pics_product/ULG.jpg", "pics_product/USG.jpg", "pics_product/VIS.jpg", "pics_product/WTH.jpg", "pics_product/WWK.jpg", "pics_product/ZEN.jpg", "pics_product/booster/7E.png", "pics_product/booster/AP.png", "pics_product/booster/DPA.png", "pics_product/booster/EX.png", "pics_product/booster/IN.png", "pics_product/booster/MI.png", "pics_product/booster/OD.png", "pics_product/booster/PS.png", "pics_product/booster/ST.png", "pics_product/booster/TE.png", "pics_product/booster/UD.png", "pics_product/booster/UL.png", "pics_product/booster/UZ.png", "pics_product/booster/VI.png", "pics_product/booster/WL.png", "preferences/.project", "preferences/editor.default.preferences", "preferences/main.properties", "quest/quest.preferences", "quest/quest.properties")) { - new File("res", cruftFile).delete(); + new File(NewConstants._RES_ROOT, cruftFile).delete(); } // assemble a list of remaining files. diff --git a/forge-gui/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java b/forge-gui/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java index 57c3a6a89fb..8c0106261e1 100644 --- a/forge-gui/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java +++ b/forge-gui/src/test/java/forge/gamesimulationtests/util/CardDatabaseHelper.java @@ -27,7 +27,7 @@ public class CardDatabaseHelper { private static void initialize() { final CardStorageReader reader = new CardStorageReader( NewConstants.CARD_DATA_DIR, null, null ); - staticData = new StaticData( reader, "res/editions", "res/blockdata" ); + staticData = new StaticData( reader, NewConstants._RES_ROOT+"editions", NewConstants._RES_ROOT+"blockdata" ); } private static boolean hasBeenInitialized() { diff --git a/forge-gui/src/test/java/forge/item/DeckHintsTest.java b/forge-gui/src/test/java/forge/item/DeckHintsTest.java index 3072bcada89..ebfa7b405e8 100644 --- a/forge-gui/src/test/java/forge/item/DeckHintsTest.java +++ b/forge-gui/src/test/java/forge/item/DeckHintsTest.java @@ -127,7 +127,8 @@ public class DeckHintsTest { * @return the CardPrinted */ protected PaperCard readCard(String filename) { - File dir = new File(NewConstants.CARD_DATA_DIR); + String firstLetter = filename.substring(0, 1); + File dir = new File(NewConstants.CARD_DATA_DIR, firstLetter); File txtFile = new File(dir, filename); CardRules.Reader crr = new CardRules.Reader(); diff --git a/forge-m-base/src/main/java/forge/Forge.java b/forge-m-base/src/main/java/forge/Forge.java index 04cd5d50ede..67f6cb37d59 100644 --- a/forge-m-base/src/main/java/forge/Forge.java +++ b/forge-m-base/src/main/java/forge/Forge.java @@ -86,7 +86,7 @@ public class Forge implements ApplicationListener { } }; final CardStorageReader reader = new CardStorageReader(Constants.CARD_DATA_DIR, progressBarBridge, null); - magicDb = new StaticData(reader, "res/editions", "res/blockdata"); + magicDb = new StaticData(reader, Forge.class.getResource("/").getFile()+"editions", Forge.class.getResource("/").getFile()+"blockdata"); bar.setDescription("Opening main window..."); diff --git a/forge-resources/pom.xml b/forge-resources/pom.xml new file mode 100644 index 00000000000..0d5beb14912 --- /dev/null +++ b/forge-resources/pom.xml @@ -0,0 +1,61 @@ + + + + 4.0.0 + + + forge + forge + 1.5.14-SNAPSHOT + + + forge-resources + Forge Resources + + + + + ${project.basedir}/src/main/resources + + cardsfolder/** + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + parse-version + + parse-version + + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + cardsfolder + generate-resources + + single + + + false + false + + src/main/conf/cardsfolder.xml + + cardsfolder + ${project.build.outputDirectory}/cardsfolder + + + + + + + diff --git a/forge-bundle/src/main/conf/cardsfolder.xml b/forge-resources/src/main/conf/cardsfolder.xml similarity index 73% rename from forge-bundle/src/main/conf/cardsfolder.xml rename to forge-resources/src/main/conf/cardsfolder.xml index 4376a837156..5dd34c5383b 100644 --- a/forge-bundle/src/main/conf/cardsfolder.xml +++ b/forge-resources/src/main/conf/cardsfolder.xml @@ -6,7 +6,7 @@ false - ${project.basedir}/src/main/resources/res/cardsfolder + ${project.basedir}/src/main/resources/cardsfolder / diff --git a/pom.xml b/pom.xml index 131a53d56d5..c79f9827ee5 100644 --- a/pom.xml +++ b/pom.xml @@ -185,6 +185,7 @@ forge-m-base forge-m-desktop forge-net + forge-resources @@ -271,6 +272,11 @@ forge-m-desktop 1.5.14-SNAPSHOT + + forge + forge-resources + 1.5.14-SNAPSHOT + com.miglayout miglayout