Support showing prompt for second human player

This commit is contained in:
drdev
2014-09-23 13:38:39 +00:00
parent b7ceefc8c4
commit efefedd445
29 changed files with 260 additions and 172 deletions

View File

@@ -52,7 +52,6 @@ import forge.gui.framework.SLayoutIO;
import forge.interfaces.IButton;
import forge.interfaces.IGuiBase;
import forge.item.PaperCard;
import forge.match.input.InputQueue;
import forge.model.FModel;
import forge.screens.deckeditor.CDeckEditorUI;
import forge.screens.deckeditor.controllers.CEditorQuestCardShop;
@@ -235,12 +234,12 @@ public class GuiDesktop implements IGuiBase {
}
@Override
public IButton getBtnOK() {
public IButton getBtnOK(PlayerView playerView) {
return VMatchUI.SINGLETON_INSTANCE.getBtnOK();
}
@Override
public IButton getBtnCancel() {
public IButton getBtnCancel(PlayerView playerView) {
return VMatchUI.SINGLETON_INSTANCE.getBtnCancel();
}
@@ -426,7 +425,7 @@ public class GuiDesktop implements IGuiBase {
}
@Override
public void showPromptMessage(final String message) {
public void showPromptMessage(final PlayerView playerView, final String message) {
CMatchUI.SINGLETON_INSTANCE.showMessage(message);
}
@@ -435,11 +434,6 @@ public class GuiDesktop implements IGuiBase {
return CMatchUI.SINGLETON_INSTANCE.stopAtPhase(playerTurn, phase);
}
@Override
public InputQueue getInputQueue() {
return FControl.instance.getInputQueue();
}
public Object showManaPool(final PlayerView player) {
return null; //not needed since mana pool icons are always visible
}

View File

@@ -63,6 +63,7 @@ import forge.gui.framework.SLayoutIO;
import forge.gui.framework.SOverflowUtil;
import forge.gui.framework.SResizingUtil;
import forge.match.input.InputQueue;
import forge.match.input.InputSynchronized;
import forge.menus.ForgeMenu;
import forge.model.FModel;
import forge.player.GamePlayerUtil;
@@ -407,19 +408,20 @@ public enum FControl implements KeyEventDispatcher {
public Player getCurrentPlayer() {
if (game == null) { return null; }
// try current priority
Player currentPriority = game.getPhaseHandler().getPriorityPlayer();
if (null != currentPriority && currentPriority.getLobbyPlayer() == getGuiPlayer()) {
return currentPriority;
}
// otherwise find just any player, belonging to this lobbyplayer
for (Player p : game.getPlayers()) {
if (p.getLobbyPlayer() == getGuiPlayer()) {
return p;
LobbyPlayer lobbyPlayer = getGuiPlayer();
if (gameViews.size() > 1) {
//account for if second human player is currently being prompted
InputSynchronized activeInput = InputQueue.getActiveInput();
if (activeInput != null) {
lobbyPlayer = activeInput.getOwner().getLobbyPlayer();
}
}
for (Player p : game.getPlayers()) {
if (p.getLobbyPlayer() == lobbyPlayer) {
return p;
}
}
return null;
}
@@ -511,15 +513,16 @@ public enum FControl implements KeyEventDispatcher {
if (p.getController() instanceof PlayerControllerHuman) {
final PlayerControllerHuman controller = (PlayerControllerHuman) p.getController();
LocalGameView gameView = controller.getGameView();
game.subscribeToEvents(new FControlGameEventHandler(GuiBase.getInterface(), gameView));
game.subscribeToEvents(new FControlGameEventHandler(gameView));
gameViews.add(gameView);
humanCount++;
}
}
if (humanCount == 0) { //watch game but do not participate
LocalGameView gameView = new WatchLocalGame(game, GuiBase.getInterface());
game.subscribeToEvents(new FControlGameEventHandler(GuiBase.getInterface(), gameView));
LocalGameView gameView = new WatchLocalGame(GuiBase.getInterface(), game);
gameView.setLocalPlayer(sortedPlayers.get(0));
game.subscribeToEvents(new FControlGameEventHandler(gameView));
gameViews.add(gameView);
}
else if (humanCount == sortedPlayers.size()) {