mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
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:
@@ -51,6 +51,7 @@ import forge.interfaces.IGuiBase;
|
||||
import forge.item.PaperCard;
|
||||
import forge.match.input.InputQueue;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.screens.deckeditor.CDeckEditorUI;
|
||||
import forge.screens.deckeditor.controllers.CEditorQuestCardShop;
|
||||
import forge.screens.match.CMatchUI;
|
||||
@@ -250,7 +251,7 @@ public class GuiDesktop implements IGuiBase {
|
||||
|
||||
@Override
|
||||
public void updatePlayerControl() {
|
||||
CMatchUI.SINGLETON_INSTANCE.initHandViews(getGuiPlayer());
|
||||
CMatchUI.SINGLETON_INSTANCE.initHandViews(GamePlayerUtil.getGuiPlayer());
|
||||
SLayoutIO.loadLayout(null);
|
||||
VMatchUI.SINGLETON_INSTANCE.populate();
|
||||
for (VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) {
|
||||
@@ -504,31 +505,6 @@ public class GuiDesktop implements IGuiBase {
|
||||
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
|
||||
public IAudioClip createAudioClip(String filename) {
|
||||
return AudioClip.fileExists(filename) ? new AudioClip(filename) : null;
|
||||
|
||||
@@ -42,7 +42,6 @@ import forge.GuiBase;
|
||||
import forge.ImageCache;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.Singletons;
|
||||
import forge.ai.AiProfileUtil;
|
||||
import forge.ai.LobbyPlayerAi;
|
||||
import forge.assets.FSkinProp;
|
||||
import forge.control.KeyboardShortcuts.Shortcut;
|
||||
@@ -88,9 +87,6 @@ import forge.sound.SoundSystem;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FSkin;
|
||||
import forge.toolbox.special.PhaseIndicator;
|
||||
import forge.util.GuiDisplayUtil;
|
||||
import forge.util.MyRandom;
|
||||
import forge.util.NameGenerator;
|
||||
import forge.view.FFrame;
|
||||
import forge.view.FView;
|
||||
import forge.view.IGameView;
|
||||
@@ -730,38 +726,8 @@ public enum FControl implements KeyEventDispatcher {
|
||||
//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() {
|
||||
return guiPlayer;
|
||||
return GamePlayerUtil.getGuiPlayer();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package forge.screens.home.gauntlet;
|
||||
|
||||
import forge.GuiBase;
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.deck.Deck;
|
||||
import forge.game.GameType;
|
||||
@@ -9,8 +9,9 @@ import forge.gauntlet.GauntletData;
|
||||
import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
@@ -102,11 +103,10 @@ public enum CSubmenuGauntletContests implements ICDoc {
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
|
||||
IGuiBase fc = GuiBase.getInterface();
|
||||
starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(fc.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(fc.createAiPlayer()));
|
||||
starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||
|
||||
fc.startMatch(GameType.Gauntlet, starter);
|
||||
Singletons.getControl().startMatch(GameType.Gauntlet, starter);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package forge.screens.home.gauntlet;
|
||||
|
||||
import forge.GuiBase;
|
||||
import forge.Singletons;
|
||||
import forge.UiCommand;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckType;
|
||||
@@ -11,8 +11,8 @@ import forge.gauntlet.GauntletData;
|
||||
import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -130,11 +130,10 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
});
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
IGuiBase fc = GuiBase.getInterface();
|
||||
starter.add(new RegisteredPlayer(userDeck).setPlayer(fc.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(fc.createAiPlayer()));
|
||||
starter.add(new RegisteredPlayer(userDeck).setPlayer(GamePlayerUtil.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||
|
||||
fc.startMatch(GameType.Gauntlet, starter);
|
||||
Singletons.getControl().startMatch(GameType.Gauntlet, starter);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -2,7 +2,6 @@ package forge.screens.home.gauntlet;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.Singletons;
|
||||
import forge.control.FControl;
|
||||
import forge.deck.DeckType;
|
||||
import forge.game.GameType;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
@@ -10,6 +9,8 @@ import forge.gauntlet.GauntletData;
|
||||
import forge.gauntlet.GauntletUtil;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.player.GamePlayerUtil;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
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);
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
FControl fc = Singletons.getControl();
|
||||
starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(fc.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(gd.getDecks().get(gd.getCompleted())).setPlayer(fc.getAiPlayer()));
|
||||
starter.add(new RegisteredPlayer(gd.getUserDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(gd.getDecks().get(gd.getCompleted())).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||
|
||||
fc.startMatch(GameType.Gauntlet, starter);
|
||||
Singletons.getControl().startMatch(GameType.Gauntlet, starter);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.home.sanctioned;
|
||||
|
||||
import forge.GuiBase;
|
||||
import forge.LobbyPlayer;
|
||||
import forge.UiCommand;
|
||||
import forge.Singletons;
|
||||
@@ -13,12 +12,12 @@ import forge.game.GameType;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
import forge.gui.GuiDialog;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.item.PaperCard;
|
||||
import forge.menus.IMenuProvider;
|
||||
import forge.menus.MenuUtil;
|
||||
import forge.model.CardCollections;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.toolbox.FList;
|
||||
@@ -224,13 +223,12 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
}
|
||||
}
|
||||
|
||||
IGuiBase fc = GuiBase.getInterface();
|
||||
List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
|
||||
for (final int i : view.getParticipants()) {
|
||||
String name = view.getPlayerName(i);
|
||||
LobbyPlayer lobbyPlayer = view.isPlayerAI(i)
|
||||
? fc.createAiPlayer(name, view.getPlayerAvatar(i))
|
||||
: fc.getGuiPlayer();
|
||||
? GamePlayerUtil.createAiPlayer(name, view.getPlayerAvatar(i))
|
||||
: GamePlayerUtil.getGuiPlayer(name, i);
|
||||
RegisteredPlayer rp = view.getDeckChooser(i).getPlayer();
|
||||
|
||||
if (variantTypes.isEmpty()) {
|
||||
|
||||
@@ -16,6 +16,7 @@ import forge.itemmanager.ItemManagerConfig;
|
||||
import forge.limited.BoosterDraft;
|
||||
import forge.limited.LimitedPoolType;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.screens.deckeditor.CDeckEditorUI;
|
||||
import forge.screens.deckeditor.controllers.CEditorDraftingProcess;
|
||||
@@ -137,13 +138,13 @@ public enum CSubmenuDraft implements ICDoc {
|
||||
}
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GuiBase.getInterface().getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(GuiBase.getInterface().createAiPlayer()));
|
||||
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||
for (RegisteredPlayer pl : starter) {
|
||||
pl.assignConspiracies();
|
||||
}
|
||||
|
||||
GuiBase.getInterface().startMatch(GameType.Draft, starter);
|
||||
Singletons.getControl().startMatch(GameType.Draft, starter);
|
||||
}
|
||||
|
||||
/** */
|
||||
|
||||
@@ -9,7 +9,6 @@ import forge.game.GameType;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
import forge.gui.GuiChoose;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.interfaces.IGuiBase;
|
||||
import forge.model.FModel;
|
||||
import forge.screens.deckeditor.CDeckEditorUI;
|
||||
import forge.deck.DeckProxy;
|
||||
@@ -20,6 +19,7 @@ import forge.toolbox.FOptionPane;
|
||||
import forge.itemmanager.ItemManagerConfig;
|
||||
import forge.limited.LimitedPoolType;
|
||||
import forge.limited.WinstonDraft;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -128,10 +128,9 @@ public enum CSubmenuWinston implements ICDoc {
|
||||
throw new IllegalStateException("Draft: Computer deck is null!");
|
||||
}
|
||||
|
||||
IGuiBase fc = GuiBase.getInterface();
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(fc.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(fc.createAiPlayer()));
|
||||
starter.add(new RegisteredPlayer(humanDeck.getDeck()).setPlayer(GamePlayerUtil.getGuiPlayer()));
|
||||
starter.add(new RegisteredPlayer(aiDeck).setPlayer(GamePlayerUtil.createAiPlayer()));
|
||||
|
||||
Singletons.getControl().startMatch(GameType.Winston, starter);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import forge.assets.FSkinProp;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.FScreen;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.quest.QuestController;
|
||||
import forge.quest.QuestDraftUtils;
|
||||
import forge.screens.home.quest.CSubmenuChallenges;
|
||||
@@ -78,7 +79,7 @@ public class QuestDraftWinLose extends ControlWinLose {
|
||||
|
||||
QuestController quest = FModel.getQuest();
|
||||
|
||||
final LobbyPlayer questLobbyPlayer = GuiBase.getInterface().getQuestPlayer();
|
||||
final LobbyPlayer questLobbyPlayer = GamePlayerUtil.getQuestPlayer();
|
||||
final List<PlayerView> players = lastGame.getPlayers();
|
||||
boolean gameHadHumanPlayer = false;
|
||||
for (final PlayerView p : players) {
|
||||
|
||||
@@ -31,6 +31,7 @@ import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.framework.SLayoutIO;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.properties.FileLocation;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.screens.match.CMatchUI;
|
||||
@@ -115,7 +116,7 @@ public enum CDock implements ICDoc {
|
||||
* View deck list.
|
||||
*/
|
||||
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) {
|
||||
FDeckViewer.show(deck);
|
||||
}
|
||||
|
||||
@@ -17,6 +17,7 @@ import forge.game.GameType;
|
||||
import forge.game.Match;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
import forge.model.FModel;
|
||||
import forge.player.GamePlayerUtil;
|
||||
import forge.util.Lang;
|
||||
|
||||
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")));
|
||||
|
||||
List<RegisteredPlayer> pp = new ArrayList<RegisteredPlayer>();
|
||||
pp.add(new RegisteredPlayer(d1).setPlayer(GuiBase.getInterface().createAiPlayer("Ai-" + d1.getName(), 0)));
|
||||
pp.add(new RegisteredPlayer(d2).setPlayer(GuiBase.getInterface().createAiPlayer("Ai_" + d2.getName(), 1)));
|
||||
pp.add(new RegisteredPlayer(d1).setPlayer(GamePlayerUtil.createAiPlayer("Ai-" + d1.getName(), 0)));
|
||||
pp.add(new RegisteredPlayer(d2).setPlayer(GamePlayerUtil.createAiPlayer("Ai_" + d2.getName(), 1)));
|
||||
GameRules rules = new GameRules(GameType.Constructed);
|
||||
Match mc = new Match(rules, pp);
|
||||
for(int iGame = 0; iGame < nGames; iGame++)
|
||||
for (int iGame = 0; iGame < nGames; iGame++) {
|
||||
simulateSingleMatch(mc, iGame);
|
||||
}
|
||||
System.out.flush();
|
||||
}
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user