diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java b/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java index b8001d13634..c3450288868 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/PlayerPanel.java @@ -315,7 +315,8 @@ public class PlayerPanel extends FPanel { }; private void updateVariantControlsVisibility() { - final boolean isCommanderApplied = mayEdit && (lobby.hasVariant(GameType.Commander) || lobby.hasVariant(GameType.TinyLeaders)); + final boolean isTinyLeaders = lobby.hasVariant(GameType.TinyLeaders); + final boolean isCommanderApplied = mayEdit && (lobby.hasVariant(GameType.Commander) || isTinyLeaders); final boolean isPlanechaseApplied = mayEdit && lobby.hasVariant(GameType.Planechase); final boolean isVanguardApplied = mayEdit && lobby.hasVariant(GameType.Vanguard); final boolean isArchenemyApplied = mayEdit && lobby.hasVariant(GameType.Archenemy); @@ -325,7 +326,8 @@ public class PlayerPanel extends FPanel { deckLabel.setVisible(isDeckBuildingAllowed); deckBtn.setVisible(isDeckBuildingAllowed); - cmdDeckSelectorBtn.setVisible(isCommanderApplied); + cmdDeckSelectorBtn.setVisible(isCommanderApplied); + cmdDeckEditor.setText(isTinyLeaders ? "TL Deck Editor" : "Commander Deck Editor"); cmdDeckEditor.setVisible(isCommanderApplied); cmdLabel.setVisible(isCommanderApplied); @@ -422,6 +424,10 @@ public class PlayerPanel extends FPanel { deckBtn.setText(text); } + public void setCommanderDeckSelectorButtonText(final String text) { + cmdDeckSelectorBtn.setText(text); + } + public void focusOnAvatar() { avatarLabel.requestFocusInWindow(); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java index 69d34552561..758a973aa0b 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/VLobby.java @@ -459,6 +459,7 @@ public class VLobby implements ILobbyView { // Full deck selection selectMainDeck(playerIndex); selectCommanderDeck(playerIndex); + selectTinyLeadersDeck(playerIndex); // Deck section selection selectSchemeDeck(playerIndex); @@ -472,8 +473,15 @@ public class VLobby implements ILobbyView { return; } final FDeckChooser mainChooser = getDeckChooser(playerIndex); - VLobby.this.onDeckClicked(playerIndex, mainChooser.getSelectedDeckType(), mainChooser.getDeck(), mainChooser.getLstDecks().getSelectedItems()); - getDeckChooser(playerIndex).saveState(); + final DeckType type = mainChooser.getSelectedDeckType(); + final Deck deck = mainChooser.getDeck(); + final Collection selectedDecks = mainChooser.getLstDecks().getSelectedItems(); + if (playerIndex < activePlayersNum && lobby.mayEdit(playerIndex)) { + final String text = type.toString() + ": " + Lang.joinHomogenous(selectedDecks, DeckProxy.FN_GET_NAME); + playerPanels.get(playerIndex).setDeckSelectorButtonText(text); + fireDeckChangeListener(playerIndex, deck); + } + mainChooser.saveState(); } private void selectSchemeDeck(final int playerIndex) { @@ -508,32 +516,19 @@ public class VLobby implements ILobbyView { } private void selectCommanderDeck(final int playerIndex) { - if (playerIndex >= activePlayersNum || !hasVariant(GameType.Commander)) { - return; - } - - final Object selected = getCommanderDeckLists().get(playerIndex).getSelectedValue(); - Deck deck = null; - if (selected instanceof String) { - if (selected.equals("Random")) { - deck = RandomDeckGenerator.getRandomUserDeck(lobby, playerPanels.get(playerIndex).isAi()); - } - } else if (selected instanceof Deck) { - deck = (Deck) selected; - } - if (deck == null) { //Can be null if player deselects the list selection or chose Generate - deck = DeckgenUtil.generateCommanderDeck(isPlayerAI(playerIndex), GameType.Commander); - } - fireDeckChangeListener(playerIndex, deck); - getDeckChooser(playerIndex).saveState(); + selectCommanderOrTinyLeadersDeck(playerIndex, GameType.Commander, getCommanderDeckLists()); } private void selectTinyLeadersDeck(final int playerIndex) { - if (playerIndex >= activePlayersNum || !hasVariant(GameType.TinyLeaders)) { + selectCommanderOrTinyLeadersDeck(playerIndex, GameType.TinyLeaders, getTinyLeadersDeckLists()); + } + + private void selectCommanderOrTinyLeadersDeck(final int playerIndex, final GameType gameType, final List> deckLists) { + if (playerIndex >= activePlayersNum || !hasVariant(gameType)) { return; } - final Object selected = getTinyLeadersDeckLists().get(playerIndex).getSelectedValue(); + final Object selected = deckLists.get(playerIndex).getSelectedValue(); Deck deck = null; if (selected instanceof String) { if (selected.equals("Random")) { @@ -543,8 +538,9 @@ public class VLobby implements ILobbyView { deck = (Deck) selected; } if (deck == null) { //Can be null if player deselects the list selection or chose Generate - deck = DeckgenUtil.generateCommanderDeck(isPlayerAI(playerIndex), GameType.TinyLeaders); + deck = DeckgenUtil.generateCommanderDeck(isPlayerAI(playerIndex), gameType); } + playerPanels.get(playerIndex).setCommanderDeckSelectorButtonText(deck.getName()); fireDeckChangeListener(playerIndex, deck); getDeckChooser(playerIndex).saveState(); } @@ -624,14 +620,6 @@ public class VLobby implements ILobbyView { getDeckChooser(playerIndex).saveState(); } - protected void onDeckClicked(final int iPlayer, final DeckType type, final Deck deck, final Collection selectedDecks) { - if (iPlayer < activePlayersNum && lobby.mayEdit(iPlayer)) { - final String text = type.toString() + ": " + Lang.joinHomogenous(selectedDecks, DeckProxy.FN_GET_NAME); - playerPanels.get(iPlayer).setDeckSelectorButtonText(text); - fireDeckChangeListener(iPlayer, deck); - } - } - /** Populates the deck panel with the focused player's deck choices. */ private void populateDeckPanel(final GameType forGameType) { decksFrame.removeAll();