mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 19:58:00 +00:00
Lobby and NetServer moved out of FControl to allow their usage without Gui loaded (and FControl instantiated)
This commit is contained in:
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -14579,7 +14579,6 @@ src/main/java/forge/control/FControlGameEventHandler.java -text
|
||||
src/main/java/forge/control/FControlGamePlayback.java -text
|
||||
src/main/java/forge/control/InputQueue.java svneol=native#text/plain
|
||||
src/main/java/forge/control/KeyboardShortcuts.java -text
|
||||
src/main/java/forge/control/Lobby.java -text
|
||||
src/main/java/forge/control/RestartUtil.java -text
|
||||
src/main/java/forge/control/package-info.java -text
|
||||
src/main/java/forge/deck/CardCollections.java -text
|
||||
@@ -14975,8 +14974,10 @@ src/main/java/forge/model/BuildInfo.java -text
|
||||
src/main/java/forge/model/FModel.java svneol=native#text/plain
|
||||
src/main/java/forge/model/MultipleForgeJarsFoundError.java -text
|
||||
src/main/java/forge/model/package-info.java svneol=native#text/plain
|
||||
src/main/java/forge/net/FServer.java -text
|
||||
src/main/java/forge/net/IClientSocket.java -text
|
||||
src/main/java/forge/net/IConnectionObserver.java -text
|
||||
src/main/java/forge/net/Lobby.java -text
|
||||
src/main/java/forge/net/NetServer.java -text
|
||||
src/main/java/forge/net/client/INetClient.java -text
|
||||
src/main/java/forge/net/client/InvalidFieldInPacketException.java -text
|
||||
|
||||
@@ -29,6 +29,7 @@ import forge.game.player.LobbyPlayer;
|
||||
import forge.game.player.Player;
|
||||
import forge.game.player.PlayerStatistics;
|
||||
import forge.game.zone.ZoneType;
|
||||
import forge.net.FServer;
|
||||
import forge.util.Lang;
|
||||
import forge.util.maps.MapOfLists;
|
||||
|
||||
@@ -42,7 +43,7 @@ public class GameLogFormatter extends IGameEventVisitor.Base<GameLogEntry> {
|
||||
@Override
|
||||
public GameLogEntry visit(GameEventGameOutcome ev) {
|
||||
// add result entries to the game log
|
||||
final LobbyPlayer human = Singletons.getControl().getLobby().getGuiPlayer();
|
||||
final LobbyPlayer human = FServer.instance.getLobby().getGuiPlayer();
|
||||
|
||||
// This adds some extra entries to log
|
||||
final List<String> outcomes = new ArrayList<String>();
|
||||
|
||||
@@ -62,7 +62,7 @@ import forge.gui.match.controllers.CStack;
|
||||
import forge.gui.match.nonsingleton.VField;
|
||||
import forge.gui.match.views.VAntes;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.net.NetServer;
|
||||
import forge.net.FServer;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.properties.NewConstants;
|
||||
import forge.quest.QuestController;
|
||||
@@ -316,27 +316,16 @@ public enum FControl {
|
||||
if (children.length != 0) { children[0].setSize(display.getSize()); }
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @return
|
||||
*/
|
||||
private Lobby lobby = null;
|
||||
public Lobby getLobby() {
|
||||
if (lobby == null) {
|
||||
lobby = new Lobby();
|
||||
}
|
||||
return lobby;
|
||||
}
|
||||
|
||||
|
||||
public Player getCurrentPlayer() {
|
||||
// try current priority
|
||||
Player currentPriority = game.getPhaseHandler().getPriorityPlayer();
|
||||
if( null != currentPriority && currentPriority.getLobbyPlayer() == getLobby().getGuiPlayer() )
|
||||
if( null != currentPriority && currentPriority.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer() )
|
||||
return currentPriority;
|
||||
|
||||
// otherwise find just any player, belonging to this lobbyplayer
|
||||
for(Player p : game.getPlayers())
|
||||
if(p.getLobbyPlayer() == getLobby().getGuiPlayer() )
|
||||
if(p.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer() )
|
||||
return p;
|
||||
|
||||
return null;
|
||||
@@ -354,16 +343,6 @@ public enum FControl {
|
||||
return soundSystem;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @return
|
||||
*/
|
||||
private final NetServer server = new NetServer();
|
||||
public NetServer getServer() {
|
||||
// TODO Auto-generated method stub
|
||||
return server;
|
||||
}
|
||||
|
||||
private Game game;
|
||||
private boolean gameHasHumanPlayer;
|
||||
|
||||
@@ -374,7 +353,7 @@ public enum FControl {
|
||||
public final void stopGame() {
|
||||
List<Player> pp = new ArrayList<Player>();
|
||||
for(Player p : game.getPlayers()) {
|
||||
if ( p.getOriginalLobbyPlayer() == getLobby().getGuiPlayer() )
|
||||
if ( p.getOriginalLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer() )
|
||||
pp.add(p);
|
||||
}
|
||||
boolean hasHuman = !pp.isEmpty();
|
||||
@@ -386,7 +365,7 @@ public enum FControl {
|
||||
p.concede();
|
||||
|
||||
Player priorityPlayer = game.getPhaseHandler().getPriorityPlayer();
|
||||
boolean humanHasPriority = priorityPlayer == null || priorityPlayer.getLobbyPlayer() == getLobby().getGuiPlayer();
|
||||
boolean humanHasPriority = priorityPlayer == null || priorityPlayer.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer();
|
||||
|
||||
if ( hasHuman && humanHasPriority )
|
||||
game.getAction().checkGameOverCondition();
|
||||
@@ -428,7 +407,7 @@ public enum FControl {
|
||||
this.game = game0;
|
||||
game.subscribeToEvents(Singletons.getControl().getSoundSystem());
|
||||
|
||||
LobbyPlayer humanLobbyPlayer = getLobby().getGuiPlayer();
|
||||
LobbyPlayer humanLobbyPlayer = FServer.instance.getLobby().getGuiPlayer();
|
||||
// The UI controls should use these game data as models
|
||||
CMatchUI.SINGLETON_INSTANCE.initMatch(game.getRegisteredPlayers(), humanLobbyPlayer);
|
||||
CDock.SINGLETON_INSTANCE.setModel(game, humanLobbyPlayer);
|
||||
@@ -449,7 +428,7 @@ public enum FControl {
|
||||
// Add playback controls to match if needed
|
||||
gameHasHumanPlayer = false;
|
||||
for(Player p : game.getPlayers()) {
|
||||
if ( p.getController().getLobbyPlayer() == getLobby().getGuiPlayer() )
|
||||
if ( p.getController().getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer() )
|
||||
gameHasHumanPlayer = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,7 @@ import forge.gui.match.controllers.CMessage;
|
||||
import forge.gui.match.controllers.CStack;
|
||||
import forge.gui.match.nonsingleton.VHand;
|
||||
import forge.gui.toolbox.special.PhaseLabel;
|
||||
import forge.net.FServer;
|
||||
import forge.util.maps.MapOfLists;
|
||||
|
||||
public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
@@ -138,7 +139,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
return null;
|
||||
|
||||
FThreads.invokeInEdtNowOrLater(new Runnable() { @Override public void run() {
|
||||
CMatchUI.SINGLETON_INSTANCE.initHandViews(fc.getLobby().getGuiPlayer());
|
||||
CMatchUI.SINGLETON_INSTANCE.initHandViews(FServer.instance.getLobby().getGuiPlayer());
|
||||
VMatchUI.SINGLETON_INSTANCE.populate();
|
||||
for(VHand h : VMatchUI.SINGLETON_INSTANCE.getHands()) {
|
||||
h.getLayoutControl().updateHand();
|
||||
@@ -282,7 +283,7 @@ public class FControlGameEventHandler extends IGameEventVisitor.Base<Void> {
|
||||
@Override
|
||||
public Void visit(GameEventAttackersDeclared event) {
|
||||
// Skip redraw for GUI player?
|
||||
if ( event.player.getLobbyPlayer() == fc.getLobby().getGuiPlayer() )
|
||||
if ( event.player.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer() )
|
||||
return null;
|
||||
|
||||
// Update all attackers.
|
||||
|
||||
@@ -24,12 +24,13 @@ import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.game.GameType;
|
||||
import forge.game.Match;
|
||||
import forge.game.RegisteredPlayer;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -162,7 +163,7 @@ public class GauntletMini {
|
||||
});
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
starter.add(RegisteredPlayer.fromDeck(humanDeck).setPlayer(lobby.getGuiPlayer()));
|
||||
starter.add(aiOpponents.get(currentRound - 1).setPlayer(lobby.getAiPlayer()));
|
||||
final Match mc = new Match(gauntletType, starter);
|
||||
|
||||
@@ -17,14 +17,14 @@ import javax.swing.ScrollPaneConstants;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.Singletons;
|
||||
import forge.control.ChatArea;
|
||||
import forge.control.Lobby;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.gui.toolbox.FTextArea;
|
||||
import forge.gui.toolbox.FTextField;
|
||||
import forge.gui.toolbox.SmartScroller;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
@@ -57,7 +57,7 @@ public enum FNetOverlay {
|
||||
if ( StringUtils.isBlank(message) )
|
||||
return;
|
||||
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
lobby.speak(ChatArea.Room, lobby.getGuiPlayer(), message);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@ import forge.gui.deckeditor.controllers.CEditorConstructed;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.home.sanctioned.VSubmenuConstructed;
|
||||
import forge.net.FServer;
|
||||
import forge.net.NetServer;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.NewConstants;
|
||||
@@ -81,7 +82,7 @@ public enum CHomeUI implements ICDoc {
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblStartServer().setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NetServer srv = Singletons.getControl().getServer();
|
||||
NetServer srv = FServer.instance.getServer();
|
||||
srv.listen(NewConstants.SERVER_PORT_NUMBER);
|
||||
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblStopServer().setEnabled(true);
|
||||
@@ -94,7 +95,7 @@ public enum CHomeUI implements ICDoc {
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblStopServer().setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Singletons.getControl().getServer().stop();
|
||||
FServer.instance.getServer().stop();
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblStopServer().setEnabled(false);
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblStartServer().setEnabled(true);
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ import javax.swing.SwingUtilities;
|
||||
import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckgenUtil;
|
||||
import forge.game.GameType;
|
||||
@@ -24,6 +23,8 @@ import forge.gauntlet.GauntletData;
|
||||
import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* Controls the "gauntlet contests" submenu in the home UI.
|
||||
@@ -118,7 +119,7 @@ public enum CSubmenuGauntletContests implements ICDoc {
|
||||
Deck aiDeck = gd.getDecks().get(gd.getCompleted());
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
|
||||
starter.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
|
||||
starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
|
||||
|
||||
@@ -12,7 +12,6 @@ import javax.swing.SwingUtilities;
|
||||
import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.game.GameType;
|
||||
import forge.game.Match;
|
||||
@@ -22,6 +21,8 @@ import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.home.VHomeUI;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* Controls the "quick gauntlet" submenu in the home UI.
|
||||
@@ -110,7 +111,7 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
final Deck aiDeck = gd.getDecks().get(gd.getCompleted());
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
starter.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
|
||||
starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import javax.swing.SwingUtilities;
|
||||
import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckgenUtil;
|
||||
import forge.deck.DeckgenUtil.DeckTypes;
|
||||
@@ -24,6 +23,8 @@ import forge.gauntlet.GauntletData;
|
||||
import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* Controls the "quick gauntlet" submenu in the home UI.
|
||||
@@ -144,7 +145,7 @@ public enum CSubmenuGauntletQuick implements ICDoc {
|
||||
final Deck aiDeck = gd.getDecks().get(gd.getCompleted());
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
starter.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
|
||||
starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.card.CardEdition;
|
||||
import forge.control.FControl;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.game.GameType;
|
||||
import forge.game.Match;
|
||||
@@ -25,6 +24,8 @@ import forge.gui.SOverlayUtils;
|
||||
import forge.gui.deckeditor.CDeckEditorUI;
|
||||
import forge.gui.deckeditor.controllers.CEditorQuestCardShop;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
import forge.quest.QuestController;
|
||||
import forge.quest.QuestEvent;
|
||||
import forge.quest.QuestEventChallenge;
|
||||
@@ -433,10 +434,9 @@ public class SSubmenuQuestUtil {
|
||||
}
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
starter.add(humanStart.setPlayer(lobby.getQuestPlayer()));
|
||||
|
||||
LobbyPlayer aiPlayer = Singletons.getControl().getLobby().getAiPlayer(event.getOpponent() == null ? event.getTitle() : event.getOpponent());
|
||||
LobbyPlayer aiPlayer = FServer.instance.getLobby().getAiPlayer(event.getOpponent() == null ? event.getTitle() : event.getOpponent());
|
||||
aiPlayer.setIconImageKey(event.getIconImageKey());
|
||||
starter.add(aiStart.setPlayer(aiPlayer));
|
||||
|
||||
|
||||
@@ -10,13 +10,14 @@ import javax.swing.SwingUtilities;
|
||||
import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.game.GameType;
|
||||
import forge.game.Match;
|
||||
import forge.game.RegisteredPlayer;
|
||||
import forge.game.player.LobbyPlayer;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
|
||||
@@ -116,8 +117,7 @@ public enum CSubmenuConstructed implements ICDoc {
|
||||
JOptionPane.showMessageDialog(null, "Left-side deck " + aiDeckErrorMessage, "Invalid deck", JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
LobbyPlayer rightPlayer = view.isRightPlayerAi() ? lobby.getAiPlayer() : lobby.getGuiPlayer();
|
||||
LobbyPlayer leftPlayer = view.isLeftPlayerAi() ? lobby.getAiPlayer() : lobby.getGuiPlayer();
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.FControl;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckGroup;
|
||||
import forge.game.GameType;
|
||||
@@ -26,6 +25,8 @@ import forge.gui.SOverlayUtils;
|
||||
import forge.gui.deckeditor.CDeckEditorUI;
|
||||
import forge.gui.deckeditor.controllers.CEditorDraftingProcess;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* Controls the draft submenu in the home UI.
|
||||
@@ -132,7 +133,7 @@ public enum CSubmenuDraft implements ICDoc {
|
||||
}
|
||||
|
||||
List<RegisteredPlayer> starter = new ArrayList<RegisteredPlayer>();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
starter.add(RegisteredPlayer.fromDeck(humanDeck).setPlayer(lobby.getGuiPlayer()));
|
||||
starter.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.FControl;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.deck.DeckgenUtil;
|
||||
@@ -30,6 +29,8 @@ import forge.gui.framework.ICDoc;
|
||||
import forge.gui.toolbox.FList;
|
||||
import forge.gui.toolbox.special.FDeckChooser;
|
||||
import forge.item.PaperCard;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.util.Aggregates;
|
||||
@@ -218,7 +219,7 @@ public enum CSubmenuArchenemy implements ICDoc {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
|
||||
List<RegisteredPlayer> players = new ArrayList<RegisteredPlayer>();
|
||||
for (int i = 0; i < view.getNumPlayers(); i++) {
|
||||
|
||||
@@ -14,7 +14,6 @@ import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.FControl;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.deck.DeckgenUtil;
|
||||
@@ -31,6 +30,8 @@ import forge.gui.framework.ICDoc;
|
||||
import forge.gui.toolbox.FList;
|
||||
import forge.gui.toolbox.special.FDeckChooser;
|
||||
import forge.item.PaperCard;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.util.Aggregates;
|
||||
@@ -149,7 +150,7 @@ public enum CSubmenuPlanechase implements ICDoc {
|
||||
|
||||
/** @param lists0   {@link java.util.List}<{@link javax.swing.JList}> */
|
||||
private void startGame() {
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
List<RegisteredPlayer> helper = new ArrayList<RegisteredPlayer>();
|
||||
List<Deck> playerDecks = new ArrayList<Deck>();
|
||||
for (int i = 0; i < view.getNumPlayers(); i++) {
|
||||
|
||||
@@ -13,7 +13,6 @@ import com.google.common.collect.Iterables;
|
||||
import forge.Command;
|
||||
import forge.FThreads;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.game.GameType;
|
||||
@@ -25,6 +24,8 @@ import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.toolbox.special.FDeckChooser;
|
||||
import forge.item.PaperCard;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
|
||||
@@ -171,7 +172,7 @@ public enum CSubmenuVanguard implements ICDoc {
|
||||
GuiDialog.message(defaultAvatarInfo.toString());
|
||||
}
|
||||
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
List<RegisteredPlayer> helper = new ArrayList<RegisteredPlayer>();
|
||||
for (int i = 0; i < view.getNumPlayers(); i++) {
|
||||
LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer();
|
||||
|
||||
@@ -22,6 +22,7 @@ import forge.game.zone.ZoneType;
|
||||
import forge.gui.GuiChoose;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.item.PaperCard;
|
||||
import forge.net.FServer;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
|
||||
/**
|
||||
@@ -144,10 +145,10 @@ public class ControlWinLose {
|
||||
|
||||
for (int i = 0; i < cntPlayers; i++ ) {
|
||||
Player fromGame = lastGame.getRegisteredPlayers().get(i);
|
||||
if( !fromGame.hasWon()) continue; // not a loser
|
||||
if( !fromGame.hasWon()) continue;
|
||||
|
||||
// offer to winner, if he is local human
|
||||
if (fromGame.getController().getLobbyPlayer() == Singletons.getControl().getLobby().getGuiPlayer()) {
|
||||
if (fromGame.getController().getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer()) {
|
||||
List<PaperCard> chosen = GuiChoose.noneOrMany("Select cards to add to your deck", losses);
|
||||
if (null != chosen) {
|
||||
RegisteredPlayer psc = match.getPlayers().get(i);
|
||||
|
||||
@@ -28,7 +28,6 @@ import com.google.common.collect.Lists;
|
||||
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
import forge.Singletons;
|
||||
import forge.control.Lobby;
|
||||
import forge.deck.Deck;
|
||||
import forge.game.Game;
|
||||
import forge.game.GameType;
|
||||
@@ -40,6 +39,8 @@ import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.net.FServer;
|
||||
import forge.net.Lobby;
|
||||
|
||||
/**
|
||||
* The Win/Lose handler for 'gauntlet' type tournament
|
||||
@@ -81,13 +82,13 @@ public class GauntletWinLose extends ControlWinLose {
|
||||
lstEventRecords.set(gd.getCompleted(), "Ongoing");
|
||||
|
||||
final Match match = lastGame.getMatch();
|
||||
|
||||
|
||||
// Match won't be saved until it is over. This opens up a cheat
|
||||
// or failsafe mechanism (depending on your perspective) in which
|
||||
// the player can restart Forge to replay a match.
|
||||
// Pretty sure this can't be fixed until in-game states can be
|
||||
// saved. Doublestrike 07-10-12
|
||||
LobbyPlayer questPlayer = Singletons.getControl().getLobby().getQuestPlayer();
|
||||
LobbyPlayer questPlayer = FServer.instance.getLobby().getQuestPlayer();
|
||||
|
||||
// In all cases, update stats.
|
||||
lstEventRecords.set(gd.getCompleted(), match.getGamesWonBy(questPlayer) + " - "
|
||||
@@ -201,7 +202,7 @@ public class GauntletWinLose extends ControlWinLose {
|
||||
GauntletData gd = Singletons.getModel().getGauntletData();
|
||||
Deck aiDeck = gd.getDecks().get(gd.getCompleted());
|
||||
List<RegisteredPlayer> players = Lists.newArrayList();
|
||||
Lobby lobby = Singletons.getControl().getLobby();
|
||||
Lobby lobby = FServer.instance.getLobby();
|
||||
players.add(RegisteredPlayer.fromDeck(gd.getUserDeck()).setPlayer(lobby.getGuiPlayer()));
|
||||
players.add(RegisteredPlayer.fromDeck(aiDeck).setPlayer(lobby.getAiPlayer()));
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ import forge.game.Game;
|
||||
import forge.game.limited.GauntletMini;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.net.FServer;
|
||||
|
||||
/**
|
||||
* The Win/Lose handler for 'gauntlet' type tournament
|
||||
@@ -58,7 +59,7 @@ public class LimitedWinLose extends ControlWinLose {
|
||||
super(view0, lastGame);
|
||||
this.view = view0;
|
||||
gauntlet = Singletons.getModel().getGauntletMini();
|
||||
this.wonMatch = lastGame.getMatch().isWonBy(Singletons.getControl().getLobby().getGuiPlayer());
|
||||
this.wonMatch = lastGame.getMatch().isWonBy(FServer.instance.getLobby().getGuiPlayer());
|
||||
}
|
||||
|
||||
|
||||
@@ -79,7 +80,7 @@ public class LimitedWinLose extends ControlWinLose {
|
||||
resetView();
|
||||
nextRound = false;
|
||||
|
||||
if (lastGame.getOutcome().isWinner(Singletons.getControl().getLobby().getGuiPlayer())) {
|
||||
if (lastGame.getOutcome().isWinner(FServer.instance.getLobby().getGuiPlayer())) {
|
||||
gauntlet.addWin();
|
||||
} else {
|
||||
gauntlet.addLoss();
|
||||
|
||||
@@ -60,6 +60,7 @@ import forge.item.PaperCard;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.OpenablePack;
|
||||
import forge.item.TournamentPack;
|
||||
import forge.net.FServer;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.quest.IQuestRewardCard;
|
||||
import forge.quest.QuestController;
|
||||
@@ -108,7 +109,7 @@ public class QuestWinLose extends ControlWinLose {
|
||||
this.view = view0;
|
||||
qData = Singletons.getModel().getQuest();
|
||||
qEvent = qData.getCurrentEvent();
|
||||
this.wonMatch = lastGame.getMatch().isWonBy(Singletons.getControl().getLobby().getQuestPlayer());
|
||||
this.wonMatch = lastGame.getMatch().isWonBy(FServer.instance.getLobby().getQuestPlayer());
|
||||
this.isAnte = Singletons.getModel().getPreferences().getPrefBoolean(FPref.UI_ANTE);
|
||||
}
|
||||
|
||||
@@ -127,7 +128,7 @@ public class QuestWinLose extends ControlWinLose {
|
||||
this.getView().getBtnRestart().setVisible(false);
|
||||
QuestController qc = Singletons.getModel().getQuest();
|
||||
|
||||
LobbyPlayer questPlayer = Singletons.getControl().getLobby().getQuestPlayer();
|
||||
LobbyPlayer questPlayer = FServer.instance.getLobby().getQuestPlayer();
|
||||
if (isAnte) {
|
||||
//do per-game actions
|
||||
GameOutcome outcome = lastGame.getOutcome();
|
||||
@@ -342,7 +343,7 @@ public class QuestWinLose extends ControlWinLose {
|
||||
// Gameplay bonuses (for each game win)
|
||||
boolean hasNeverLost = true;
|
||||
|
||||
LobbyPlayer localHuman = Singletons.getControl().getLobby().getQuestPlayer();
|
||||
LobbyPlayer localHuman = FServer.instance.getLobby().getQuestPlayer();
|
||||
for (final GameOutcome game : lastGame.getMatch().getPlayedGames()) {
|
||||
if (!game.isWinner(localHuman)) {
|
||||
hasNeverLost = false;
|
||||
|
||||
@@ -29,6 +29,7 @@ import forge.gui.toolbox.FOverlay;
|
||||
import forge.gui.toolbox.FScrollPane;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
import forge.gui.toolbox.FTextArea;
|
||||
import forge.net.FServer;
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
@@ -192,7 +193,7 @@ public class ViewWinLose {
|
||||
}
|
||||
|
||||
private String composeTitle(GameOutcome outcome) {
|
||||
LobbyPlayer guiPlayer = Singletons.getControl().getLobby().getGuiPlayer();
|
||||
LobbyPlayer guiPlayer = FServer.instance.getLobby().getGuiPlayer();
|
||||
int nHumansInGame = 0;
|
||||
for(Pair<LobbyPlayer, PlayerStatistics> pps : outcome) {
|
||||
if( pps.getKey() == guiPlayer )
|
||||
|
||||
31
src/main/java/forge/net/FServer.java
Normal file
31
src/main/java/forge/net/FServer.java
Normal file
@@ -0,0 +1,31 @@
|
||||
package forge.net;
|
||||
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this type.
|
||||
*
|
||||
*/
|
||||
public enum FServer {
|
||||
instance();
|
||||
|
||||
private Lobby lobby = null;
|
||||
|
||||
public Lobby getLobby() {
|
||||
if (lobby == null) {
|
||||
lobby = new Lobby();
|
||||
}
|
||||
return lobby;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Write javadoc for this method.
|
||||
* @return
|
||||
*/
|
||||
private final NetServer server = new NetServer();
|
||||
public NetServer getServer() {
|
||||
// TODO Auto-generated method stub
|
||||
return server;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
package forge.control;
|
||||
package forge.net;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import forge.control.ChatArea;
|
||||
import forge.game.player.LobbyPlayer;
|
||||
import forge.game.player.LobbyPlayerAi;
|
||||
import forge.game.player.LobbyPlayerHuman;
|
||||
@@ -3,8 +3,8 @@ package forge.net.client;
|
||||
import java.util.concurrent.BlockingDeque;
|
||||
import java.util.concurrent.LinkedBlockingDeque;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.game.player.LobbyPlayer;
|
||||
import forge.net.FServer;
|
||||
import forge.net.IClientSocket;
|
||||
import forge.net.IConnectionObserver;
|
||||
import forge.net.client.state.ConnectedClientState;
|
||||
@@ -44,7 +44,9 @@ public class NetClient implements IConnectionObserver, INetClient{
|
||||
@Override
|
||||
public void onConnectionClosed() {
|
||||
// Tell the game, the client is gone.
|
||||
if ( player != null ) Singletons.getControl().getLobby().disconnectPlayer(player);
|
||||
if ( player != null ) {
|
||||
FServer.instance.getLobby().disconnectPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +83,7 @@ public class NetClient implements IConnectionObserver, INetClient{
|
||||
*/
|
||||
@Override
|
||||
public final void createPlayer(String name) {
|
||||
player = Singletons.getControl().getLobby().findOrCreateRemotePlayer(name, this);
|
||||
player = FServer.instance.getLobby().findOrCreateRemotePlayer(name, this);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package forge.net.client.state;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.control.ChatArea;
|
||||
import forge.net.FServer;
|
||||
import forge.net.client.INetClient;
|
||||
import forge.net.protocol.toserver.ChatPacketSrv;
|
||||
import forge.net.protocol.toserver.IPacketSrv;
|
||||
@@ -22,7 +22,7 @@ public class InLobbyClientState implements IClientState {
|
||||
if( data instanceof ChatPacketSrv) {
|
||||
ChatPacketSrv cp = (ChatPacketSrv) data;
|
||||
// if ( not muted )
|
||||
Singletons.getControl().getLobby().speak(ChatArea.Room, client.getPlayer(), cp.getMessage());
|
||||
FServer.instance.getLobby().speak(ChatArea.Room, client.getPlayer(), cp.getMessage());
|
||||
// else
|
||||
// client.send("You are banned and cannot speak");
|
||||
return true;
|
||||
|
||||
@@ -33,6 +33,7 @@ import forge.game.event.GameEvent;
|
||||
import forge.game.event.GameEventMulligan;
|
||||
import forge.item.PaperCard;
|
||||
import forge.item.PreconDeck;
|
||||
import forge.net.FServer;
|
||||
import forge.properties.NewConstants;
|
||||
import forge.quest.bazaar.QuestBazaarManager;
|
||||
import forge.quest.bazaar.QuestItemType;
|
||||
@@ -430,7 +431,7 @@ public class QuestController {
|
||||
if ( ev instanceof GameEventMulligan ) {
|
||||
GameEventMulligan mev = (GameEventMulligan)ev;
|
||||
// First mulligan is free
|
||||
if (mev.player.getLobbyPlayer() == Singletons.getControl().getLobby().getQuestPlayer()
|
||||
if (mev.player.getLobbyPlayer() == FServer.instance.getLobby().getQuestPlayer()
|
||||
&& getAssets().hasItem(QuestItemType.SLEIGHT) && mev.player.getStats().getMulliganCount() == 0) {
|
||||
mev.player.drawCard();
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package forge.sound;
|
||||
import java.util.Collection;
|
||||
|
||||
import forge.Card;
|
||||
import forge.Singletons;
|
||||
import forge.card.spellability.SpellAbility;
|
||||
import forge.game.event.GameEventBlockersDeclared;
|
||||
import forge.game.event.GameEventCardChangeZone;
|
||||
@@ -29,6 +28,7 @@ import forge.game.zone.ZoneType;
|
||||
import forge.gui.events.IUiEventVisitor;
|
||||
import forge.gui.events.UiEventAttackerDeclared;
|
||||
import forge.gui.events.UiEventBlockerAssigned;
|
||||
import forge.net.FServer;
|
||||
import forge.util.maps.MapOfLists;
|
||||
|
||||
/**
|
||||
@@ -60,7 +60,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
|
||||
public SoundEffectType visit(GameEventShuffle event) { return SoundEffectType.Shuffle; }
|
||||
public SoundEffectType visit(GameEventTokenCreated event) { return SoundEffectType.Token; }
|
||||
public SoundEffectType visit(GameEventBlockersDeclared event) {
|
||||
boolean isLocalHuman = event.defendingPlayer.getLobbyPlayer() == Singletons.getControl().getLobby().getGuiPlayer();
|
||||
boolean isLocalHuman = event.defendingPlayer.getLobbyPlayer() == FServer.instance.getLobby().getGuiPlayer();
|
||||
if (isLocalHuman)
|
||||
return null; // already played sounds in interactive mode
|
||||
|
||||
@@ -79,7 +79,7 @@ public class EventVisualizer extends IGameEventVisitor.Base<SoundEffectType> imp
|
||||
* Plays the sound corresponding to the outcome of the duel.
|
||||
*/
|
||||
public SoundEffectType visit(GameEventGameOutcome event) {
|
||||
boolean humanWonTheDuel = event.result.getWinner() == Singletons.getControl().getLobby().getGuiPlayer();
|
||||
boolean humanWonTheDuel = event.result.getWinner() == FServer.instance.getLobby().getGuiPlayer();
|
||||
return humanWonTheDuel ? SoundEffectType.WinDuel : SoundEffectType.LoseDuel;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user