From 1e95e14d6a1f9d39d015990968cb2a5ebd18cb06 Mon Sep 17 00:00:00 2001 From: Myrd Date: Tue, 27 Dec 2016 17:56:11 +0000 Subject: [PATCH] Lazy-load cards in GameSimulatorTest to make it exec faster. --- .../src/main/java/forge/Singletons.java | 2 +- .../src/main/java/forge/view/SimulateMatch.java | 2 +- .../forge/ai/simulation/GameSimulatorTest.java | 16 +++++++++++++++- forge-gui-mobile/src/forge/Forge.java | 2 +- forge-gui/src/main/java/forge/model/FModel.java | 7 ++++++- 5 files changed, 24 insertions(+), 5 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/Singletons.java b/forge-gui-desktop/src/main/java/forge/Singletons.java index aad80dab48f..e382635255a 100644 --- a/forge-gui-desktop/src/main/java/forge/Singletons.java +++ b/forge-gui-desktop/src/main/java/forge/Singletons.java @@ -50,7 +50,7 @@ public final class Singletons { view = FView.SINGLETON_INSTANCE; } - FModel.initialize(view == null ? null : view.getSplash().getProgressBar()); + FModel.initialize(view == null ? null : view.getSplash().getProgressBar(), null); if (withUi) { control = FControl.instance; diff --git a/forge-gui-desktop/src/main/java/forge/view/SimulateMatch.java b/forge-gui-desktop/src/main/java/forge/view/SimulateMatch.java index a9efcbcdbd6..c19670da868 100644 --- a/forge-gui-desktop/src/main/java/forge/view/SimulateMatch.java +++ b/forge-gui-desktop/src/main/java/forge/view/SimulateMatch.java @@ -27,7 +27,7 @@ import forge.util.Lang; public class SimulateMatch { public static void simulate(String[] args) { - FModel.initialize(null); + FModel.initialize(null, null); System.out.println("Simulation mode"); if(args.length < 4) { diff --git a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java index 6674ac5e182..4d6c486a3fe 100644 --- a/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java +++ b/forge-gui-desktop/src/test/java/forge/ai/simulation/GameSimulatorTest.java @@ -4,10 +4,12 @@ import java.util.List; import junit.framework.TestCase; +import com.google.common.base.Function; import com.google.common.collect.Lists; import forge.GuiBase; import forge.GuiDesktop; +import forge.StaticData; import forge.ai.ComputerUtilAbility; import forge.ai.LobbyPlayerAi; import forge.ai.simulation.GameStateEvaluator.Score; @@ -29,6 +31,8 @@ import forge.game.spellability.SpellAbility; import forge.game.zone.ZoneType; import forge.item.IPaperCard; import forge.model.FModel; +import forge.properties.ForgePreferences; +import forge.properties.ForgePreferences.FPref; public class GameSimulatorTest extends TestCase { private static boolean initialized = false; @@ -45,7 +49,13 @@ public class GameSimulatorTest extends TestCase { if (!initialized) { GuiBase.setInterface(new GuiDesktop()); - FModel.initialize(null); + FModel.initialize(null, new Function() { + @Override + public Void apply(ForgePreferences preferences) { + preferences.setPref(FPref.LOAD_CARD_SCRIPTS_LAZILY, true); + return null; + } + }); initialized = true; } return game; @@ -93,6 +103,10 @@ public class GameSimulatorTest extends TestCase { private Card createCard(String name, Player p) { IPaperCard paperCard = FModel.getMagicDb().getCommonCards().getCard(name); + if (paperCard == null) { + StaticData.instance().attemptToLoadCard(name, ""); + paperCard = FModel.getMagicDb().getCommonCards().getCard(name); + } return Card.fromPaperCard(paperCard, p); } diff --git a/forge-gui-mobile/src/forge/Forge.java b/forge-gui-mobile/src/forge/Forge.java index b3945d79b81..343607c17b7 100644 --- a/forge-gui-mobile/src/forge/Forge.java +++ b/forge-gui-mobile/src/forge/Forge.java @@ -97,7 +97,7 @@ public class Forge implements ApplicationListener { AssetsDownloader.checkForUpdates(splashScreen); if (exited) { return; } //don't continue if user chose to exit or couldn't download required assets - FModel.initialize(splashScreen.getProgressBar()); + FModel.initialize(splashScreen.getProgressBar(), null); splashScreen.getProgressBar().setDescription("Loading fonts..."); FSkinFont.preloadAll(); diff --git a/forge-gui/src/main/java/forge/model/FModel.java b/forge-gui/src/main/java/forge/model/FModel.java index 327ab6dba09..fc37861ff0a 100644 --- a/forge-gui/src/main/java/forge/model/FModel.java +++ b/forge-gui/src/main/java/forge/model/FModel.java @@ -56,6 +56,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.google.common.base.Function; + /** * The default Model implementation for Forge. * @@ -91,7 +93,7 @@ public final class FModel { private static IStorage worlds; private static GameFormat.Collection formats; - public static void initialize(final IProgressBar progressBar) { + public static void initialize(final IProgressBar progressBar, Function adjustPrefs) { ImageKeys.initializeDirs( ForgeConstants.CACHE_CARD_PICS_DIR, ForgeConstants.CACHE_CARD_PICS_SUBDIR, ForgeConstants.CACHE_TOKEN_PICS_DIR, ForgeConstants.CACHE_ICON_PICS_DIR, @@ -103,6 +105,9 @@ public final class FModel { // Preferences are initialized first so that the splash screen can be translated. try { preferences = new ForgePreferences(); + if (adjustPrefs != null) { + adjustPrefs.apply(preferences); + } GamePlayerUtil.getGuiPlayer().setName(preferences.getPref(FPref.PLAYER_NAME)); } catch (final Exception exn) {