Refactor creation of Gui and AI lobby players into GamePlayerUtil

Fix so gui player name updated
Fix so multiple human players receive separate LobbyPlayerHuman instances
This commit is contained in:
drdev
2014-09-15 22:26:55 +00:00
parent e658588771
commit 42b99b0b5e
34 changed files with 147 additions and 189 deletions

View File

@@ -1,5 +1,7 @@
package forge; package forge;
import org.apache.commons.lang3.StringUtils;
/** /**
* This means a player's part unchanged for all games. * This means a player's part unchanged for all games.
* *
@@ -7,11 +9,9 @@ package forge;
* *
*/ */
public abstract class LobbyPlayer { public abstract class LobbyPlayer {
protected String name;
protected final String name;
private int avatarIndex = -1; private int avatarIndex = -1;
public LobbyPlayer(String name) { public LobbyPlayer(String name) {
this.name = name; this.name = name;
} }
@@ -19,6 +19,10 @@ public abstract class LobbyPlayer {
public String getName() { public String getName() {
return name; return name;
} }
public void setName(String name0) {
if (StringUtils.isEmpty(name0)) { return; } //don't allow setting name to nothing
name = name0;
}
@Override @Override
public int hashCode() { public int hashCode() {

View File

@@ -51,6 +51,7 @@ import forge.interfaces.IGuiBase;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.match.input.InputQueue; import forge.match.input.InputQueue;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.screens.deckeditor.CDeckEditorUI; import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.deckeditor.controllers.CEditorQuestCardShop; import forge.screens.deckeditor.controllers.CEditorQuestCardShop;
import forge.screens.match.CMatchUI; import forge.screens.match.CMatchUI;
@@ -250,7 +251,7 @@ public class GuiDesktop implements IGuiBase {
@Override @Override
public void updatePlayerControl() { public void updatePlayerControl() {
CMatchUI.SINGLETON_INSTANCE.initHandViews(getGuiPlayer()); CMatchUI.SINGLETON_INSTANCE.initHandViews(GamePlayerUtil.getGuiPlayer());
SLayoutIO.loadLayout(null); SLayoutIO.loadLayout(null);
VMatchUI.SINGLETON_INSTANCE.populate(); VMatchUI.SINGLETON_INSTANCE.populate();
for (VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) { for (VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) {
@@ -504,31 +505,6 @@ public class GuiDesktop implements IGuiBase {
Desktop.getDesktop().browse(new URI(url)); Desktop.getDesktop().browse(new URI(url));
} }
@Override
public LobbyPlayer getGuiPlayer() {
return FControl.instance.getGuiPlayer();
}
@Override
public LobbyPlayer getAiPlayer(String name) {
return FControl.instance.getAiPlayer(name);
}
@Override
public LobbyPlayer createAiPlayer() {
return FControl.instance.getAiPlayer();
}
@Override
public LobbyPlayer createAiPlayer(String name, int avatarIndex) {
return FControl.instance.getAiPlayer(name, avatarIndex);
}
@Override
public LobbyPlayer getQuestPlayer() {
return getGuiPlayer();
}
@Override @Override
public IAudioClip createAudioClip(String filename) { public IAudioClip createAudioClip(String filename) {
return AudioClip.fileExists(filename) ? new AudioClip(filename) : null; return AudioClip.fileExists(filename) ? new AudioClip(filename) : null;

View File

@@ -42,7 +42,6 @@ import forge.GuiBase;
import forge.ImageCache; import forge.ImageCache;
import forge.LobbyPlayer; import forge.LobbyPlayer;
import forge.Singletons; import forge.Singletons;
import forge.ai.AiProfileUtil;
import forge.ai.LobbyPlayerAi; import forge.ai.LobbyPlayerAi;
import forge.assets.FSkinProp; import forge.assets.FSkinProp;
import forge.control.KeyboardShortcuts.Shortcut; import forge.control.KeyboardShortcuts.Shortcut;
@@ -88,9 +87,6 @@ import forge.sound.SoundSystem;
import forge.toolbox.FOptionPane; import forge.toolbox.FOptionPane;
import forge.toolbox.FSkin; import forge.toolbox.FSkin;
import forge.toolbox.special.PhaseIndicator; import forge.toolbox.special.PhaseIndicator;
import forge.util.GuiDisplayUtil;
import forge.util.MyRandom;
import forge.util.NameGenerator;
import forge.view.FFrame; import forge.view.FFrame;
import forge.view.FView; import forge.view.FView;
import forge.view.IGameView; import forge.view.IGameView;
@@ -730,38 +726,8 @@ public enum FControl implements KeyEventDispatcher {
//Singletons.getView().getViewMatch().setLayoutParams(prefs.getPref(FPref.UI_LAYOUT_PARAMS)); //Singletons.getView().getViewMatch().setLayoutParams(prefs.getPref(FPref.UI_LAYOUT_PARAMS));
} }
// Ai player creation, will stay here for a while
/** Returns a random name from the supplied list. */
public String getRandomName() {
String playerName = GuiDisplayUtil.getPlayerName();
String aiName = NameGenerator.getRandomName("Any", "Generic", playerName);
return aiName;
}
public final LobbyPlayer getAiPlayer() { return getAiPlayer(getRandomName()); }
public final LobbyPlayer getAiPlayer(String name) {
int avatarCount = GuiBase.getInterface().getAvatarCount();
return getAiPlayer(name, avatarCount == 0 ? 0 : MyRandom.getRandom().nextInt(avatarCount));
}
public final LobbyPlayer getAiPlayer(String name, int avatarIndex) {
LobbyPlayerAi player = new LobbyPlayerAi(name);
// TODO: implement specific AI profiles for quest mode.
String lastProfileChosen = FModel.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);
player.setAvatarIndex(avatarIndex);
return player;
}
private final LobbyPlayer guiPlayer = new LobbyPlayerHuman("Human", GuiBase.getInterface());
public final LobbyPlayer getGuiPlayer() { public final LobbyPlayer getGuiPlayer() {
return guiPlayer; return GamePlayerUtil.getGuiPlayer();
} }
} }

View File

@@ -1,6 +1,6 @@
package forge.screens.home.gauntlet; package forge.screens.home.gauntlet;
import forge.GuiBase; import forge.Singletons;
import forge.UiCommand; import forge.UiCommand;
import forge.deck.Deck; import forge.deck.Deck;
import forge.game.GameType; import forge.game.GameType;
@@ -9,8 +9,9 @@ import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -102,11 +103,10 @@ public enum CSubmenuGauntletContests implements ICDoc {
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
IGuiBase fc = GuiBase.getInterface(); starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(fc.getGuiPlayer())); starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
starter.add(new RegisteredPlayer(aiDeck).setPlayer(fc.createAiPlayer()));
fc.startMatch(GameType.Gauntlet, starter); Singletons.getControl().startMatch(GameType.Gauntlet, starter);
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -1,6 +1,6 @@
package forge.screens.home.gauntlet; package forge.screens.home.gauntlet;
import forge.GuiBase; import forge.Singletons;
import forge.UiCommand; import forge.UiCommand;
import forge.deck.Deck; import forge.deck.Deck;
import forge.deck.DeckType; import forge.deck.DeckType;
@@ -11,8 +11,8 @@ import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import javax.swing.*; import javax.swing.*;
@@ -130,11 +130,10 @@ public enum CSubmenuGauntletLoad implements ICDoc {
}); });
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
IGuiBase fc = GuiBase.getInterface(); starter.add(new RegisteredPlayer(userDeck).setPlayer(GamePlayerUtil.getGuiPlayer()));
starter.add(new RegisteredPlayer(userDeck).setPlayer(fc.getGuiPlayer())); starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
starter.add(new RegisteredPlayer(aiDeck).setPlayer(fc.createAiPlayer()));
fc.startMatch(GameType.Gauntlet, starter); Singletons.getControl().startMatch(GameType.Gauntlet, starter);
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -2,7 +2,6 @@ package forge.screens.home.gauntlet;
import forge.UiCommand; import forge.UiCommand;
import forge.Singletons; import forge.Singletons;
import forge.control.FControl;
import forge.deck.DeckType; import forge.deck.DeckType;
import forge.game.GameType; import forge.game.GameType;
import forge.game.player.RegisteredPlayer; import forge.game.player.RegisteredPlayer;
@@ -10,6 +9,8 @@ import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletUtil; import forge.gauntlet.GauntletUtil;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.player.GamePlayerUtil;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@@ -73,11 +74,10 @@ public enum CSubmenuGauntletQuick implements ICDoc {
final GauntletData gd = GauntletUtil.createQuickGauntlet(view.getLstDecks().getPlayer().getDeck(), view.getSliOpponents().getValue(), allowedDeckTypes); final GauntletData gd = GauntletUtil.createQuickGauntlet(view.getLstDecks().getPlayer().getDeck(), view.getSliOpponents().getValue(), allowedDeckTypes);
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
FControl fc = Singletons.getControl(); starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(fc.getGuiPlayer())); starter.add(new RegisteredPlayer(gd.getDecks().get(gd.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
starter.add(new RegisteredPlayer(gd.getDecks().get(gd.getCompleted())).setPlayer(fc.getAiPlayer()));
fc.startMatch(GameType.Gauntlet, starter); Singletons.getControl().startMatch(GameType.Gauntlet, starter);
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -1,6 +1,5 @@
package forge.screens.home.sanctioned; package forge.screens.home.sanctioned;
import forge.GuiBase;
import forge.LobbyPlayer; import forge.LobbyPlayer;
import forge.UiCommand; import forge.UiCommand;
import forge.Singletons; import forge.Singletons;
@@ -13,12 +12,12 @@ import forge.game.GameType;
import forge.game.player.RegisteredPlayer; import forge.game.player.RegisteredPlayer;
import forge.gui.GuiDialog; import forge.gui.GuiDialog;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.interfaces.IGuiBase;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.menus.IMenuProvider; import forge.menus.IMenuProvider;
import forge.menus.MenuUtil; import forge.menus.MenuUtil;
import forge.model.CardCollections; import forge.model.CardCollections;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.toolbox.FList; import forge.toolbox.FList;
@@ -224,13 +223,12 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
} }
} }
IGuiBase fc = GuiBase.getInterface();
List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
for (final int i : view.getParticipants()) { for (final int i : view.getParticipants()) {
String name = view.getPlayerName(i); String name = view.getPlayerName(i);
LobbyPlayer lobbyPlayer = view.isPlayerAI(i) LobbyPlayer lobbyPlayer = view.isPlayerAI(i)
? fc.createAiPlayer(name, view.getPlayerAvatar(i)) ? GamePlayerUtil.createAiPlayer(name, view.getPlayerAvatar(i))
: fc.getGuiPlayer(); : GamePlayerUtil.getGuiPlayer(name, i);
RegisteredPlayer rp = view.getDeckChooser(i).getPlayer(); RegisteredPlayer rp = view.getDeckChooser(i).getPlayer();
if (variantTypes.isEmpty()) { if (variantTypes.isEmpty()) {

View File

@@ -16,6 +16,7 @@ import forge.itemmanager.ItemManagerConfig;
import forge.limited.BoosterDraft; import forge.limited.BoosterDraft;
import forge.limited.LimitedPoolType; import forge.limited.LimitedPoolType;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.screens.deckeditor.CDeckEditorUI; import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.deckeditor.controllers.CEditorDraftingProcess; import forge.screens.deckeditor.controllers.CEditorDraftingProcess;
@@ -137,13 +138,13 @@ public enum CSubmenuDraft implements ICDoc {
} }
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GuiBase.getInterface().getGuiPlayer())); starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
starter.add(new RegisteredPlayer(aiDeck).setPlayer(GuiBase.getInterface().createAiPlayer())); starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
for (RegisteredPlayer pl : starter) { for (RegisteredPlayer pl : starter) {
pl.assignConspiracies(); pl.assignConspiracies();
} }
GuiBase.getInterface().startMatch(GameType.Draft, starter); Singletons.getControl().startMatch(GameType.Draft, starter);
} }
/** */ /** */

View File

@@ -9,7 +9,6 @@ import forge.game.GameType;
import forge.game.player.RegisteredPlayer; import forge.game.player.RegisteredPlayer;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.screens.deckeditor.CDeckEditorUI; import forge.screens.deckeditor.CDeckEditorUI;
import forge.deck.DeckProxy; import forge.deck.DeckProxy;
@@ -20,6 +19,7 @@ import forge.toolbox.FOptionPane;
import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.ItemManagerConfig;
import forge.limited.LimitedPoolType; import forge.limited.LimitedPoolType;
import forge.limited.WinstonDraft; import forge.limited.WinstonDraft;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import javax.swing.*; import javax.swing.*;
@@ -128,10 +128,9 @@ public enum CSubmenuWinston implements ICDoc {
throw new IllegalStateException("Draft: Computer deck is null!"); throw new IllegalStateException("Draft: Computer deck is null!");
} }
IGuiBase fc = GuiBase.getInterface();
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(fc.getGuiPlayer())); starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
starter.add(new RegisteredPlayer(aiDeck).setPlayer(fc.createAiPlayer())); starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
Singletons.getControl().startMatch(GameType.Winston, starter); Singletons.getControl().startMatch(GameType.Winston, starter);
} }

View File

@@ -27,6 +27,7 @@ import forge.assets.FSkinProp;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.framework.FScreen; import forge.gui.framework.FScreen;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.quest.QuestController; import forge.quest.QuestController;
import forge.quest.QuestDraftUtils; import forge.quest.QuestDraftUtils;
import forge.screens.home.quest.CSubmenuChallenges; import forge.screens.home.quest.CSubmenuChallenges;
@@ -78,7 +79,7 @@ public class QuestDraftWinLose extends ControlWinLose {
QuestController quest = FModel.getQuest(); QuestController quest = FModel.getQuest();
final LobbyPlayer questLobbyPlayer = GuiBase.getInterface().getQuestPlayer(); final LobbyPlayer questLobbyPlayer = GamePlayerUtil.getQuestPlayer();
final List<PlayerView> players = lastGame.getPlayers(); final List<PlayerView> players = lastGame.getPlayers();
boolean gameHadHumanPlayer = false; boolean gameHadHumanPlayer = false;
for (final PlayerView p : players) { for (final PlayerView p : players) {

View File

@@ -31,6 +31,7 @@ import forge.gui.SOverlayUtils;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.gui.framework.SLayoutIO; import forge.gui.framework.SLayoutIO;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.FileLocation; import forge.properties.FileLocation;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.screens.match.CMatchUI; import forge.screens.match.CMatchUI;
@@ -115,7 +116,7 @@ public enum CDock implements ICDoc {
* View deck list. * View deck list.
*/ */
public void viewDeckList() { public void viewDeckList() {
final Deck deck = FControl.instance.getGameView().getDeck(GuiBase.getInterface().getGuiPlayer()); final Deck deck = FControl.instance.getGameView().getDeck(GamePlayerUtil.getGuiPlayer());
if (deck != null) { if (deck != null) {
FDeckViewer.show(deck); FDeckViewer.show(deck);
} }

View File

@@ -17,6 +17,7 @@ import forge.game.GameType;
import forge.game.Match; import forge.game.Match;
import forge.game.player.RegisteredPlayer; import forge.game.player.RegisteredPlayer;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.util.Lang; import forge.util.Lang;
public class SimulateMatch { public class SimulateMatch {
@@ -44,12 +45,13 @@ public class SimulateMatch {
System.out.println(String.format("Ai-%s vs Ai_%s - %s", d1.getName(), d2.getName(), Lang.nounWithNumeral(nGames, "game"))); System.out.println(String.format("Ai-%s vs Ai_%s - %s", d1.getName(), d2.getName(), Lang.nounWithNumeral(nGames, "game")));
List<RegisteredPlayer> pp = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> pp = new ArrayList<RegisteredPlayer>();
pp.add(new RegisteredPlayer(d1).setPlayer(GuiBase.getInterface().createAiPlayer("Ai-" + d1.getName(), 0))); pp.add(new RegisteredPlayer(d1).setPlayer(GamePlayerUtil.createAiPlayer("Ai-" + d1.getName(), 0)));
pp.add(new RegisteredPlayer(d2).setPlayer(GuiBase.getInterface().createAiPlayer("Ai_" + d2.getName(), 1))); pp.add(new RegisteredPlayer(d2).setPlayer(GamePlayerUtil.createAiPlayer("Ai_" + d2.getName(), 1)));
GameRules rules = new GameRules(GameType.Constructed); GameRules rules = new GameRules(GameType.Constructed);
Match mc = new Match(rules, pp); Match mc = new Match(rules, pp);
for(int iGame = 0; iGame < nGames; iGame++) for (int iGame = 0; iGame < nGames; iGame++) {
simulateSingleMatch(mc, iGame); simulateSingleMatch(mc, iGame);
}
System.out.flush(); System.out.flush();
} }
/** /**

View File

@@ -35,7 +35,6 @@ import forge.interfaces.IButton;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.match.input.InputQueue; import forge.match.input.InputQueue;
import forge.player.LobbyPlayerHuman;
import forge.properties.ForgeConstants; import forge.properties.ForgeConstants;
import forge.screens.match.FControl; import forge.screens.match.FControl;
import forge.screens.match.views.VPlayerPanel; import forge.screens.match.views.VPlayerPanel;
@@ -443,32 +442,6 @@ public class GuiMobile implements IGuiBase {
Gdx.net.openURI(url); Gdx.net.openURI(url);
} }
private final LobbyPlayer guiPlayer = new LobbyPlayerHuman("Human", this);
@Override
public LobbyPlayer getGuiPlayer() {
return guiPlayer;
}
@Override
public LobbyPlayer getAiPlayer(String name) {
return FControl.getAiPlayer(name);
}
@Override
public LobbyPlayer createAiPlayer() {
return FControl.getAiPlayer();
}
@Override
public LobbyPlayer createAiPlayer(String name, int avatarIndex) {
return FControl.getAiPlayer(name, avatarIndex);
}
@Override
public LobbyPlayer getQuestPlayer() {
return getGuiPlayer();
}
@Override @Override
public IAudioClip createAudioClip(String filename) { public IAudioClip createAudioClip(String filename) {
return AudioClip.createClip(ForgeConstants.SOUND_DIR + filename); return AudioClip.createClip(ForgeConstants.SOUND_DIR + filename);

View File

@@ -29,6 +29,7 @@ import forge.item.PaperCard;
import forge.itemmanager.CardManager; import forge.itemmanager.CardManager;
import forge.itemmanager.DeckManager; import forge.itemmanager.DeckManager;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.screens.FScreen; import forge.screens.FScreen;
@@ -294,8 +295,8 @@ public class ConstructedScreen extends LaunchScreen {
for (int i = 0; i < getNumPlayers(); i++) { for (int i = 0; i < getNumPlayers(); i++) {
PlayerPanel playerPanel = playerPanels.get(i); PlayerPanel playerPanel = playerPanels.get(i);
String name = getPlayerName(i); String name = getPlayerName(i);
LobbyPlayer lobbyPlayer = playerPanel.isPlayerAI() ? GuiBase.getInterface().createAiPlayer(name, LobbyPlayer lobbyPlayer = playerPanel.isPlayerAI() ? GamePlayerUtil.createAiPlayer(name,
getPlayerAvatar(i)) : GuiBase.getInterface().getGuiPlayer(); getPlayerAvatar(i)) : GamePlayerUtil.getGuiPlayer(name, i);
RegisteredPlayer rp = playerPanel.deckChooser.getPlayer(); RegisteredPlayer rp = playerPanel.deckChooser.getPlayer();
if (appliedVariants.isEmpty()) { if (appliedVariants.isEmpty()) {

View File

@@ -26,6 +26,7 @@ import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gauntlet.GauntletUtil; import forge.gauntlet.GauntletUtil;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.quest.QuestUtil; import forge.quest.QuestUtil;
import forge.screens.LaunchScreen; import forge.screens.LaunchScreen;
import forge.screens.settings.SettingsScreen; import forge.screens.settings.SettingsScreen;
@@ -270,8 +271,8 @@ public class GauntletScreen extends LaunchScreen {
protected boolean buildLaunchParams(LaunchParams launchParams) { protected boolean buildLaunchParams(LaunchParams launchParams) {
final GauntletData gauntlet = FModel.getGauntletData(); final GauntletData gauntlet = FModel.getGauntletData();
launchParams.gameType = GameType.Gauntlet; launchParams.gameType = GameType.Gauntlet;
launchParams.players.add(new RegisteredPlayer(gauntlet.getUserDeck()).setPlayer(GuiBase.getInterface().getGuiPlayer())); launchParams.players.add(new RegisteredPlayer(gauntlet.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
launchParams.players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GuiBase.getInterface().createAiPlayer())); launchParams.players.add(new RegisteredPlayer(gauntlet.getDecks().get(gauntlet.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
return true; return true;
} }

View File

@@ -23,7 +23,6 @@ import forge.Forge;
import forge.Graphics; import forge.Graphics;
import forge.GuiBase; import forge.GuiBase;
import forge.LobbyPlayer; import forge.LobbyPlayer;
import forge.ai.AiProfileUtil;
import forge.ai.LobbyPlayerAi; import forge.ai.LobbyPlayerAi;
import forge.assets.FImage; import forge.assets.FImage;
import forge.assets.FSkin; import forge.assets.FSkin;
@@ -49,6 +48,7 @@ import forge.game.zone.ZoneType;
import forge.match.input.InputPlaybackControl; import forge.match.input.InputPlaybackControl;
import forge.match.input.InputQueue; import forge.match.input.InputQueue;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.player.PlayerControllerHuman; import forge.player.PlayerControllerHuman;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
@@ -65,7 +65,6 @@ import forge.toolbox.FDisplayObject;
import forge.toolbox.FOptionPane; import forge.toolbox.FOptionPane;
import forge.util.Callback; import forge.util.Callback;
import forge.util.GuiDisplayUtil; import forge.util.GuiDisplayUtil;
import forge.util.MyRandom;
import forge.util.NameGenerator; import forge.util.NameGenerator;
import forge.util.WaitCallback; import forge.util.WaitCallback;
import forge.view.CardView; import forge.view.CardView;
@@ -841,29 +840,9 @@ public class FControl {
String aiName = NameGenerator.getRandomName("Any", "Generic", playerName); String aiName = NameGenerator.getRandomName("Any", "Generic", playerName);
return aiName; return aiName;
} }
public final static LobbyPlayer getAiPlayer() { return getAiPlayer(getRandomName()); }
public final static LobbyPlayer getAiPlayer(String name) {
int avatarCount = GuiBase.getInterface().getAvatarCount();
return getAiPlayer(name, avatarCount == 0 ? 0 : MyRandom.getRandom().nextInt(avatarCount));
}
public final static LobbyPlayer getAiPlayer(String name, int avatarIndex) {
LobbyPlayerAi player = new LobbyPlayerAi(name);
// TODO: implement specific AI profiles for quest mode.
String lastProfileChosen = FModel.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);
player.setAvatarIndex(avatarIndex);
return player;
}
public final static LobbyPlayer getGuiPlayer() { public final static LobbyPlayer getGuiPlayer() {
return GuiBase.getInterface().getGuiPlayer(); return GamePlayerUtil.getGuiPlayer();
} }
public static FImage getPlayerAvatar(final PlayerView p) { public static FImage getPlayerAvatar(final PlayerView p) {

View File

@@ -1,6 +1,5 @@
package forge.screens.match.views; package forge.screens.match.views;
import forge.GuiBase;
import forge.LobbyPlayer; import forge.LobbyPlayer;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
import forge.deck.Deck; import forge.deck.Deck;
@@ -10,6 +9,7 @@ import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.menu.FDropDownMenu; import forge.menu.FDropDownMenu;
import forge.menu.FMenuItem; import forge.menu.FMenuItem;
import forge.player.GamePlayerUtil;
import forge.screens.match.FControl; import forge.screens.match.FControl;
import forge.screens.settings.SettingsScreen; import forge.screens.settings.SettingsScreen;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
@@ -48,7 +48,7 @@ public class VGameMenu extends FDropDownMenu {
addItem(new FMenuItem("Deck List", FSkinImage.DECKLIST, new FEventHandler() { addItem(new FMenuItem("Deck List", FSkinImage.DECKLIST, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
final LobbyPlayer guiPlayer = GuiBase.getInterface().getGuiPlayer(); final LobbyPlayer guiPlayer = GamePlayerUtil.getGuiPlayer();
final Deck deck = FControl.getGameView().getDeck(guiPlayer); final Deck deck = FControl.getGameView().getDeck(guiPlayer);
if (deck != null) { if (deck != null) {
FDeckViewer.show(deck); FDeckViewer.show(deck);

View File

@@ -6,12 +6,12 @@ import java.util.List;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import forge.Graphics; import forge.Graphics;
import forge.GuiBase;
import forge.assets.FSkinColor; import forge.assets.FSkinColor;
import forge.assets.FSkinFont; import forge.assets.FSkinFont;
import forge.assets.FSkinImage; import forge.assets.FSkinImage;
import forge.assets.FSkinColor.Colors; import forge.assets.FSkinColor.Colors;
import forge.card.MagicColor; import forge.card.MagicColor;
import forge.player.GamePlayerUtil;
import forge.screens.match.FControl; import forge.screens.match.FControl;
import forge.toolbox.FDisplayObject; import forge.toolbox.FDisplayObject;
import forge.view.PlayerView; import forge.view.PlayerView;
@@ -81,7 +81,7 @@ public class VManaPool extends VDisplayArea {
@Override @Override
public boolean tap(float x, float y, int count) { public boolean tap(float x, float y, int count) {
if (player.getLobbyPlayer() == GuiBase.getInterface().getGuiPlayer()) { if (player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()) {
FControl.getGameView().useMana(colorCode); FControl.getGameView().useMana(colorCode);
} }
return true; return true;

View File

@@ -53,6 +53,7 @@ import forge.interfaces.IGuiBase;
import forge.match.input.ButtonUtil; import forge.match.input.ButtonUtil;
import forge.match.input.InputBase; import forge.match.input.InputBase;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.util.Lang; import forge.util.Lang;
import forge.util.gui.SGuiChoose; import forge.util.gui.SGuiChoose;
@@ -309,7 +310,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
@Override @Override
public Void visit(GameEventAttackersDeclared event) { public Void visit(GameEventAttackersDeclared event) {
// Skip redraw for GUI player? // Skip redraw for GUI player?
if (event.player.getLobbyPlayer() == gui.getGuiPlayer()) { if (event.player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()) {
return null; return null;
} }

View File

@@ -13,6 +13,7 @@ import forge.interfaces.IButton;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.interfaces.IWinLoseView; import forge.interfaces.IWinLoseView;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.view.IGameView; import forge.view.IGameView;
public abstract class GauntletWinLoseController { public abstract class GauntletWinLoseController {
@@ -48,7 +49,7 @@ public abstract class GauntletWinLoseController {
// the player can restart Forge to replay a match. // the player can restart Forge to replay a match.
// Pretty sure this can't be fixed until in-game states can be // Pretty sure this can't be fixed until in-game states can be
// saved. Doublestrike 07-10-12 // saved. Doublestrike 07-10-12
LobbyPlayer questPlayer = gui.getQuestPlayer(); LobbyPlayer questPlayer = GamePlayerUtil.getGuiPlayer();
// In all cases, update stats. // In all cases, update stats.
lstEventRecords.set(gd.getCompleted(), lastGame.getGamesWonBy(questPlayer) + " - " lstEventRecords.set(gd.getCompleted(), lastGame.getGamesWonBy(questPlayer) + " - "
@@ -115,8 +116,8 @@ public abstract class GauntletWinLoseController {
GauntletData gd = FModel.getGauntletData(); GauntletData gd = FModel.getGauntletData();
Deck aiDeck = gd.getDecks().get(gd.getCompleted()); Deck aiDeck = gd.getDecks().get(gd.getCompleted());
List<RegisteredPlayer> players = Lists.newArrayList(); List<RegisteredPlayer> players = Lists.newArrayList();
players.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(gui.getGuiPlayer())); players.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
players.add(new RegisteredPlayer(aiDeck).setPlayer(gui.createAiPlayer())); players.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
view.hide(); view.hide();
saveOptions(); saveOptions();

View File

@@ -90,11 +90,6 @@ public interface IGuiBase {
int getAvatarCount(); int getAvatarCount();
void copyToClipboard(String text); void copyToClipboard(String text);
void browseToUrl(String url) throws Exception; void browseToUrl(String url) throws Exception;
LobbyPlayer getGuiPlayer();
LobbyPlayer getAiPlayer(String name);
LobbyPlayer createAiPlayer();
LobbyPlayer createAiPlayer(String name, int avatarIndex);
LobbyPlayer getQuestPlayer();
IAudioClip createAudioClip(String filename); IAudioClip createAudioClip(String filename);
IAudioMusic createAudioMusic(String filename); IAudioMusic createAudioMusic(String filename);
void startAltSoundSystem(String filename, boolean isSynchronized); void startAltSoundSystem(String filename, boolean isSynchronized);

View File

@@ -25,6 +25,7 @@ import forge.game.GameType;
import forge.game.player.RegisteredPlayer; import forge.game.player.RegisteredPlayer;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.util.Aggregates; import forge.util.Aggregates;
/** /**
@@ -139,8 +140,8 @@ public class GauntletMini {
*/ */
private void startRound() { private void startRound() {
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
starter.add(new RegisteredPlayer(humanDeck).setPlayer(gui.getGuiPlayer())); starter.add(new RegisteredPlayer(humanDeck).setPlayer(GamePlayerUtil.getGuiPlayer()));
starter.add(aiOpponents.get(currentRound - 1).setPlayer(gui.createAiPlayer())); starter.add(aiOpponents.get(currentRound - 1).setPlayer(GamePlayerUtil.createAiPlayer()));
gui.startMatch(gauntletType, starter); gui.startMatch(gauntletType, starter);
} }

View File

@@ -4,6 +4,7 @@ import forge.interfaces.IButton;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.interfaces.IWinLoseView; import forge.interfaces.IWinLoseView;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.view.IGameView; import forge.view.IGameView;
public abstract class LimitedWinLoseController { public abstract class LimitedWinLoseController {
@@ -19,7 +20,7 @@ public abstract class LimitedWinLoseController {
lastGame = game0; lastGame = game0;
this.gui = gui; this.gui = gui;
gauntlet = FModel.getGauntletMini(gui); gauntlet = FModel.getGauntletMini(gui);
wonMatch = lastGame.isMatchWonBy(gui.getGuiPlayer()); wonMatch = lastGame.isMatchWonBy(GamePlayerUtil.getGuiPlayer());
} }
public void showOutcome() { public void showOutcome() {
@@ -31,7 +32,7 @@ public abstract class LimitedWinLoseController {
resetView(); resetView();
nextRound = false; nextRound = false;
if (lastGame.isWinner(gui.getGuiPlayer())) { if (lastGame.isWinner(GamePlayerUtil.getGuiPlayer())) {
gauntlet.addWin(); gauntlet.addWin();
} else { } else {
gauntlet.addLoss(); gauntlet.addLoss();

View File

@@ -24,6 +24,7 @@ import forge.game.card.Card;
import forge.game.player.Player; import forge.game.player.Player;
import forge.game.spellability.SpellAbility; import forge.game.spellability.SpellAbility;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.player.PlayerControllerHuman; import forge.player.PlayerControllerHuman;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.util.ITriggerEvent; import forge.util.ITriggerEvent;
@@ -100,7 +101,7 @@ public class InputPassPriority extends InputSyncronizedBase {
final Game game = player.getGame(); final Game game = player.getGame();
if (game.getStack().isEmpty()) { //phase can't end right now if stack isn't empty if (game.getStack().isEmpty()) { //phase can't end right now if stack isn't empty
Player player = game.getPhaseHandler().getPriorityPlayer(); Player player = game.getPhaseHandler().getPriorityPlayer();
if (player != null && player.getManaPool().willManaBeLostAtEndOfPhase() && player.getLobbyPlayer() == getGui().getGuiPlayer()) { if (player != null && player.getManaPool().willManaBeLostAtEndOfPhase() && player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()) {
ThreadUtil.invokeInGameThread(new Runnable() { //must invoke in game thread so dialog can be shown on mobile game ThreadUtil.invokeInGameThread(new Runnable() { //must invoke in game thread so dialog can be shown on mobile game
@Override @Override
public void run() { public void run() {

View File

@@ -38,6 +38,7 @@ import forge.interfaces.IGuiBase;
import forge.interfaces.IProgressBar; import forge.interfaces.IProgressBar;
import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.ItemManagerConfig;
import forge.limited.GauntletMini; import forge.limited.GauntletMini;
import forge.player.GamePlayerUtil;
import forge.properties.ForgeConstants; import forge.properties.ForgeConstants;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
@@ -91,6 +92,7 @@ public class FModel {
//Preferences are initialized first so that the splash screen can be translated. //Preferences are initialized first so that the splash screen can be translated.
try { try {
preferences = new ForgePreferences(); preferences = new ForgePreferences();
GamePlayerUtil.getGuiPlayer().setName(preferences.getPref(FPref.PLAYER_NAME));
} }
catch (final Exception exn) { catch (final Exception exn) {
throw new RuntimeException(exn); throw new RuntimeException(exn);

View File

@@ -1,9 +1,14 @@
package forge.player; package forge.player;
import forge.GuiBase;
import forge.LobbyPlayer;
import forge.ai.AiProfileUtil;
import forge.ai.LobbyPlayerAi;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.properties.ForgePreferences;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.util.GuiDisplayUtil;
import forge.util.MyRandom;
import forge.util.gui.SOptionPane; import forge.util.gui.SOptionPane;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -11,10 +16,51 @@ import org.apache.commons.lang3.StringUtils;
public final class GamePlayerUtil { public final class GamePlayerUtil {
private GamePlayerUtil() { }; private GamePlayerUtil() { };
private final static ForgePreferences prefs = FModel.getPreferences(); private static final LobbyPlayer guiPlayer = new LobbyPlayerHuman("Human", GuiBase.getInterface());
public static final LobbyPlayer getGuiPlayer() {
return guiPlayer;
}
public static final LobbyPlayer getGuiPlayer(String name, int index) {
if (index == 0) {
if (!name.equals(guiPlayer.getName())) {
guiPlayer.setName(name);
FModel.getPreferences().setPref(FPref.PLAYER_NAME, name);
FModel.getPreferences().save();
}
return guiPlayer;
}
//use separate LobbyPlayerHuman instance for human players beyond first
return new LobbyPlayerHuman(name, GuiBase.getInterface());
}
public static final LobbyPlayer getQuestPlayer() {
return guiPlayer; //TODO: Make this a separate player
}
public final static LobbyPlayer createAiPlayer() {
return createAiPlayer(GuiDisplayUtil.getRandomAiName());
}
public final static LobbyPlayer createAiPlayer(String name) {
int avatarCount = GuiBase.getInterface().getAvatarCount();
return createAiPlayer(name, avatarCount == 0 ? 0 : MyRandom.getRandom().nextInt(avatarCount));
}
public final static LobbyPlayer createAiPlayer(String name, int avatarIndex) {
LobbyPlayerAi player = new LobbyPlayerAi(name);
// TODO: implement specific AI profiles for quest mode.
String lastProfileChosen = FModel.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);
player.setAvatarIndex(avatarIndex);
return player;
}
public static void setPlayerName(final IGuiBase gui) { public static void setPlayerName(final IGuiBase gui) {
String oldPlayerName = prefs.getPref(FPref.PLAYER_NAME); String oldPlayerName = FModel.getPreferences().getPref(FPref.PLAYER_NAME);
String newPlayerName = null; String newPlayerName = null;
if (StringUtils.isBlank(oldPlayerName)) { if (StringUtils.isBlank(oldPlayerName)) {
@@ -23,13 +69,12 @@ public final class GamePlayerUtil {
newPlayerName = getVerifiedPlayerName(getPlayerNameUsingStandardPrompt(gui, oldPlayerName), oldPlayerName); newPlayerName = getVerifiedPlayerName(getPlayerNameUsingStandardPrompt(gui, oldPlayerName), oldPlayerName);
} }
prefs.setPref(FPref.PLAYER_NAME, newPlayerName); FModel.getPreferences().setPref(FPref.PLAYER_NAME, newPlayerName);
prefs.save(); FModel.getPreferences().save();
if (StringUtils.isBlank(oldPlayerName) && newPlayerName != "Human") { if (StringUtils.isBlank(oldPlayerName) && newPlayerName != "Human") {
showThankYouPrompt(gui, newPlayerName); showThankYouPrompt(gui, newPlayerName);
} }
} }
private static void showThankYouPrompt(final IGuiBase gui, final String playerName) { private static void showThankYouPrompt(final IGuiBase gui, final String playerName) {

View File

@@ -1299,7 +1299,7 @@ public class PlayerControllerHuman extends PlayerController {
} }
public boolean isGuiPlayer() { public boolean isGuiPlayer() {
return lobbyPlayer == getGui().getGuiPlayer(); return lobbyPlayer == GamePlayerUtil.getGuiPlayer();
} }
/* /*

View File

@@ -38,6 +38,7 @@ import forge.interfaces.IGuiBase;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.item.PreconDeck; import forge.item.PreconDeck;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgeConstants; import forge.properties.ForgeConstants;
import forge.quest.bazaar.QuestBazaarManager; import forge.quest.bazaar.QuestBazaarManager;
import forge.quest.bazaar.QuestItemType; import forge.quest.bazaar.QuestItemType;
@@ -481,7 +482,7 @@ public class QuestController {
if (ev instanceof GameEventMulligan) { if (ev instanceof GameEventMulligan) {
GameEventMulligan mev = (GameEventMulligan) ev; GameEventMulligan mev = (GameEventMulligan) ev;
// First mulligan is free // First mulligan is free
if (mev.player.getLobbyPlayer() == gui.getGuiPlayer() if (mev.player.getLobbyPlayer() == GamePlayerUtil.getGuiPlayer()
&& getAssets().hasItem(QuestItemType.SLEIGHT) && mev.player.getStats().getMulliganCount() < 7) { && getAssets().hasItem(QuestItemType.SLEIGHT) && mev.player.getStats().getMulliganCount() < 7) {
mev.player.drawCard(); mev.player.drawCard();
} }

View File

@@ -14,6 +14,7 @@ import forge.game.Match;
import forge.game.player.RegisteredPlayer; import forge.game.player.RegisteredPlayer;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.util.storage.IStorage; import forge.util.storage.IStorage;
@@ -145,12 +146,12 @@ public class QuestDraftUtils {
if (humanIndex > -1) { if (humanIndex > -1) {
matchup.hasHumanPlayer = true; matchup.hasHumanPlayer = true;
matchup.matchStarter.add(new RegisteredPlayer(decks.getHumanDeck()).setPlayer(gui.getGuiPlayer())); matchup.matchStarter.add(new RegisteredPlayer(decks.getHumanDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
int aiName = Integer.parseInt(draft.getStandings()[aiIndex]) - 1; int aiName = Integer.parseInt(draft.getStandings()[aiIndex]) - 1;
int aiDeckIndex = Integer.parseInt(draft.getStandings()[aiIndex]) - 1; int aiDeckIndex = Integer.parseInt(draft.getStandings()[aiIndex]) - 1;
matchup.matchStarter.add(new RegisteredPlayer(decks.getAiDecks().get(aiDeckIndex)).setPlayer(gui.createAiPlayer(draft.getAINames()[aiName], draft.getAIIcons()[aiName]))); matchup.matchStarter.add(new RegisteredPlayer(decks.getAiDecks().get(aiDeckIndex)).setPlayer(GamePlayerUtil.createAiPlayer(draft.getAINames()[aiName], draft.getAIIcons()[aiName])));
} else { } else {
@@ -158,10 +159,10 @@ public class QuestDraftUtils {
int aiName2 = Integer.parseInt(draft.getStandings()[player2]) - 1; int aiName2 = Integer.parseInt(draft.getStandings()[player2]) - 1;
int aiDeckIndex = Integer.parseInt(draft.getStandings()[player1]) - 1; int aiDeckIndex = Integer.parseInt(draft.getStandings()[player1]) - 1;
matchup.matchStarter.add(new RegisteredPlayer(decks.getAiDecks().get(aiDeckIndex)).setPlayer(gui.createAiPlayer(draft.getAINames()[aiName1], draft.getAIIcons()[aiName1]))); matchup.matchStarter.add(new RegisteredPlayer(decks.getAiDecks().get(aiDeckIndex)).setPlayer(GamePlayerUtil.createAiPlayer(draft.getAINames()[aiName1], draft.getAIIcons()[aiName1])));
aiDeckIndex = Integer.parseInt(draft.getStandings()[player2]) - 1; aiDeckIndex = Integer.parseInt(draft.getStandings()[player2]) - 1;
matchup.matchStarter.add(new RegisteredPlayer(decks.getAiDecks().get(aiDeckIndex)).setPlayer(gui.createAiPlayer(draft.getAINames()[aiName2], draft.getAIIcons()[aiName2]))); matchup.matchStarter.add(new RegisteredPlayer(decks.getAiDecks().get(aiDeckIndex)).setPlayer(GamePlayerUtil.createAiPlayer(draft.getAINames()[aiName2], draft.getAIIcons()[aiName2])));
} }

View File

@@ -40,6 +40,7 @@ import forge.limited.BoosterDraft;
import forge.limited.LimitedPoolType; import forge.limited.LimitedPoolType;
import forge.model.CardBlock; import forge.model.CardBlock;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.quest.data.QuestPreferences.QPref; import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.ReadPriceList; import forge.quest.io.ReadPriceList;
import forge.util.NameGenerator; import forge.util.NameGenerator;
@@ -801,7 +802,7 @@ public class QuestEventDraft {
} }
List<String> usedNames = new ArrayList<>(); List<String> usedNames = new ArrayList<>();
usedNames.add(quest.getGui().getGuiPlayer().getName()); usedNames.add(GamePlayerUtil.getGuiPlayer().getName());
for (int i = 0; i < 7; i++) { for (int i = 0; i < 7; i++) {
event.aiNames[i] = NameGenerator.getRandomName("Any", "Any", usedNames); event.aiNames[i] = NameGenerator.getRandomName("Any", "Any", usedNames);

View File

@@ -39,6 +39,7 @@ import forge.interfaces.IGuiBase;
import forge.item.IPaperCard; import forge.item.IPaperCard;
import forge.item.PaperToken; import forge.item.PaperToken;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.quest.bazaar.IQuestBazaarItem; import forge.quest.bazaar.IQuestBazaarItem;
import forge.quest.bazaar.QuestItemType; import forge.quest.bazaar.QuestItemType;
@@ -564,9 +565,9 @@ public class QuestUtil {
} }
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>(); List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
starter.add(humanStart.setPlayer(gui.getQuestPlayer())); starter.add(humanStart.setPlayer(GamePlayerUtil.getQuestPlayer()));
LobbyPlayer aiPlayer = gui.getAiPlayer(event.getOpponent() == null ? event.getTitle() : event.getOpponent()); LobbyPlayer aiPlayer = GamePlayerUtil.createAiPlayer(event.getOpponent() == null ? event.getTitle() : event.getOpponent());
gui.setPlayerAvatar(aiPlayer, event); gui.setPlayerAvatar(aiPlayer, event);
starter.add(aiStart.setPlayer(aiPlayer)); starter.add(aiStart.setPlayer(aiPlayer));

View File

@@ -16,6 +16,7 @@ import forge.interfaces.IGuiBase;
import forge.interfaces.IWinLoseView; import forge.interfaces.IWinLoseView;
import forge.item.*; import forge.item.*;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
import forge.quest.bazaar.QuestItemType; import forge.quest.bazaar.QuestItemType;
import forge.quest.data.QuestPreferences; import forge.quest.data.QuestPreferences;
@@ -47,7 +48,7 @@ public abstract class QuestWinLoseController {
this.gui = gui; this.gui = gui;
qData = FModel.getQuest(); qData = FModel.getQuest();
qEvent = qData.getCurrentEvent(); qEvent = qData.getCurrentEvent();
wonMatch = lastGame.isMatchWonBy(gui.getQuestPlayer()); wonMatch = lastGame.isMatchWonBy(GamePlayerUtil.getQuestPlayer());
isAnte = FModel.getPreferences().getPrefBoolean(FPref.UI_ANTE); isAnte = FModel.getPreferences().getPrefBoolean(FPref.UI_ANTE);
} }
@@ -61,7 +62,7 @@ public abstract class QuestWinLoseController {
qc.getCards().getShopList(); qc.getCards().getShopList();
} }
final LobbyPlayer questLobbyPlayer = gui.getQuestPlayer(); final LobbyPlayer questLobbyPlayer = GamePlayerUtil.getQuestPlayer();
PlayerView player = null; PlayerView player = null;
for (final PlayerView p : lastGame.getPlayers()) { for (final PlayerView p : lastGame.getPlayers()) {
if (p.getLobbyPlayer().equals(questLobbyPlayer)) { if (p.getLobbyPlayer().equals(questLobbyPlayer)) {
@@ -236,7 +237,7 @@ public abstract class QuestWinLoseController {
boolean hasNeverLost = true; boolean hasNeverLost = true;
int lifeDifferenceCredits = 0; int lifeDifferenceCredits = 0;
final LobbyPlayer localHuman = gui.getQuestPlayer(); final LobbyPlayer localHuman = GamePlayerUtil.getQuestPlayer();
for (final GameOutcome game : lastGame.getOutcomesOfMatch()) { for (final GameOutcome game : lastGame.getOutcomesOfMatch()) {
if (!game.isWinner(localHuman)) { if (!game.isWinner(localHuman)) {
hasNeverLost = false; hasNeverLost = false;

View File

@@ -10,6 +10,7 @@ import forge.events.UiEvent;
import forge.game.event.GameEvent; import forge.game.event.GameEvent;
import forge.interfaces.IGuiBase; import forge.interfaces.IGuiBase;
import forge.model.FModel; import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.properties.ForgeConstants; import forge.properties.ForgeConstants;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
@@ -29,7 +30,7 @@ public class SoundSystem {
public SoundSystem(final IGuiBase gui) { public SoundSystem(final IGuiBase gui) {
this.gui = gui; this.gui = gui;
this.visualizer = new EventVisualizer(gui.getGuiPlayer()); this.visualizer = new EventVisualizer(GamePlayerUtil.getGuiPlayer());
} }
private boolean isUsingAltSystem() { private boolean isUsingAltSystem() {
return FModel.getPreferences().getPrefBoolean(FPref.UI_ALT_SOUND_SYSTEM); return FModel.getPreferences().getPrefBoolean(FPref.UI_ALT_SOUND_SYSTEM);

View File

@@ -33,5 +33,9 @@ public final class GuiDisplayUtil {
final String playerName = FModel.getPreferences().getPref(FPref.PLAYER_NAME); final String playerName = FModel.getPreferences().getPref(FPref.PLAYER_NAME);
return text.replaceAll("(?i)human", playerName); return text.replaceAll("(?i)human", playerName);
} }
public static String getRandomAiName() {
return NameGenerator.getRandomName("Any", "Generic", getPlayerName());
}
} // end class GuiDisplayUtil } // end class GuiDisplayUtil