mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
- Moved Commander to Constructed match setup.
- Variants menu removed
This commit is contained in:
@@ -21,6 +21,7 @@ import com.google.common.collect.ArrayListMultimap;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Multimap;
|
||||
|
||||
import forge.GameCommand;
|
||||
import forge.card.CardCharacteristicName;
|
||||
import forge.card.CardType;
|
||||
@@ -1481,7 +1482,7 @@ public class GameAction {
|
||||
p1.drawCards(p1.getMaxHandSize());
|
||||
}
|
||||
|
||||
performMulligans(first, gameType == GameType.Commander);
|
||||
performMulligans(first, game.getRules().hasAppliedVariant(GameType.Commander));
|
||||
if (game.isGameOver()) { break; } // conceded during "mulligan" prompt
|
||||
|
||||
game.setAge(GameStage.Play);
|
||||
|
||||
@@ -71,7 +71,7 @@ public class CostAddMana extends CostPart {
|
||||
Card source = sa.getHostCard();
|
||||
|
||||
ColorSet cid = null;
|
||||
if (ai.getGame().getRules().getGameType() == GameType.Commander) {
|
||||
if (ai.getGame().getRules().hasAppliedVariant(GameType.Commander)) {
|
||||
cid = ai.getCommander().getRules().getColorIdentity();
|
||||
}
|
||||
ArrayList<Mana> manaProduced = new ArrayList<Mana>();
|
||||
|
||||
@@ -21,6 +21,7 @@ import com.google.common.base.Function;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import forge.card.MagicColor;
|
||||
import forge.card.mana.ManaCost;
|
||||
import forge.game.*;
|
||||
@@ -2112,8 +2113,7 @@ public class Player extends GameEntity implements Comparable<Player> {
|
||||
return this.loseConditionMet(GameLossReason.Poisoned, null);
|
||||
}
|
||||
|
||||
if(game.getRules().getGameType() == GameType.Commander)
|
||||
{
|
||||
if (game.getRules().hasAppliedVariant(GameType.Commander)) {
|
||||
Map<Card,Integer> cmdDmg = getCommanderDamage();
|
||||
for(Card c : cmdDmg.keySet())
|
||||
{
|
||||
|
||||
@@ -130,7 +130,7 @@ public class AbilityManaPart implements java.io.Serializable {
|
||||
}
|
||||
ColorSet CID = null;
|
||||
|
||||
if (player.getGame().getRules().getGameType() == GameType.Commander) {
|
||||
if (player.getGame().getRules().hasAppliedVariant(GameType.Commander)) {
|
||||
CID = player.getCommander().getRules().getColorIdentity();
|
||||
}
|
||||
//clear lastProduced
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
package forge.gui.deckchooser;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.card.CardDb;
|
||||
import forge.card.CardRules;
|
||||
import forge.card.CardRulesPredicates;
|
||||
import forge.card.ColorSet;
|
||||
import forge.deck.CardPool;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.deck.generation.*;
|
||||
import forge.gui.toolbox.FOptionPane;
|
||||
import forge.gui.toolbox.itemmanager.DeckManager;
|
||||
@@ -80,7 +86,6 @@ public class DeckgenUtil {
|
||||
return deck;
|
||||
}
|
||||
|
||||
|
||||
public static QuestEvent getQuestEvent(final String name) {
|
||||
QuestController qCtrl = Singletons.getModel().getQuest();
|
||||
for (QuestEventChallenge challenge : qCtrl.getChallenges()) {
|
||||
@@ -247,4 +252,44 @@ public class DeckgenUtil {
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/** Generate a 2-color Commander deck. */
|
||||
public static Deck generateCommanderDeck(boolean forAi) {
|
||||
final Deck deck;
|
||||
CardDb cardDb = Singletons.getMagicDb().getCommonCards();
|
||||
PaperCard commander;
|
||||
ColorSet colorID;
|
||||
|
||||
// Get random multicolor Legendary creature
|
||||
Predicate<CardRules> canPlay = forAi ? DeckGeneratorBase.AI_CAN_PLAY : DeckGeneratorBase.HUMAN_CAN_PLAY;
|
||||
Iterable<PaperCard> legends = cardDb.getAllCards(Predicates.compose(Predicates.and
|
||||
(CardRulesPredicates.Presets.IS_CREATURE, CardRulesPredicates.Presets.IS_LEGENDARY), PaperCard.FN_GET_RULES));
|
||||
legends = Iterables.filter(legends, Predicates.compose(Predicates.and
|
||||
(CardRulesPredicates.Presets.IS_MULTICOLOR, canPlay), PaperCard.FN_GET_RULES));
|
||||
|
||||
do {
|
||||
commander = Aggregates.random(legends);
|
||||
colorID = commander.getRules().getColorIdentity();
|
||||
} while (colorID.countColors() != 2);
|
||||
|
||||
List<String> comColors = new ArrayList<String>(2);
|
||||
if (colorID.hasWhite()) { comColors.add("White"); }
|
||||
if (colorID.hasBlue()) { comColors.add("Blue"); }
|
||||
if (colorID.hasBlack()) { comColors.add("Black"); }
|
||||
if (colorID.hasRed()) { comColors.add("Red"); }
|
||||
if (colorID.hasGreen()) { comColors.add("Green"); }
|
||||
|
||||
DeckGeneratorBase gen = null;
|
||||
gen = new DeckGenerator2Color(cardDb, comColors.get(0), comColors.get(1));
|
||||
gen.setSingleton(true);
|
||||
gen.setUseArtifacts(Singletons.getModel().getPreferences().getPrefBoolean(FPref.DECKGEN_ARTIFACTS));
|
||||
CardPool cards = gen == null ? null : gen.getDeck(60, forAi);
|
||||
|
||||
// After generating card lists, build deck.
|
||||
deck = new Deck("Generated Commander deck (" + commander.getName() + ")");
|
||||
deck.getMain().addAll(cards);
|
||||
deck.getOrCreate(DeckSection.Commander).add(commander);
|
||||
|
||||
return deck;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import forge.gui.home.settings.VSubmenuAvatars;
|
||||
import forge.gui.home.settings.VSubmenuDownloaders;
|
||||
import forge.gui.home.settings.VSubmenuPreferences;
|
||||
import forge.gui.home.settings.VSubmenuReleaseNotes;
|
||||
import forge.gui.home.variant.VSubmenuCommander;
|
||||
import forge.gui.match.views.*;
|
||||
import forge.gui.workshop.views.VCardDesigner;
|
||||
import forge.gui.workshop.views.VCardScript;
|
||||
@@ -53,7 +52,6 @@ public enum EDocID { /** */
|
||||
HOME_GAUNTLETLOAD (VSubmenuGauntletLoad.SINGLETON_INSTANCE), /** */
|
||||
HOME_GAUNTLETQUICK (VSubmenuGauntletQuick.SINGLETON_INSTANCE), /** */
|
||||
HOME_GAUNTLETCONTESTS (VSubmenuGauntletContests.SINGLETON_INSTANCE), /** */
|
||||
HOME_COMMANDER (VSubmenuCommander.SINGLETON_INSTANCE), /** */
|
||||
HOME_PREFERENCES (VSubmenuPreferences.SINGLETON_INSTANCE), /** */
|
||||
HOME_AVATARS (VSubmenuAvatars.SINGLETON_INSTANCE), /** */
|
||||
HOME_UTILITIES (VSubmenuDownloaders.SINGLETON_INSTANCE), /** */
|
||||
|
||||
@@ -11,7 +11,6 @@ public enum EMenuGroup { /** */
|
||||
SANCTIONED ("Sanctioned Formats"), /** */
|
||||
QUEST ("Quest Mode"), /** */
|
||||
GAUNTLET ("Gauntlets"), /** */
|
||||
VARIANT ("Variant"), /** */
|
||||
SETTINGS ("Game Settings");
|
||||
|
||||
private final String strTitle;
|
||||
|
||||
@@ -31,7 +31,6 @@ import forge.gui.home.settings.VSubmenuAvatars;
|
||||
import forge.gui.home.settings.VSubmenuDownloaders;
|
||||
import forge.gui.home.settings.VSubmenuPreferences;
|
||||
import forge.gui.home.settings.VSubmenuReleaseNotes;
|
||||
import forge.gui.home.variant.VSubmenuCommander;
|
||||
import forge.gui.toolbox.FLabel;
|
||||
import forge.gui.toolbox.FScrollPanel;
|
||||
import forge.gui.toolbox.FSkin;
|
||||
@@ -130,8 +129,6 @@ public enum VHomeUI implements IVTopLevelUI {
|
||||
allSubmenus.add(VSubmenuDownloaders.SINGLETON_INSTANCE);
|
||||
allSubmenus.add(VSubmenuReleaseNotes.SINGLETON_INSTANCE);
|
||||
|
||||
allSubmenus.add(VSubmenuCommander.SINGLETON_INSTANCE);
|
||||
|
||||
// For each group: init its panel
|
||||
final SortedMap<EMenuGroup, JPanel> allGroupPanels = new TreeMap<EMenuGroup, JPanel>();
|
||||
for (final EMenuGroup e : EMenuGroup.values()) {
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.gui.home.sanctioned;
|
||||
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.Singletons;
|
||||
import forge.deck.CardPool;
|
||||
@@ -62,11 +60,32 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
@Override public void run() {
|
||||
final CardCollections cColl = Singletons.getModel().getDecks();
|
||||
FList<Object> deckList;
|
||||
Vector<Object> listData;
|
||||
Object val;
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
// Commander: reinit deck list and restore last selections (if any)
|
||||
deckList = view.getCommanderDeckLists().get(i);
|
||||
listData = new Vector<Object>();
|
||||
listData.add("Generate");
|
||||
if (cColl.getCommander().size() > 0) {
|
||||
listData.add("Random");
|
||||
for (Deck comDeck : cColl.getCommander()) {
|
||||
listData.add(comDeck);
|
||||
}
|
||||
}
|
||||
val = deckList.getSelectedValue();
|
||||
deckList.setListData(listData);
|
||||
if (null != val) {
|
||||
deckList.setSelectedValue(val, true);
|
||||
}
|
||||
if (-1 == deckList.getSelectedIndex()) {
|
||||
deckList.setSelectedIndex(0);
|
||||
} // End Commander
|
||||
|
||||
// Archenemy: reinit deck list and restore last selections (if any)
|
||||
deckList = view.getSchemeDeckLists().get(i);
|
||||
Vector<Object> listData = new Vector<Object>();
|
||||
listData = new Vector<Object>();
|
||||
listData.add("Use deck's scheme section (random if unavailable)");
|
||||
listData.add("Generate");
|
||||
if (cColl.getScheme().size() > 0) {
|
||||
@@ -75,7 +94,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
listData.add(schemeDeck);
|
||||
}
|
||||
}
|
||||
Object val = deckList.getSelectedValue();
|
||||
val = deckList.getSelectedValue();
|
||||
deckList.setListData(listData);
|
||||
if (null != val) {
|
||||
deckList.setSelectedValue(val, true);
|
||||
@@ -166,12 +185,6 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
|
||||
/** Starts a match with the applied variants. */
|
||||
private void startGame(final List<GameType> variantTypes) {
|
||||
if (variantTypes.contains(GameType.Commander)) {
|
||||
FOptionPane.showMessageDialog("Commander matches cannot currently be started via the "
|
||||
+ "Constructed match setup screen. Please this variant then restart the match");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!view.isEnoughTeams()) {
|
||||
FOptionPane.showMessageDialog("There are not enough teams! Please adjust team allocations.");
|
||||
return;
|
||||
@@ -185,7 +198,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
} // Is it even possible anymore? I think current implementation assigns decks automatically.
|
||||
|
||||
boolean checkLegality = Singletons.getModel().getPreferences().getPrefBoolean(FPref.ENFORCE_DECK_LEGALITY);
|
||||
if (checkLegality) {
|
||||
if (checkLegality && !variantTypes.contains(GameType.Commander)) { //Commander deck replaces regular deck and is checked later
|
||||
for (final int i : view.getParticipants()) {
|
||||
String name = view.getPlayerName(i);
|
||||
String errMsg = GameType.Constructed.getDecksFormat().getDeckConformanceProblem(view.getDeckChooser(i).getPlayer().getDeck());
|
||||
@@ -201,20 +214,44 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
for (final int i : view.getParticipants()) {
|
||||
String name = view.getPlayerName(i);
|
||||
LobbyPlayer lobbyPlayer = view.isPlayerAI(i) ? lobby.getAiPlayer(name,
|
||||
view.getPlayerAvatar(i)) : lobby.getGuiPlayer();
|
||||
RegisteredPlayer rp = view.getDeckChooser(i).getPlayer();
|
||||
view.getPlayerAvatar(i)) : lobby.getGuiPlayer();
|
||||
RegisteredPlayer rp = view.getDeckChooser(i).getPlayer();
|
||||
|
||||
if (variantTypes.isEmpty()) {
|
||||
rp.setTeamNumber(view.getTeam(i));
|
||||
players.add(rp.setPlayer(lobbyPlayer));
|
||||
} else {
|
||||
// Initialise Variant variables
|
||||
Deck deck = rp.getDeck();
|
||||
if (variantTypes.isEmpty()) {
|
||||
rp.setTeamNumber(view.getTeam(i));
|
||||
players.add(rp.setPlayer(lobbyPlayer));
|
||||
} else {
|
||||
Deck deck = null;
|
||||
boolean isCommanderMatch = variantTypes.contains(GameType.Commander);
|
||||
if (isCommanderMatch) {
|
||||
Object selected = view.getCommanderDeckLists().get(i).getSelectedValue();
|
||||
if (selected instanceof String) {
|
||||
String sel = (String) selected;
|
||||
IStorage<Deck> comDecks = Singletons.getModel().getDecks().getCommander();
|
||||
if (sel.equals("Random") && comDecks.size() > 0) {
|
||||
deck = Aggregates.random(comDecks);
|
||||
}
|
||||
} else {
|
||||
deck = (Deck) selected;
|
||||
}
|
||||
if (deck == null) { //Can be null if player deselects the list selection or chose Generate
|
||||
deck = DeckgenUtil.generateCommanderDeck(view.isPlayerAI(i));
|
||||
}
|
||||
if (checkLegality) {
|
||||
String errMsg = GameType.Commander.getDecksFormat().getDeckConformanceProblem(deck);
|
||||
if (null != errMsg) {
|
||||
FOptionPane.showErrorDialog(name + "'s deck " + errMsg, "Invalid Commander Deck");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Initialise variables for other variants
|
||||
deck = deck == null ? rp.getDeck() : deck;
|
||||
Iterable<PaperCard> schemes = null;
|
||||
boolean playerIsArchenemy = view.isPlayerArchenemy(i);
|
||||
Iterable<PaperCard> planes = null;
|
||||
PaperCard vanguardAvatar = null;
|
||||
Random randomSeed = new Random();
|
||||
|
||||
//Archenemy
|
||||
if (variantTypes.contains(GameType.ArchenemyRumble)
|
||||
@@ -292,9 +329,9 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
vanguardAvatar = deck.get(DeckSection.Avatar).get(0);
|
||||
} else { //Only other string is "Random"
|
||||
if (!view.isPlayerAI(i)) { //Human
|
||||
vanguardAvatar = Iterables.get(view.getAllAvatars(), randomSeed.nextInt(Iterables.size(view.getNonRandomHumanAvatars())));
|
||||
vanguardAvatar = Aggregates.random(view.getNonRandomHumanAvatars());
|
||||
} else { //AI
|
||||
vanguardAvatar = Iterables.get(view.getAllAiAvatars(), randomSeed.nextInt(Iterables.size(view.getNonRandomAiAvatars())));
|
||||
vanguardAvatar = Aggregates.random(view.getNonRandomAiAvatars());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -307,7 +344,7 @@ public enum CSubmenuConstructed implements ICDoc, IMenuProvider {
|
||||
}
|
||||
}
|
||||
|
||||
rp = RegisteredPlayer.forVariants(variantTypes, rp.getDeck(), schemes, playerIsArchenemy, planes, vanguardAvatar);
|
||||
rp = RegisteredPlayer.forVariants(variantTypes, deck, schemes, playerIsArchenemy, planes, vanguardAvatar);
|
||||
rp.setTeamNumber(view.getTeam(i));
|
||||
players.add(rp.setPlayer(lobbyPlayer));
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import forge.gui.deckchooser.FDeckChooser;
|
||||
import forge.gui.deckchooser.IDecksComboBoxListener;
|
||||
import forge.gui.deckeditor.CDeckEditorUI;
|
||||
import forge.gui.deckeditor.DeckProxy;
|
||||
import forge.gui.deckeditor.controllers.CEditorCommander;
|
||||
import forge.gui.deckeditor.controllers.CEditorVariant;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
@@ -103,6 +104,9 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
private final List<FPanel> schemeDeckPanels = new ArrayList<FPanel>(MAX_PLAYERS);
|
||||
private int lastArchenemy = 0;
|
||||
|
||||
private final List<FList<Object>> commanderDeckLists = new ArrayList<FList<Object>>();
|
||||
private final List<FPanel> commanderDeckPanels = new ArrayList<FPanel>(MAX_PLAYERS);
|
||||
|
||||
private final List<FList<Object>> planarDeckLists = new ArrayList<FList<Object>>();
|
||||
private final List<FPanel> planarDeckPanels = new ArrayList<FPanel>(MAX_PLAYERS);
|
||||
|
||||
@@ -126,7 +130,6 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
// Populate and add variants panel
|
||||
vntVanguard.addItemListener(iListenerVariants);
|
||||
vntCommander.addItemListener(iListenerVariants);
|
||||
vntCommander.setEnabled(false);
|
||||
vntPlanechase.addItemListener(iListenerVariants);
|
||||
vntArchenemy.addItemListener(iListenerVariants);
|
||||
comboArchenemy.setSelectedIndex(0);
|
||||
@@ -277,6 +280,20 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
schemeDeckLists.add(schemeDeckList);
|
||||
schemeDeckPanels.add(schemeDeckPanel);
|
||||
|
||||
// Commander deck list
|
||||
FPanel commanderDeckPanel = new FPanel();
|
||||
commanderDeckPanel.setBorderToggle(false);
|
||||
commanderDeckPanel.setLayout(new MigLayout(sectionConstraints));
|
||||
commanderDeckPanel.add(new FLabel.Builder().text("Select Commander deck:").build(), labelConstraints);
|
||||
FList<Object> commanderDeckList = new FList<Object>();
|
||||
commanderDeckList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
|
||||
|
||||
FScrollPane scrCommander = new FScrollPane(commanderDeckList, true,
|
||||
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
|
||||
commanderDeckPanel.add(scrCommander, "grow, push");
|
||||
commanderDeckLists.add(commanderDeckList);
|
||||
commanderDeckPanels.add(commanderDeckPanel);
|
||||
|
||||
// Planar deck list
|
||||
FPanel planarDeckPanel = new FPanel();
|
||||
planarDeckPanel.setBorderToggle(false);
|
||||
@@ -338,6 +355,9 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
populateDeckPanel(GameType.Constructed);
|
||||
}
|
||||
}
|
||||
else if (GameType.Commander == forGameType) {
|
||||
decksFrame.add(commanderDeckPanels.get(playerWithFocus), "grow, push");
|
||||
}
|
||||
else if (GameType.Planechase == forGameType) {
|
||||
decksFrame.add(planarDeckPanels.get(playerWithFocus), "grow, push");
|
||||
}
|
||||
@@ -465,6 +485,7 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
private FComboBoxWrapper<Object> aeTeamComboBox = new FComboBoxWrapper<Object>();
|
||||
|
||||
private final FLabel deckBtn = new FLabel.ButtonBuilder().text("Select a deck").build();
|
||||
private final FLabel deckLabel = newLabel("Deck:");
|
||||
|
||||
private final String variantBtnConstraints = "height 30px, hidemode 3";
|
||||
|
||||
@@ -473,6 +494,10 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
private final FLabel scmDeckEditor = new FLabel.ButtonBuilder().text("Scheme Deck Editor").build();
|
||||
private final FLabel scmLabel = newLabel("Scheme deck:");
|
||||
|
||||
private final FLabel cmdDeckSelectorBtn = new FLabel.ButtonBuilder().text("Select a Commander deck").build();
|
||||
private final FLabel cmdDeckEditor = new FLabel.ButtonBuilder().text("Commander Deck Editor").build();
|
||||
private final FLabel cmdLabel = newLabel("Commander deck:");
|
||||
|
||||
private final FLabel pchDeckSelectorBtn = new FLabel.ButtonBuilder().text("Select a planar deck").build();
|
||||
private final FLabel pchDeckEditor = new FLabel.ButtonBuilder().text("Planar Deck Editor").build();
|
||||
private final FLabel pchLabel = newLabel("Planar deck:");
|
||||
@@ -511,24 +536,28 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
populateTeamsComboBoxes();
|
||||
teamComboBox.addActionListener(teamListener);
|
||||
aeTeamComboBox.addActionListener(teamListener);
|
||||
teamComboBox.addTo(this, "h 30px, pushx, growx, gaptop 5px, hidemode 3");
|
||||
aeTeamComboBox.addTo(this, "h 30px, pushx, growx, gaptop 5px, hidemode 3");
|
||||
teamComboBox.addTo(this, variantBtnConstraints + ", pushx, growx, gaptop 5px");
|
||||
aeTeamComboBox.addTo(this, variantBtnConstraints + ", pushx, growx, gaptop 5px");
|
||||
|
||||
this.add(newLabel("Deck:"), variantBtnConstraints + ", cell 0 2, sx 2, ax right");
|
||||
this.add(deckLabel, variantBtnConstraints + ", cell 0 2, sx 2, ax right");
|
||||
this.add(deckBtn, variantBtnConstraints + ", cell 2 2, pushx, growx, wmax 100%-153px, h 30px, spanx 4, wrap");
|
||||
|
||||
addHandlersDeckSelector();
|
||||
|
||||
this.add(scmLabel, variantBtnConstraints + ", cell 0 3, sx 2, ax right");
|
||||
this.add(scmDeckSelectorBtn, variantBtnConstraints + ", cell 2 3, growx, pushx");
|
||||
this.add(scmDeckEditor, variantBtnConstraints + ", cell 3 3, sx 3, growx, wrap");
|
||||
this.add(cmdLabel, variantBtnConstraints + ", cell 0 3, sx 2, ax right");
|
||||
this.add(cmdDeckSelectorBtn, variantBtnConstraints + ", cell 2 3, growx, pushx");
|
||||
this.add(cmdDeckEditor, variantBtnConstraints + ", cell 3 3, sx 3, growx, wrap");
|
||||
|
||||
this.add(pchLabel, variantBtnConstraints + ", cell 0 4, sx 2, ax right");
|
||||
this.add(pchDeckSelectorBtn, variantBtnConstraints + ", cell 2 4, growx, pushx");
|
||||
this.add(pchDeckEditor, variantBtnConstraints + ", cell 3 4, sx 3, growx, wrap");
|
||||
this.add(scmLabel, variantBtnConstraints + ", cell 0 4, sx 2, ax right");
|
||||
this.add(scmDeckSelectorBtn, variantBtnConstraints + ", cell 2 4, growx, pushx");
|
||||
this.add(scmDeckEditor, variantBtnConstraints + ", cell 3 4, sx 3, growx, wrap");
|
||||
|
||||
this.add(vgdLabel, variantBtnConstraints + ", cell 0 5, sx 2, ax right");
|
||||
this.add(vgdSelectorBtn, variantBtnConstraints + ", cell 2 5, sx 4, growx, wrap");
|
||||
this.add(pchLabel, variantBtnConstraints + ", cell 0 5, sx 2, ax right");
|
||||
this.add(pchDeckSelectorBtn, variantBtnConstraints + ", cell 2 5, growx, pushx");
|
||||
this.add(pchDeckEditor, variantBtnConstraints + ", cell 3 5, sx 3, growx, wrap");
|
||||
|
||||
this.add(vgdLabel, variantBtnConstraints + ", cell 0 6, sx 2, ax right");
|
||||
this.add(vgdSelectorBtn, variantBtnConstraints + ", cell 2 6, sx 4, growx, wrap");
|
||||
|
||||
addHandlersToVariantsControls();
|
||||
updateVariantControlsVisibility();
|
||||
@@ -613,7 +642,14 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
};
|
||||
|
||||
public void updateVariantControlsVisibility() {
|
||||
boolean archenemyVisiblity = appliedVariants.contains(GameType.ArchenemyRumble)
|
||||
// Commander deck replaces basic deck, so hide that
|
||||
deckLabel.setVisible(!appliedVariants.contains(GameType.Commander));
|
||||
deckBtn.setVisible(!appliedVariants.contains(GameType.Commander));
|
||||
cmdDeckSelectorBtn.setVisible(appliedVariants.contains(GameType.Commander));
|
||||
cmdDeckEditor.setVisible(appliedVariants.contains(GameType.Commander));
|
||||
cmdLabel.setVisible(appliedVariants.contains(GameType.Commander));
|
||||
|
||||
boolean archenemyVisiblity = appliedVariants.contains(GameType.ArchenemyRumble)
|
||||
|| (appliedVariants.contains(GameType.Archenemy) && playerIsArchenemy);
|
||||
scmDeckSelectorBtn.setVisible(archenemyVisiblity);
|
||||
scmDeckEditor.setVisible(archenemyVisiblity);
|
||||
@@ -736,7 +772,26 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_ARCHENEMY);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||
new CEditorVariant(Singletons.getModel().getDecks().getScheme(), predSchemes, DeckSection.Schemes, FScreen.DECK_EDITOR_PLANECHASE));
|
||||
new CEditorVariant(Singletons.getModel().getDecks().getScheme(), predSchemes, DeckSection.Schemes, FScreen.DECK_EDITOR_PLANECHASE));
|
||||
}
|
||||
});
|
||||
|
||||
// Commander buttons
|
||||
cmdDeckSelectorBtn.setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
currentGameMode = GameType.Commander;
|
||||
cmdDeckSelectorBtn.requestFocusInWindow();
|
||||
changePlayerFocus(index, currentGameMode);
|
||||
}
|
||||
});
|
||||
|
||||
cmdDeckEditor.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
currentGameMode = GameType.Commander;
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_COMMANDER);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorCommander());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1203,7 +1258,12 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
return planarDeckLists;
|
||||
}
|
||||
|
||||
/** Gets the list of planar deck lists. */
|
||||
/** Gets the list of commander deck lists. */
|
||||
public List<FList<Object>> getCommanderDeckLists() {
|
||||
return commanderDeckLists;
|
||||
}
|
||||
|
||||
/** Gets the list of scheme deck lists. */
|
||||
public List<FList<Object>> getSchemeDeckLists() {
|
||||
return schemeDeckLists;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user