[Desktop] More fixes to Commander & TL deck selection lobby.

This commit is contained in:
Myrd
2015-12-26 17:34:13 +00:00
parent 99e1b29cbf
commit b1bbdf178c
2 changed files with 27 additions and 33 deletions

View File

@@ -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);
@@ -326,6 +327,7 @@ public class PlayerPanel extends FPanel {
deckLabel.setVisible(isDeckBuildingAllowed);
deckBtn.setVisible(isDeckBuildingAllowed);
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();
}

View File

@@ -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<DeckProxy> 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<FList<Object>> 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<DeckProxy> 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();