diff --git a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java index 6a37659aab0..0b60abb2a88 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuArchenemy.java @@ -226,11 +226,11 @@ public enum CSubmenuArchenemy implements ICDoc { RegisteredPlayer psc = RegisteredPlayer.forArchenemy(playerDecks.get(i), schemes); psc.setStartingLife(40); // 904.5: The Archenemy has 40 life. - players.add(psc.setPlayer(lobby.getGuiPlayer())); + players.add(psc.setPlayer(view.isPlayerAI(i) ? lobby.getAiPlayer() : lobby.getGuiPlayer())); } else { RegisteredPlayer psc = RegisteredPlayer.fromDeck(playerDecks.get(i)); psc.setTeamNumber(0); - players.add(psc.setPlayer(lobby.getAiPlayer())); + players.add(psc.setPlayer(view.isPlayerAI(i) ? lobby.getAiPlayer() : lobby.getGuiPlayer())); } } diff --git a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuCommander.java b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuCommander.java index 0636d489442..1e23fc05712 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuCommander.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuCommander.java @@ -152,7 +152,7 @@ public enum CSubmenuCommander implements ICDoc { Lobby lobby = FServer.instance.getLobby(); List helper = new ArrayList(); for (int i = 0; i < view.getNumPlayers(); i++) { - LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer(); + LobbyPlayer player = view.isPlayerAI(i) ? lobby.getAiPlayer() : lobby.getGuiPlayer(); helper.add(RegisteredPlayer.forCommander(playerDecks.get(i)).setPlayer(player)); } final Match mc = new Match(GameType.Commander, helper); diff --git a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuPlanechase.java b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuPlanechase.java index c8039807d6b..273e8b8149f 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuPlanechase.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuPlanechase.java @@ -215,7 +215,7 @@ public enum CSubmenuPlanechase implements ICDoc { GuiDialog.message("Player " + (i+1) + " will use a default planar deck."); } - LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer(); + LobbyPlayer player = view.isPlayerAI(i) ? lobby.getAiPlayer() : lobby.getGuiPlayer(); helper.add(RegisteredPlayer.forPlanechase(playerDecks.get(i), planes).setPlayer(player)); } diff --git a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java index a92f85f89e8..4382a8b3905 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/CSubmenuVanguard.java @@ -175,7 +175,7 @@ public enum CSubmenuVanguard implements ICDoc { Lobby lobby = FServer.instance.getLobby(); List helper = new ArrayList(); for (int i = 0; i < view.getNumPlayers(); i++) { - LobbyPlayer player = i == 0 ? lobby.getGuiPlayer() : lobby.getAiPlayer(); + LobbyPlayer player = view.isPlayerAI(i) ? lobby.getAiPlayer() : lobby.getGuiPlayer(); helper.add(RegisteredPlayer.forVanguard(playerDecks.get(i), playerAvatars.get(i)).setPlayer(player)); } final Match mc = new Match(GameType.Vanguard, helper); diff --git a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java index 3d72c5f51ba..90be5d03bdd 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuArchenemy.java @@ -5,6 +5,7 @@ import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.List; +import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JPanel; @@ -68,6 +69,7 @@ public enum VSubmenuArchenemy implements IVSubmenu { private final FList archenemySchemes = new FList(); private final List allSchemeDecks = new ArrayList(); private final JCheckBox cbUseDefaultSchemes = new FCheckBox("Use default scheme decks if possible."); + private final List playerIsAIRadios = new ArrayList(); private final List fieldRadios = new ArrayList(); private int currentNumTabsShown = 8; @@ -125,6 +127,19 @@ public enum VSubmenuArchenemy implements IVSubmenu { tempChooser.initialize(); deckChoosers.add(tempChooser); + + ButtonGroup tempBtnGroup = new ButtonGroup(); + FRadioButton tmpAI = new FRadioButton(); + tmpAI.setText("AI"); + tmpAI.setSelected(i != 0); + FRadioButton tmpHuman = new FRadioButton(); + tmpHuman.setText("Human"); + tmpHuman.setSelected(i == 0); + tempPanel.add(tmpAI); + tempPanel.add(tmpHuman,"wrap"); + tempBtnGroup.add(tmpAI); + tempBtnGroup.add(tmpHuman); + playerIsAIRadios.add(tmpAI); tempPanel.add(tempChooser, "span 1 2, w 55%!, gap 10px 10px 0px 10px, growy, pushy, wrap"); if (i == 0) { @@ -155,6 +170,10 @@ public enum VSubmenuArchenemy implements IVSubmenu { // ensure we don't fire the selected event before the tabPane is populated fieldRadios.get(fieldRadios.size() - 1).setSelected(true); } + + public boolean isPlayerAI(int playernum) { + return playerIsAIRadios.get(playernum).isSelected(); + } private void changeTabs(int toShow) { if (toShow < currentNumTabsShown) { diff --git a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuCommander.java b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuCommander.java index fdfe3813e0a..2fca80cf62a 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuCommander.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuCommander.java @@ -61,6 +61,7 @@ public enum VSubmenuCommander implements IVSubmenu { private final FTabbedPane tabPane = new FTabbedPane(); private final List playerPanels = new ArrayList(); + private final List playerIsAIRadios = new ArrayList(); private final List fieldRadios = new ArrayList(); private final ButtonGroup grpFields = new ButtonGroup(); private int currentNumTabsShown = 8; @@ -135,10 +136,23 @@ public enum VSubmenuCommander implements IVSubmenu { deckLists.add(tempList); + ButtonGroup tempBtnGroup = new ButtonGroup(); + FRadioButton tmpAI = new FRadioButton(); + tmpAI.setText("AI"); + tmpAI.setSelected(i != 0); + FRadioButton tmpHuman = new FRadioButton(); + tmpHuman.setText("Human"); + tmpHuman.setSelected(i == 0); + tempPanel.add(tmpAI); + tempPanel.add(tmpHuman,"wrap"); + tempBtnGroup.add(tmpAI); + tempBtnGroup.add(tmpHuman); + playerIsAIRadios.add(tmpAI); + tempPanel.add(new FLabel.Builder().text("Select Deck:").build(), "gap 0px 0px 10px 10px, flowy"); JScrollPane scrDecks = new FScrollPane(tempList, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); - tempPanel.add(scrDecks, "h 90%, gap 0px 10px 0px 10px, growy, pushy, wrap"); + tempPanel.add(scrDecks, "w 55%!, h 90%, gap 0px 10px 0px 10px, growy, pushy, wrap"); playerPanels.add(tempPanel); if (i == 0) { @@ -151,6 +165,10 @@ public enum VSubmenuCommander implements IVSubmenu { pnlStart.setOpaque(false); pnlStart.add(btnStart, "span 1 3, growx, pushx, align center"); } + + public boolean isPlayerAI(int playernum) { + return playerIsAIRadios.get(playernum).isSelected(); + } private void changeTabs(int toShow) { if (toShow < currentNumTabsShown) { diff --git a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuPlanechase.java b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuPlanechase.java index d8792e79437..8b353fd4381 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuPlanechase.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuPlanechase.java @@ -67,6 +67,7 @@ public enum VSubmenuPlanechase implements IVSubmenu { private final List> planarDeckLists = new ArrayList>(); private final List allPlanarDecks = new ArrayList(); private final JCheckBox cbUseDefaultPlanes = new FCheckBox("Use default planar decks if possible."); + private final List playerIsAIRadios = new ArrayList(); private final List fieldRadios = new ArrayList(); private final ButtonGroup grpFields = new ButtonGroup(); private int currentNumTabsShown = 8; @@ -97,6 +98,7 @@ public enum VSubmenuPlanechase implements IVSubmenu { FPanel tempPanel; FDeckChooser tempChooser; FList tempPlanarDeckList; + ButtonGroup tempBtnGroup; //Settings panel FPanel settingsPanel = new FPanel(); @@ -128,6 +130,19 @@ public enum VSubmenuPlanechase implements IVSubmenu { tempChooser.initialize(); deckChoosers.add(tempChooser); + + tempBtnGroup = new ButtonGroup(); + FRadioButton tmpAI = new FRadioButton(); + tmpAI.setText("AI"); + tmpAI.setSelected(i != 0); + FRadioButton tmpHuman = new FRadioButton(); + tmpHuman.setText("Human"); + tmpHuman.setSelected(i == 0); + tempPanel.add(tmpAI); + tempPanel.add(tmpHuman,"wrap"); + tempBtnGroup.add(tmpAI); + tempBtnGroup.add(tmpHuman); + playerIsAIRadios.add(tmpAI); tempPanel.add(tempChooser, "span 1 2, w 55%!, gap 10px 10px 0px 10px, growy, pushy, wrap"); @@ -156,6 +171,10 @@ public enum VSubmenuPlanechase implements IVSubmenu { pnlStart.add(cbArtifacts, strCheckboxConstraints); pnlStart.add(cbRemoveSmall, strCheckboxConstraints); } + + public boolean isPlayerAI(int playernum) { + return playerIsAIRadios.get(playernum).isSelected(); + } private void changeTabs(int toShow) { if (toShow < currentNumTabsShown) { diff --git a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java index 04eeda6f207..ff52c8b1a9d 100644 --- a/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java +++ b/forge-gui/src/main/java/forge/gui/home/variant/VSubmenuVanguard.java @@ -79,6 +79,7 @@ public enum VSubmenuVanguard implements IVSubmenu { private final List> avatarLists = new ArrayList>(); private final List fieldRadios = new ArrayList(); + private final List playerIsAIRadios = new ArrayList(); private final ButtonGroup grpFields = new ButtonGroup(); private final FCheckBox cbDefaultAvatars = new FCheckBox("Use deck-default avatars if possible."); private final List cdpAvatarDetails = new ArrayList(); @@ -145,6 +146,7 @@ public enum VSubmenuVanguard implements IVSubmenu { FDeckChooser tempChooser; FList tempList; CardDetailPanel tempDetail; + ButtonGroup tempBtnGroup; //Settings panel FPanel settingsPanel = new FPanel(); @@ -183,6 +185,19 @@ public enum VSubmenuVanguard implements IVSubmenu { deckChoosers.add(tempChooser); avatarLists.add(tempList); + + tempBtnGroup = new ButtonGroup(); + FRadioButton tmpAI = new FRadioButton(); + tmpAI.setText("AI"); + tmpAI.setSelected(i != 0); + FRadioButton tmpHuman = new FRadioButton(); + tmpHuman.setText("Human"); + tmpHuman.setSelected(i == 0); + tempPanel.add(tmpAI); + tempPanel.add(tmpHuman,"wrap"); + tempBtnGroup.add(tmpAI); + tempBtnGroup.add(tmpHuman); + playerIsAIRadios.add(tmpAI); tempPanel.add(tempChooser, "span 1 2, w 55%!, gap 10px 10px 0px 10px, growy, pushy, wrap"); @@ -211,6 +226,10 @@ public enum VSubmenuVanguard implements IVSubmenu { pnlStart.add(cbArtifacts, strCheckboxConstraints); pnlStart.add(cbRemoveSmall, strCheckboxConstraints); } + + public boolean isPlayerAI(int playernum) { + return playerIsAIRadios.get(playernum).isSelected(); + } private void changeTabs(int toShow) { if (toShow < currentNumTabsShown) {