cut Dependencies on log entry type and AI profiles

This commit is contained in:
Maxmtg
2014-01-24 05:21:21 +00:00
parent 308039739f
commit 68acaf77c5
9 changed files with 60 additions and 49 deletions

View File

@@ -4,10 +4,7 @@ public class Dependencies {
public static PreferencesMethods preferences; public static PreferencesMethods preferences;
public interface PreferencesMethods { public interface PreferencesMethods {
@Deprecated public abstract boolean getEnableAiCheats();
@Deprecated public abstract boolean getCloneModeSource(); @Deprecated public abstract boolean getCloneModeSource();
@Deprecated public abstract String getLogEntryType();
@Deprecated public abstract String getCurrentAiProfile();
@Deprecated public abstract boolean isManaBurnEnabled(); @Deprecated public abstract boolean isManaBurnEnabled();
@Deprecated public abstract boolean areBlocksFree(); @Deprecated public abstract boolean areBlocksFree();
} }

View File

@@ -34,7 +34,6 @@ import com.google.common.base.Predicates;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import forge.Dependencies;
import forge.card.CardType; import forge.card.CardType;
import forge.card.MagicColor; import forge.card.MagicColor;
import forge.deck.CardPool; import forge.deck.CardPool;
@@ -78,7 +77,16 @@ public class AiController {
private final Player player; private final Player player;
private final Game game; 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() public Game getGame()
{ {
return game; return game;
@@ -97,8 +105,6 @@ public class AiController {
public AiController(final Player computerPlayer, final Game game0) { public AiController(final Player computerPlayer, final Game game0) {
player = computerPlayer; player = computerPlayer;
game = game0; game = game0;
canCheatShuffle = Dependencies.preferences.getEnableAiCheats();
} }
/** /**
@@ -1023,7 +1029,7 @@ public class AiController {
* @return an array of {@link forge.game.card.Card} objects. * @return an array of {@link forge.game.card.Card} objects.
*/ */
public List<Card> cheatShuffle(List<Card> in) { public List<Card> cheatShuffle(List<Card> in) {
if( in.size() < 20 || !canCheatShuffle ) if( in.size() < 20 || !canCheatShuffle() )
return in; return in;
final List<Card> library = Lists.newArrayList(in); final List<Card> library = Lists.newArrayList(in);

View File

@@ -24,7 +24,6 @@ import java.util.Observable;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import forge.Dependencies;
import forge.game.event.IGameEventVisitor; import forge.game.event.IGameEventVisitor;
@@ -106,11 +105,6 @@ public class GameLog extends Observable {
return result; return result;
} }
public GameLogEntryType getGameLogEntryTypeSetting() {
String logEntryType = Dependencies.preferences.getLogEntryType();
return GameLogEntryType.valueOf(logEntryType);
}
public IGameEventVisitor<?> getEventVisitor() { public IGameEventVisitor<?> getEventVisitor() {
return formatter; return formatter;
} }

View File

@@ -1,6 +1,5 @@
package forge.game.player; package forge.game.player;
import forge.Dependencies;
import forge.ai.AiProfileUtil; import forge.ai.AiProfileUtil;
import forge.game.Game; import forge.game.Game;
@@ -10,7 +9,18 @@ public class LobbyPlayerAi extends LobbyPlayer {
} }
private String aiProfile = ""; 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) { public void setAiProfile(String profileName) {
aiProfile = profileName; aiProfile = profileName;
} }
@@ -19,14 +29,20 @@ public class LobbyPlayerAi extends LobbyPlayer {
return aiProfile; return aiProfile;
} }
public void setRotateProfileEachGame(boolean rotateProfileEachGame) {
this.rotateProfileEachGame = rotateProfileEachGame;
}
@Override @Override
protected PlayerType getType() { protected PlayerType getType() {
return PlayerType.COMPUTER; return PlayerType.COMPUTER;
} }
@Override @Override
public PlayerController createControllerFor(Player ai) { public PlayerControllerAi createControllerFor(Player ai) {
return new PlayerControllerAi(ai.getGame(), ai, this); PlayerControllerAi result = new PlayerControllerAi(ai.getGame(), ai, this);
result.allowCheatShuffle(allowCheatShuffle);
return result;
} }
@Override @Override
@@ -34,15 +50,10 @@ public class LobbyPlayerAi extends LobbyPlayer {
Player ai = new Player(getName(), game); Player ai = new Player(getName(), game);
ai.setFirstController(createControllerFor(ai)); ai.setFirstController(createControllerFor(ai));
String currentAiProfile = Dependencies.preferences.getCurrentAiProfile(); if( rotateProfileEachGame ) {
String lastProfileChosen = game.getMatch().getPlayedGames().isEmpty() ? currentAiProfile : getAiProfile(); setAiProfile(AiProfileUtil.getRandomProfile());
System.out.println(String.format("AI profile %s was chosen for the lobby player %s.", getAiProfile(), getName()));
// 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()));
return ai; return ai;
} }

View File

@@ -79,6 +79,11 @@ public class PlayerControllerAi extends PlayerController {
brains = new AiController(p, game); brains = new AiController(p, game);
} }
public void allowCheatShuffle(boolean value){
brains.allowCheatShuffle(value);
}
public SpellAbility getAbilityToPlay(List<SpellAbility> abilities, MouseEvent triggerEvent) { public SpellAbility getAbilityToPlay(List<SpellAbility> abilities, MouseEvent triggerEvent) {
if (abilities.size() == 0) { if (abilities.size() == 0) {

View File

@@ -3,26 +3,11 @@ package forge;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
public class PreferencesProvider implements Dependencies.PreferencesMethods { public class PreferencesProvider implements Dependencies.PreferencesMethods {
@Override
public boolean getEnableAiCheats() {
return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ENABLE_AI_CHEATS);
}
@Override @Override
public boolean getCloneModeSource() { public boolean getCloneModeSource() {
return Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_CLONE_MODE_SOURCE); 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 @Override
public boolean isManaBurnEnabled() { public boolean isManaBurnEnabled() {
// TODO Auto-generated method stub // TODO Auto-generated method stub

View File

@@ -558,7 +558,6 @@ public enum FControl implements KeyEventDispatcher {
} }
public void startMatch(GameType gameType, List<RegisteredPlayer> starter) { public void startMatch(GameType gameType, List<RegisteredPlayer> starter) {
boolean useRandomFoil = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL); boolean useRandomFoil = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_RANDOM_FOIL);
for(RegisteredPlayer rp : starter) { for(RegisteredPlayer rp : starter) {
rp.setRandomFoil(useRandomFoil); rp.setRandomFoil(useRandomFoil);

View File

@@ -26,6 +26,7 @@ import net.miginfocom.swing.MigLayout;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import forge.Singletons;
import forge.game.GameLog; import forge.game.GameLog;
import forge.game.GameLogEntry; import forge.game.GameLogEntry;
import forge.game.GameLogEntryType; import forge.game.GameLogEntryType;
@@ -37,6 +38,7 @@ import forge.gui.match.GameLogPanel;
import forge.gui.match.controllers.CLog; import forge.gui.match.controllers.CLog;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinFont; import forge.gui.toolbox.FSkin.SkinFont;
import forge.properties.ForgePreferences.FPref;
/** /**
* Assembles Swing components of game log report. * Assembles Swing components of game log report.
@@ -171,7 +173,8 @@ public enum VLog implements IVDoc<CLog> {
} }
private List<GameLogEntry> getNewGameLogEntries(GameLog activeGameLogModel) { private List<GameLogEntry> getNewGameLogEntries(GameLog activeGameLogModel) {
GameLogEntryType logVerbosityFilter = activeGameLogModel.getGameLogEntryTypeSetting(); String logEntryType = Singletons.getModel().getPreferences().getPref(FPref.DEV_LOG_ENTRY_TYPE);
GameLogEntryType logVerbosityFilter = GameLogEntryType.valueOf(logEntryType);
List<GameLogEntry> logEntries = activeGameLogModel.getLogEntries(logVerbosityFilter); List<GameLogEntry> logEntries = activeGameLogModel.getLogEntries(logVerbosityFilter);
// Set subtraction - remove all log entries from new list which are already displayed. // Set subtraction - remove all log entries from new list which are already displayed.
logEntries.removeAll(this.displayedLogEntries); logEntries.removeAll(this.displayedLogEntries);

View File

@@ -5,12 +5,15 @@ import java.util.concurrent.ConcurrentHashMap;
import com.google.common.base.Supplier; import com.google.common.base.Supplier;
import forge.Singletons;
import forge.ai.AiProfileUtil;
import forge.control.ChatArea; import forge.control.ChatArea;
import forge.game.player.LobbyPlayer; import forge.game.player.LobbyPlayer;
import forge.game.player.LobbyPlayerAi; import forge.game.player.LobbyPlayerAi;
import forge.gui.GuiDisplayUtil; import forge.gui.GuiDisplayUtil;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.net.client.INetClient; import forge.net.client.INetClient;
import forge.properties.ForgePreferences.FPref;
import forge.util.MyRandom; import forge.util.MyRandom;
import forge.util.NameGenerator; import forge.util.NameGenerator;
@@ -36,14 +39,22 @@ public class Lobby {
public final LobbyPlayer getAiPlayer() { return getAiPlayer(getRandomName()); } public final LobbyPlayer getAiPlayer() { return getAiPlayer(getRandomName()); }
public final LobbyPlayer getAiPlayer(String name) { public final LobbyPlayer getAiPlayer(String name) {
LobbyPlayer player = new LobbyPlayerAi(name); return getAiPlayer(name, FSkin.isLoaded() ? MyRandom.getRandom().nextInt(FSkin.getAvatars().size()) : 0);
if(FSkin.isLoaded())
player.setAvatarIndex(MyRandom.getRandom().nextInt(FSkin.getAvatars().size()));
return player;
} }
public final LobbyPlayer getAiPlayer(String name, int avatarIndex) { public final LobbyPlayer getAiPlayer(String name, int avatarIndex) {
LobbyPlayer player = new LobbyPlayerAi(name); LobbyPlayerAi player = new LobbyPlayerAi(name);
player.setAvatarIndex(avatarIndex);
// 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; return player;
} }