From ca8c8d35d9da36bed990e79107a8081798ecc4d1 Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 20 Jan 2014 18:44:43 +0000 Subject: [PATCH] commited a workaround for preferences dependency --- .gitattributes | 1 + .../main/java/forge/PreferencesBridge.java | 27 ++++++-- .../src/main/java/forge/ai/AiController.java | 3 +- .../src/main/java/forge/game/GameLog.java | 3 +- .../src/main/java/forge/game/Match.java | 3 +- .../game/ability/effects/CloneEffect.java | 3 +- .../java/forge/game/phase/PhaseHandler.java | 7 ++- .../java/forge/game/player/LobbyPlayerAi.java | 3 +- .../main/java/forge/PreferencesProvider.java | 63 +++++++++++++++++++ forge-gui/src/main/java/forge/view/Main.java | 2 + 10 files changed, 101 insertions(+), 14 deletions(-) create mode 100644 forge-gui/src/main/java/forge/PreferencesProvider.java diff --git a/.gitattributes b/.gitattributes index 05f4f7b337c..3cdb9832062 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15206,6 +15206,7 @@ forge-gui/src/main/html/js/socket.js -text forge-gui/src/main/java/forge/FThreads.java -text forge-gui/src/main/java/forge/ImageCache.java svneol=native#text/plain forge-gui/src/main/java/forge/ImageLoader.java -text +forge-gui/src/main/java/forge/PreferencesProvider.java -text forge-gui/src/main/java/forge/Singletons.java svneol=native#text/plain forge-gui/src/main/java/forge/control/ChatArea.java -text forge-gui/src/main/java/forge/control/FControl.java -text diff --git a/forge-game/src/main/java/forge/PreferencesBridge.java b/forge-game/src/main/java/forge/PreferencesBridge.java index 765daa3934b..19cdc877f1e 100644 --- a/forge-game/src/main/java/forge/PreferencesBridge.java +++ b/forge-game/src/main/java/forge/PreferencesBridge.java @@ -1,10 +1,25 @@ package forge; -public enum PreferencesBridge { + +public class PreferencesBridge { + public static PreferencesSet Instance; - Instance; - - public static enum GamePref { - + public interface PreferencesSet { + + public abstract boolean getEnableAiCheats(); + + public abstract boolean getCloneModeSource(); + + public abstract String getLogEntryType(); + + public abstract String getCurrentAiProfile(); + + public abstract boolean canRandomFoil(); + + public abstract boolean isManaBurnEnabled(); + + public abstract boolean areBlocksFree(); + } -} + +} \ No newline at end of file diff --git a/forge-game/src/main/java/forge/ai/AiController.java b/forge-game/src/main/java/forge/ai/AiController.java index 3ff4bc68213..5dfb3ef5199 100644 --- a/forge-game/src/main/java/forge/ai/AiController.java +++ b/forge-game/src/main/java/forge/ai/AiController.java @@ -34,6 +34,7 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; +import forge.PreferencesBridge; import forge.card.CardType; import forge.card.MagicColor; import forge.deck.CardPool; @@ -98,7 +99,7 @@ public class AiController { player = computerPlayer; game = game0; - canCheatShuffle = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ENABLE_AI_CHEATS); + canCheatShuffle = PreferencesBridge.Instance.getEnableAiCheats(); } /** diff --git a/forge-game/src/main/java/forge/game/GameLog.java b/forge-game/src/main/java/forge/game/GameLog.java index e04aeaed815..88142d6816b 100644 --- a/forge-game/src/main/java/forge/game/GameLog.java +++ b/forge-game/src/main/java/forge/game/GameLog.java @@ -24,6 +24,7 @@ import java.util.Observable; import org.apache.commons.lang3.StringUtils; +import forge.PreferencesBridge; import forge.game.event.IGameEventVisitor; @@ -106,7 +107,7 @@ public class GameLog extends Observable { } public GameLogEntryType getGameLogEntryTypeSetting() { - String logEntryType = Singletons.getModel().getPreferences().getPref(FPref.DEV_LOG_ENTRY_TYPE); + String logEntryType = PreferencesBridge.Instance.getLogEntryType(); return GameLogEntryType.valueOf(logEntryType); } diff --git a/forge-game/src/main/java/forge/game/Match.java b/forge-game/src/main/java/forge/game/Match.java index 10150bd88f7..c188ab74c6d 100644 --- a/forge-game/src/main/java/forge/game/Match.java +++ b/forge-game/src/main/java/forge/game/Match.java @@ -16,6 +16,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; +import forge.PreferencesBridge; import forge.deck.CardPool; import forge.deck.Deck; import forge.deck.DeckSection; @@ -96,7 +97,7 @@ public class Match { * TODO: Write javadoc for this method. */ public void startGame(final Game game, final CountDownLatch latch) { - final boolean canRandomFoil = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL) && gameType == GameType.Constructed; + final boolean canRandomFoil = PreferencesBridge.Instance.canRandomFoil() && gameType == GameType.Constructed; // This code could be run run from EDT. game.getAction().invoke(new Runnable() { diff --git a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java index 1d63f9f59f0..46e05e0cc2d 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/CloneEffect.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import forge.Command; +import forge.PreferencesBridge; import forge.card.CardCharacteristicName; import forge.game.Game; import forge.game.ability.AbilityUtils; @@ -83,7 +84,7 @@ public class CloneEffect extends SpellAbilityEffect { } // determine the image to be used for the clone - String imageFileName = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE) ? tgtCard.getImageKey() : cardToCopy.getImageKey(); + String imageFileName = PreferencesBridge.Instance.getCloneModeSource() ? tgtCard.getImageKey() : cardToCopy.getImageKey(); if (sa.hasParam("ImageSource")) { // Allow the image to be stipulated by using a defined card source List cloneImgSources = AbilityUtils.getDefinedCards(host, sa.getParam("ImageSource"), sa); if (!cloneImgSources.isEmpty()) { diff --git a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java index 64f43223544..ea7d054be32 100644 --- a/forge-game/src/main/java/forge/game/phase/PhaseHandler.java +++ b/forge-game/src/main/java/forge/game/phase/PhaseHandler.java @@ -22,11 +22,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Stack; + import org.apache.commons.lang3.time.StopWatch; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; +import forge.PreferencesBridge; import forge.card.mana.ManaCost; import forge.game.GameEntity; import forge.game.GameStage; @@ -432,7 +434,7 @@ public class PhaseHandler implements java.io.Serializable { for (Player p : game.getPlayers()) { int burn = p.getManaPool().clearPool(true); - boolean dealDamage = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_MANABURN); + boolean dealDamage = PreferencesBridge.Instance.isManaBurnEnabled(); if (dealDamage) { p.loseLife(burn); @@ -708,8 +710,7 @@ public class PhaseHandler implements java.io.Serializable { } } - boolean hasPaid = blockCost.getTotalMana().isZero() && blockCost.isOnlyManaCost() && (!hasBlockCost - || Singletons.getModel().getPreferences().getPrefBoolean(FPref.MATCHPREF_PROMPT_FREE_BLOCKS)); // true if needless to pay + boolean hasPaid = blockCost.getTotalMana().isZero() && blockCost.isOnlyManaCost() && (!hasBlockCost || PreferencesBridge.Instance.areBlocksFree()); // true if needless to pay if (!hasPaid) { hasPaid = blocker.getController().getController().payManaOptional(blocker, blockCost, null, "Pay cost to declare " + blocker + " a blocker. ", ManaPaymentPurpose.DeclareBlocker); diff --git a/forge-game/src/main/java/forge/game/player/LobbyPlayerAi.java b/forge-game/src/main/java/forge/game/player/LobbyPlayerAi.java index 700a895b064..9821c5fc8be 100644 --- a/forge-game/src/main/java/forge/game/player/LobbyPlayerAi.java +++ b/forge-game/src/main/java/forge/game/player/LobbyPlayerAi.java @@ -1,5 +1,6 @@ package forge.game.player; +import forge.PreferencesBridge; import forge.ai.AiProfileUtil; import forge.game.Game; @@ -33,7 +34,7 @@ public class LobbyPlayerAi extends LobbyPlayer { Player ai = new Player(getName(), game); ai.setFirstController(createControllerFor(ai)); - String currentAiProfile = Singletons.getModel().getPreferences().getPref(FPref.UI_CURRENT_AI_PROFILE); + String currentAiProfile = PreferencesBridge.Instance.getCurrentAiProfile(); String lastProfileChosen = game.getMatch().getPlayedGames().isEmpty() ? currentAiProfile : getAiProfile(); // TODO: implement specific AI profiles for quest mode. diff --git a/forge-gui/src/main/java/forge/PreferencesProvider.java b/forge-gui/src/main/java/forge/PreferencesProvider.java new file mode 100644 index 00000000000..42b012ee389 --- /dev/null +++ b/forge-gui/src/main/java/forge/PreferencesProvider.java @@ -0,0 +1,63 @@ +package forge; + +import forge.PreferencesBridge.PreferencesSet; +import forge.properties.ForgePreferences.FPref; + +public class PreferencesProvider implements PreferencesSet { + /* (non-Javadoc) + * @see forge.IPreferencesForGame#getEnableAiCheats() + */ + @Override + public boolean getEnableAiCheats() { + return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ENABLE_AI_CHEATS); + } + + /* (non-Javadoc) + * @see forge.IPreferencesForGame#getCloneModeSource() + */ + @Override + public boolean getCloneModeSource() { + return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE); + } + + /* (non-Javadoc) + * @see forge.IPreferencesForGame#getLogEntryType() + */ + @Override + public String getLogEntryType() { + return Singletons.getModel().getPreferences().getPref(FPref.DEV_LOG_ENTRY_TYPE); + } + + /* (non-Javadoc) + * @see forge.IPreferencesForGame#getCurrentAiProfile() + */ + @Override + public String getCurrentAiProfile() { + return Singletons.getModel().getPreferences().getPref(FPref.UI_CURRENT_AI_PROFILE); + } + + /* (non-Javadoc) + * @see forge.IPreferencesForGame#canRandomFoil() + */ + @Override + public boolean canRandomFoil() { + return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); + } + + /* (non-Javadoc) + * @see forge.IPreferencesForGame#isManaBurnEnabled() + */ + @Override + public boolean isManaBurnEnabled() { + // TODO Auto-generated method stub + return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_MANABURN); + } + + /* (non-Javadoc) + * @see forge.IPreferencesForGame#areBlocksFree() + */ + @Override + public boolean areBlocksFree() { + return Singletons.getModel().getPreferences().getPrefBoolean(FPref.MATCHPREF_PROMPT_FREE_BLOCKS); + } +} diff --git a/forge-gui/src/main/java/forge/view/Main.java b/forge-gui/src/main/java/forge/view/Main.java index fec39c2018a..e0fcbe8716a 100644 --- a/forge-gui/src/main/java/forge/view/Main.java +++ b/forge-gui/src/main/java/forge/view/Main.java @@ -18,6 +18,7 @@ package forge.view; +import forge.PreferencesProvider; import forge.Singletons; import forge.net.FServer; @@ -44,6 +45,7 @@ public final class Main { return; } + forge.PreferencesBridge.Instance = new PreferencesProvider(); // command line startup here String mode = args[0].toLowerCase();