diff --git a/forge-game/src/main/java/forge/Dependencies.java b/forge-game/src/main/java/forge/Dependencies.java index 86698b916ac..0604d225011 100644 --- a/forge-game/src/main/java/forge/Dependencies.java +++ b/forge-game/src/main/java/forge/Dependencies.java @@ -4,10 +4,7 @@ public class Dependencies { public static PreferencesMethods preferences; public interface PreferencesMethods { - @Deprecated public abstract boolean getEnableAiCheats(); @Deprecated public abstract boolean getCloneModeSource(); - @Deprecated public abstract String getLogEntryType(); - @Deprecated public abstract String getCurrentAiProfile(); @Deprecated public abstract boolean isManaBurnEnabled(); @Deprecated public abstract boolean areBlocksFree(); } diff --git a/forge-game/src/main/java/forge/ai/AiController.java b/forge-game/src/main/java/forge/ai/AiController.java index 5f56dd6d4d8..0aa1b480585 100644 --- a/forge-game/src/main/java/forge/ai/AiController.java +++ b/forge-game/src/main/java/forge/ai/AiController.java @@ -34,7 +34,6 @@ import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import forge.Dependencies; import forge.card.CardType; import forge.card.MagicColor; import forge.deck.CardPool; @@ -78,7 +77,16 @@ public class AiController { private final Player player; private final Game game; - public boolean canCheatShuffle; + public boolean bCheatShuffle; + + public boolean canCheatShuffle() { + return bCheatShuffle; + } + + public void allowCheatShuffle(boolean canCheatShuffle) { + this.bCheatShuffle = canCheatShuffle; + } + public Game getGame() { return game; @@ -97,8 +105,6 @@ public class AiController { public AiController(final Player computerPlayer, final Game game0) { player = computerPlayer; game = game0; - - canCheatShuffle = Dependencies.preferences.getEnableAiCheats(); } /** @@ -1023,7 +1029,7 @@ public class AiController { * @return an array of {@link forge.game.card.Card} objects. */ public List cheatShuffle(List in) { - if( in.size() < 20 || !canCheatShuffle ) + if( in.size() < 20 || !canCheatShuffle() ) return in; final List library = Lists.newArrayList(in); diff --git a/forge-game/src/main/java/forge/game/GameLog.java b/forge-game/src/main/java/forge/game/GameLog.java index b192825a87f..5d06d58373c 100644 --- a/forge-game/src/main/java/forge/game/GameLog.java +++ b/forge-game/src/main/java/forge/game/GameLog.java @@ -24,7 +24,6 @@ import java.util.Observable; import org.apache.commons.lang3.StringUtils; -import forge.Dependencies; import forge.game.event.IGameEventVisitor; @@ -106,11 +105,6 @@ public class GameLog extends Observable { return result; } - public GameLogEntryType getGameLogEntryTypeSetting() { - String logEntryType = Dependencies.preferences.getLogEntryType(); - return GameLogEntryType.valueOf(logEntryType); - } - public IGameEventVisitor getEventVisitor() { return formatter; } 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 298943525b1..87f2944ce72 100644 --- a/forge-game/src/main/java/forge/game/player/LobbyPlayerAi.java +++ b/forge-game/src/main/java/forge/game/player/LobbyPlayerAi.java @@ -1,6 +1,5 @@ package forge.game.player; -import forge.Dependencies; import forge.ai.AiProfileUtil; import forge.game.Game; @@ -10,7 +9,18 @@ public class LobbyPlayerAi extends LobbyPlayer { } private String aiProfile = ""; + private boolean rotateProfileEachGame; + private boolean allowCheatShuffle; + public boolean isAllowCheatShuffle() { + return allowCheatShuffle; + } + + + public void setAllowCheatShuffle(boolean allowCheatShuffle) { + this.allowCheatShuffle = allowCheatShuffle; + } + public void setAiProfile(String profileName) { aiProfile = profileName; } @@ -19,14 +29,20 @@ public class LobbyPlayerAi extends LobbyPlayer { return aiProfile; } + public void setRotateProfileEachGame(boolean rotateProfileEachGame) { + this.rotateProfileEachGame = rotateProfileEachGame; + } + @Override protected PlayerType getType() { return PlayerType.COMPUTER; } @Override - public PlayerController createControllerFor(Player ai) { - return new PlayerControllerAi(ai.getGame(), ai, this); + public PlayerControllerAi createControllerFor(Player ai) { + PlayerControllerAi result = new PlayerControllerAi(ai.getGame(), ai, this); + result.allowCheatShuffle(allowCheatShuffle); + return result; } @Override @@ -34,15 +50,10 @@ public class LobbyPlayerAi extends LobbyPlayer { Player ai = new Player(getName(), game); ai.setFirstController(createControllerFor(ai)); - String currentAiProfile = Dependencies.preferences.getCurrentAiProfile(); - String lastProfileChosen = game.getMatch().getPlayedGames().isEmpty() ? currentAiProfile : getAiProfile(); - - // TODO: implement specific AI profiles for quest mode. - boolean wantRandomProfile = currentAiProfile.equals(AiProfileUtil.AI_PROFILE_RANDOM_DUEL) - || game.getMatch().getPlayedGames().isEmpty() && currentAiProfile.equals(AiProfileUtil.AI_PROFILE_RANDOM_MATCH); - - setAiProfile(wantRandomProfile ? AiProfileUtil.getRandomProfile() : lastProfileChosen); - System.out.println(String.format("AI profile %s was chosen for the lobby player %s.", getAiProfile(), getName())); + if( rotateProfileEachGame ) { + setAiProfile(AiProfileUtil.getRandomProfile()); + System.out.println(String.format("AI profile %s was chosen for the lobby player %s.", getAiProfile(), getName())); + } return ai; } diff --git a/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java b/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java index b9799247e55..799d3292db6 100644 --- a/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/forge-game/src/main/java/forge/game/player/PlayerControllerAi.java @@ -79,6 +79,11 @@ public class PlayerControllerAi extends PlayerController { brains = new AiController(p, game); } + + public void allowCheatShuffle(boolean value){ + brains.allowCheatShuffle(value); + } + public SpellAbility getAbilityToPlay(List abilities, MouseEvent triggerEvent) { if (abilities.size() == 0) { diff --git a/forge-gui/src/main/java/forge/PreferencesProvider.java b/forge-gui/src/main/java/forge/PreferencesProvider.java index a34723a14fc..7df982a5821 100644 --- a/forge-gui/src/main/java/forge/PreferencesProvider.java +++ b/forge-gui/src/main/java/forge/PreferencesProvider.java @@ -3,26 +3,11 @@ package forge; import forge.properties.ForgePreferences.FPref; public class PreferencesProvider implements Dependencies.PreferencesMethods { - @Override - public boolean getEnableAiCheats() { - return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ENABLE_AI_CHEATS); - } - @Override public boolean getCloneModeSource() { return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE); } - @Override - public String getLogEntryType() { - return Singletons.getModel().getPreferences().getPref(FPref.DEV_LOG_ENTRY_TYPE); - } - - @Override - public String getCurrentAiProfile() { - return Singletons.getModel().getPreferences().getPref(FPref.UI_CURRENT_AI_PROFILE); - } - @Override public boolean isManaBurnEnabled() { // TODO Auto-generated method stub diff --git a/forge-gui/src/main/java/forge/control/FControl.java b/forge-gui/src/main/java/forge/control/FControl.java index a972aad143f..9086b79eaf7 100644 --- a/forge-gui/src/main/java/forge/control/FControl.java +++ b/forge-gui/src/main/java/forge/control/FControl.java @@ -558,7 +558,6 @@ public enum FControl implements KeyEventDispatcher { } public void startMatch(GameType gameType, List starter) { - boolean useRandomFoil = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); for(RegisteredPlayer rp : starter) { rp.setRandomFoil(useRandomFoil); diff --git a/forge-gui/src/main/java/forge/gui/match/views/VLog.java b/forge-gui/src/main/java/forge/gui/match/views/VLog.java index 42a1c1249a6..310ebe52b9b 100644 --- a/forge-gui/src/main/java/forge/gui/match/views/VLog.java +++ b/forge-gui/src/main/java/forge/gui/match/views/VLog.java @@ -26,6 +26,7 @@ import net.miginfocom.swing.MigLayout; import com.google.common.collect.Lists; +import forge.Singletons; import forge.game.GameLog; import forge.game.GameLogEntry; import forge.game.GameLogEntryType; @@ -37,6 +38,7 @@ import forge.gui.match.GameLogPanel; import forge.gui.match.controllers.CLog; import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin.SkinFont; +import forge.properties.ForgePreferences.FPref; /** * Assembles Swing components of game log report. @@ -171,7 +173,8 @@ public enum VLog implements IVDoc { } private List getNewGameLogEntries(GameLog activeGameLogModel) { - GameLogEntryType logVerbosityFilter = activeGameLogModel.getGameLogEntryTypeSetting(); + String logEntryType = Singletons.getModel().getPreferences().getPref(FPref.DEV_LOG_ENTRY_TYPE); + GameLogEntryType logVerbosityFilter = GameLogEntryType.valueOf(logEntryType); List logEntries = activeGameLogModel.getLogEntries(logVerbosityFilter); // Set subtraction - remove all log entries from new list which are already displayed. logEntries.removeAll(this.displayedLogEntries); diff --git a/forge-gui/src/main/java/forge/net/Lobby.java b/forge-gui/src/main/java/forge/net/Lobby.java index 2c65ccb19c5..66c7f4adfc7 100644 --- a/forge-gui/src/main/java/forge/net/Lobby.java +++ b/forge-gui/src/main/java/forge/net/Lobby.java @@ -5,12 +5,15 @@ import java.util.concurrent.ConcurrentHashMap; import com.google.common.base.Supplier; +import forge.Singletons; +import forge.ai.AiProfileUtil; import forge.control.ChatArea; import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayerAi; import forge.gui.GuiDisplayUtil; import forge.gui.toolbox.FSkin; import forge.net.client.INetClient; +import forge.properties.ForgePreferences.FPref; import forge.util.MyRandom; import forge.util.NameGenerator; @@ -36,14 +39,22 @@ public class Lobby { public final LobbyPlayer getAiPlayer() { return getAiPlayer(getRandomName()); } public final LobbyPlayer getAiPlayer(String name) { - LobbyPlayer player = new LobbyPlayerAi(name); - if(FSkin.isLoaded()) - player.setAvatarIndex(MyRandom.getRandom().nextInt(FSkin.getAvatars().size())); - return player; + return getAiPlayer(name, FSkin.isLoaded() ? MyRandom.getRandom().nextInt(FSkin.getAvatars().size()) : 0); } public final LobbyPlayer getAiPlayer(String name, int avatarIndex) { - LobbyPlayer player = new LobbyPlayerAi(name); - player.setAvatarIndex(avatarIndex); + LobbyPlayerAi player = new LobbyPlayerAi(name); + + // TODO: implement specific AI profiles for quest mode. + String lastProfileChosen = Singletons.getModel().getPreferences().getPref(FPref.UI_CURRENT_AI_PROFILE); + player.setRotateProfileEachGame(lastProfileChosen.equals(AiProfileUtil.AI_PROFILE_RANDOM_DUEL)); + if(lastProfileChosen.equals(AiProfileUtil.AI_PROFILE_RANDOM_MATCH)) { + lastProfileChosen = AiProfileUtil.getRandomProfile(); + System.out.println(String.format("AI profile %s was chosen for the lobby player %s.", lastProfileChosen, player.getName())); + } + player.setAiProfile(lastProfileChosen); + + if(FSkin.isLoaded()) + player.setAvatarIndex(avatarIndex); return player; }