mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Refactor random and color deck generators
This commit is contained in:
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -277,6 +277,7 @@ forge-game/src/main/java/forge/game/GameRules.java -text
|
|||||||
forge-game/src/main/java/forge/game/GameStage.java -text
|
forge-game/src/main/java/forge/game/GameStage.java -text
|
||||||
forge-game/src/main/java/forge/game/GameType.java -text
|
forge-game/src/main/java/forge/game/GameType.java -text
|
||||||
forge-game/src/main/java/forge/game/GlobalRuleChange.java -text
|
forge-game/src/main/java/forge/game/GlobalRuleChange.java -text
|
||||||
|
forge-game/src/main/java/forge/game/IHasGameType.java -text
|
||||||
forge-game/src/main/java/forge/game/Match.java -text
|
forge-game/src/main/java/forge/game/Match.java -text
|
||||||
forge-game/src/main/java/forge/game/PlanarDice.java -text
|
forge-game/src/main/java/forge/game/PlanarDice.java -text
|
||||||
forge-game/src/main/java/forge/game/StaticEffect.java svneol=native#text/plain
|
forge-game/src/main/java/forge/game/StaticEffect.java svneol=native#text/plain
|
||||||
@@ -16604,10 +16605,12 @@ forge-gui/src/main/java/forge/control/ChatArea.java -text
|
|||||||
forge-gui/src/main/java/forge/control/FControlGameEventHandler.java -text
|
forge-gui/src/main/java/forge/control/FControlGameEventHandler.java -text
|
||||||
forge-gui/src/main/java/forge/control/FControlGamePlayback.java -text
|
forge-gui/src/main/java/forge/control/FControlGamePlayback.java -text
|
||||||
forge-gui/src/main/java/forge/control/package-info.java -text
|
forge-gui/src/main/java/forge/control/package-info.java -text
|
||||||
|
forge-gui/src/main/java/forge/deck/ColorDeckGenerator.java -text
|
||||||
forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java -text
|
forge-gui/src/main/java/forge/deck/DeckGeneratorTheme.java -text
|
||||||
forge-gui/src/main/java/forge/deck/DeckProxy.java -text
|
forge-gui/src/main/java/forge/deck/DeckProxy.java -text
|
||||||
forge-gui/src/main/java/forge/deck/DeckType.java -text
|
forge-gui/src/main/java/forge/deck/DeckType.java -text
|
||||||
forge-gui/src/main/java/forge/deck/DeckgenUtil.java -text
|
forge-gui/src/main/java/forge/deck/DeckgenUtil.java -text
|
||||||
|
forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java -text
|
||||||
forge-gui/src/main/java/forge/deck/io/DeckHtmlSerializer.java -text
|
forge-gui/src/main/java/forge/deck/io/DeckHtmlSerializer.java -text
|
||||||
forge-gui/src/main/java/forge/deck/io/DeckPreferences.java -text
|
forge-gui/src/main/java/forge/deck/io/DeckPreferences.java -text
|
||||||
forge-gui/src/main/java/forge/deck/io/OldDeckParser.java -text
|
forge-gui/src/main/java/forge/deck/io/OldDeckParser.java -text
|
||||||
|
|||||||
5
forge-game/src/main/java/forge/game/IHasGameType.java
Normal file
5
forge-game/src/main/java/forge/game/IHasGameType.java
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
package forge.game;
|
||||||
|
|
||||||
|
public interface IHasGameType {
|
||||||
|
GameType getGameType();
|
||||||
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
package forge.deckchooser;
|
package forge.deckchooser;
|
||||||
|
|
||||||
import forge.UiCommand;
|
import forge.UiCommand;
|
||||||
|
import forge.deck.ColorDeckGenerator;
|
||||||
import forge.deck.Deck;
|
import forge.deck.Deck;
|
||||||
import forge.deck.DeckProxy;
|
import forge.deck.DeckProxy;
|
||||||
import forge.deck.DeckType;
|
import forge.deck.DeckType;
|
||||||
import forge.deck.DeckgenUtil;
|
import forge.deck.DeckgenUtil;
|
||||||
|
import forge.deck.RandomDeckGenerator;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.game.player.RegisteredPlayer;
|
import forge.game.player.RegisteredPlayer;
|
||||||
import forge.itemmanager.DeckManager;
|
import forge.itemmanager.DeckManager;
|
||||||
@@ -18,8 +20,6 @@ import forge.quest.QuestEvent;
|
|||||||
import forge.quest.QuestEventChallenge;
|
import forge.quest.QuestEventChallenge;
|
||||||
import forge.quest.QuestUtil;
|
import forge.quest.QuestUtil;
|
||||||
import forge.toolbox.FLabel;
|
import forge.toolbox.FLabel;
|
||||||
import forge.util.Aggregates;
|
|
||||||
import forge.util.storage.IStorage;
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@@ -95,138 +95,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
lstDecks.setSelectedIndex(0);
|
lstDecks.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ColorDeckGenerator extends DeckProxy implements Comparable<ColorDeckGenerator> {
|
|
||||||
private String name;
|
|
||||||
private int index;
|
|
||||||
|
|
||||||
public ColorDeckGenerator(String name0, int index0) {
|
|
||||||
super();
|
|
||||||
name = name0;
|
|
||||||
this.index = index0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareTo(final ColorDeckGenerator d) {
|
|
||||||
return d instanceof ColorDeckGenerator ? Integer.compare(this.index, ((ColorDeckGenerator)d).index) : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Deck getDeck() {
|
|
||||||
List<String> selection = new ArrayList<String>();
|
|
||||||
for (DeckProxy deck : lstDecks.getSelectedItems()) {
|
|
||||||
selection.add(deck.getName());
|
|
||||||
}
|
|
||||||
if (DeckgenUtil.colorCheck(selection)) {
|
|
||||||
return DeckgenUtil.buildColorDeck(selection, isAi);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGeneratedDeck() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class RandomDeckGenerator extends DeckProxy implements Comparable<RandomDeckGenerator> {
|
|
||||||
private String name;
|
|
||||||
private int index;
|
|
||||||
|
|
||||||
public RandomDeckGenerator(String name0, int index0) {
|
|
||||||
super();
|
|
||||||
name = name0;
|
|
||||||
index = index0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareTo(final RandomDeckGenerator d) {
|
|
||||||
return d instanceof RandomDeckGenerator ? Integer.compare(index, ((RandomDeckGenerator)d).index) : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Deck getDeck() {
|
|
||||||
String sel = lstDecks.getSelectedItem().getName();
|
|
||||||
switch (lstDecks.getGameType()) {
|
|
||||||
case Commander:
|
|
||||||
if (sel.equals("Random User Deck")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getCommander();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DeckgenUtil.generateCommanderDeck(isAi);
|
|
||||||
case Archenemy:
|
|
||||||
if (sel.equals("Random User Deck")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getScheme();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DeckgenUtil.generateSchemeDeck();
|
|
||||||
case Planechase:
|
|
||||||
if (sel.equals("Random User Deck")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getPlane();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DeckgenUtil.generatePlanarDeck();
|
|
||||||
default:
|
|
||||||
if (sel.equals("Random User Deck")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getConstructed();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while (true) {
|
|
||||||
switch (Aggregates.random(DeckType.values())) {
|
|
||||||
case PRECONSTRUCTED_DECK:
|
|
||||||
return Aggregates.random(DeckProxy.getAllPreconstructedDecks(QuestController.getPrecons())).getDeck();
|
|
||||||
case QUEST_OPPONENT_DECK:
|
|
||||||
return Aggregates.random(DeckProxy.getAllQuestEventAndChallenges()).getDeck();
|
|
||||||
case COLOR_DECK:
|
|
||||||
List<String> colors = new ArrayList<String>();
|
|
||||||
int count = Aggregates.randomInt(1, 3);
|
|
||||||
for (int i = 1; i <= count; i++) {
|
|
||||||
colors.add("Random " + i);
|
|
||||||
}
|
|
||||||
return DeckgenUtil.buildColorDeck(colors, isAi);
|
|
||||||
case THEME_DECK:
|
|
||||||
return Aggregates.random(DeckProxy.getAllThemeDecks()).getDeck();
|
|
||||||
default:
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGeneratedDeck() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateColors() {
|
private void updateColors() {
|
||||||
lstDecks.setAllowMultipleSelections(true);
|
lstDecks.setAllowMultipleSelections(true);
|
||||||
|
|
||||||
@@ -234,7 +102,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
"White", "Blue", "Black", "Red", "Green" };
|
"White", "Blue", "Black", "Red", "Green" };
|
||||||
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
for (int i = 0; i < colors.length; i++) {
|
for (int i = 0; i < colors.length; i++) {
|
||||||
decks.add(new ColorDeckGenerator(colors[i], i));
|
decks.add(new ColorDeckGenerator(colors[i], i, lstDecks, isAi));
|
||||||
}
|
}
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
lstDecks.setPool(decks);
|
||||||
@@ -307,8 +175,8 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
lstDecks.setAllowMultipleSelections(false);
|
lstDecks.setAllowMultipleSelections(false);
|
||||||
|
|
||||||
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
decks.add(new RandomDeckGenerator("Random Generated Deck", 0));
|
decks.add(new RandomDeckGenerator("Random Generated Deck", 0, lstDecks, isAi));
|
||||||
decks.add(new RandomDeckGenerator("Random User Deck", 1));
|
decks.add(new RandomDeckGenerator("Random User Deck", 1, lstDecks, isAi));
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
lstDecks.setPool(decks);
|
||||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import forge.deck.DeckProxy;
|
|||||||
import forge.deck.io.DeckPreferences;
|
import forge.deck.io.DeckPreferences;
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
|
import forge.game.IHasGameType;
|
||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
import forge.gui.framework.FScreen;
|
import forge.gui.framework.FScreen;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
@@ -25,11 +26,13 @@ import forge.screens.deckeditor.controllers.CEditorQuest;
|
|||||||
import forge.screens.home.quest.DialogChooseSets;
|
import forge.screens.home.quest.DialogChooseSets;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.toolbox.FSkin;
|
import forge.toolbox.FSkin;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.event.ListSelectionEvent;
|
import javax.swing.event.ListSelectionEvent;
|
||||||
import javax.swing.event.ListSelectionListener;
|
import javax.swing.event.ListSelectionListener;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -41,7 +44,7 @@ import java.util.Map.Entry;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public final class DeckManager extends ItemManager<DeckProxy> {
|
public final class DeckManager extends ItemManager<DeckProxy> implements IHasGameType {
|
||||||
private static final FSkin.SkinIcon icoDelete = FSkin.getIcon(FSkinProp.ICO_DELETE);
|
private static final FSkin.SkinIcon icoDelete = FSkin.getIcon(FSkinProp.ICO_DELETE);
|
||||||
private static final FSkin.SkinIcon icoDeleteOver = FSkin.getIcon(FSkinProp.ICO_DELETE_OVER);
|
private static final FSkin.SkinIcon icoDeleteOver = FSkin.getIcon(FSkinProp.ICO_DELETE_OVER);
|
||||||
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkinProp.ICO_EDIT);
|
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkinProp.ICO_EDIT);
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ import forge.toolbox.FComboBox;
|
|||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.FEvent.FEventHandler;
|
import forge.toolbox.FEvent.FEventHandler;
|
||||||
import forge.toolbox.FOptionPane;
|
import forge.toolbox.FOptionPane;
|
||||||
import forge.util.Aggregates;
|
|
||||||
import forge.util.Callback;
|
import forge.util.Callback;
|
||||||
import forge.util.Utils;
|
import forge.util.Utils;
|
||||||
import forge.util.storage.IStorage;
|
import forge.util.storage.IStorage;
|
||||||
@@ -233,6 +232,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
cmbDeckTypes.addItem(DeckType.QUEST_OPPONENT_DECK);
|
cmbDeckTypes.addItem(DeckType.QUEST_OPPONENT_DECK);
|
||||||
cmbDeckTypes.addItem(DeckType.COLOR_DECK);
|
cmbDeckTypes.addItem(DeckType.COLOR_DECK);
|
||||||
cmbDeckTypes.addItem(DeckType.THEME_DECK);
|
cmbDeckTypes.addItem(DeckType.THEME_DECK);
|
||||||
|
cmbDeckTypes.addItem(DeckType.RANDOM_DECK);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cmbDeckTypes.addItem(DeckType.CUSTOM_DECK);
|
cmbDeckTypes.addItem(DeckType.CUSTOM_DECK);
|
||||||
@@ -340,49 +340,6 @@ public class FDeckChooser extends FScreen {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private class ColorDeckGenerator extends DeckProxy implements Comparable<ColorDeckGenerator> {
|
|
||||||
private String name;
|
|
||||||
private int index;
|
|
||||||
|
|
||||||
public ColorDeckGenerator(String name0, int index0) {
|
|
||||||
super();
|
|
||||||
name = name0;
|
|
||||||
index = index0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareTo(final ColorDeckGenerator d) {
|
|
||||||
return d instanceof ColorDeckGenerator ? Integer.compare(index, ((ColorDeckGenerator)d).index) : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Deck getDeck() {
|
|
||||||
List<String> selection = new ArrayList<String>();
|
|
||||||
for (DeckProxy deck : lstDecks.getSelectedItems()) {
|
|
||||||
selection.add(deck.getName());
|
|
||||||
}
|
|
||||||
if (DeckgenUtil.colorCheck(selection)) {
|
|
||||||
return DeckgenUtil.buildColorDeck(selection, isAi);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGeneratedDeck() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateColors() {
|
private void updateColors() {
|
||||||
lstDecks.setSelectionSupport(1, 3); //TODO: Consider supporting more than 3 color random decks
|
lstDecks.setSelectionSupport(1, 3); //TODO: Consider supporting more than 3 color random decks
|
||||||
|
|
||||||
@@ -390,7 +347,7 @@ public class FDeckChooser extends FScreen {
|
|||||||
"White", "Blue", "Black", "Red", "Green" };
|
"White", "Blue", "Black", "Red", "Green" };
|
||||||
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
for (int i = 0; i < colors.length; i++) {
|
for (int i = 0; i < colors.length; i++) {
|
||||||
decks.add(new ColorDeckGenerator(colors[i], i));
|
decks.add(new ColorDeckGenerator(colors[i], i, lstDecks, isAi));
|
||||||
}
|
}
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
lstDecks.setPool(decks);
|
||||||
@@ -436,77 +393,12 @@ public class FDeckChooser extends FScreen {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private class RandomDeckGenerator extends DeckProxy implements Comparable<RandomDeckGenerator> {
|
|
||||||
private String name;
|
|
||||||
private int index;
|
|
||||||
|
|
||||||
public RandomDeckGenerator(String name0, int index0) {
|
|
||||||
super();
|
|
||||||
name = name0;
|
|
||||||
index = index0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int compareTo(final RandomDeckGenerator d) {
|
|
||||||
return d instanceof RandomDeckGenerator ? Integer.compare(index, ((RandomDeckGenerator)d).index) : 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Deck getDeck() {
|
|
||||||
String sel = lstDecks.getSelectedItem().getName();
|
|
||||||
switch (lstDecks.getGameType()) {
|
|
||||||
case Commander:
|
|
||||||
if (sel.equals("Random")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getCommander();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DeckgenUtil.generateCommanderDeck(isAi);
|
|
||||||
case Archenemy:
|
|
||||||
if (sel.equals("Random")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getScheme();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DeckgenUtil.generateSchemeDeck();
|
|
||||||
case Planechase:
|
|
||||||
if (sel.equals("Random")) {
|
|
||||||
IStorage<Deck> decks = FModel.getDecks().getPlane();
|
|
||||||
if (decks.size() > 0) {
|
|
||||||
return Aggregates.random(decks);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return DeckgenUtil.generatePlanarDeck();
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isGeneratedDeck() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateRandom() {
|
private void updateRandom() {
|
||||||
lstDecks.setSelectionSupport(1, 1);
|
lstDecks.setSelectionSupport(1, 1);
|
||||||
|
|
||||||
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||||
decks.add(new RandomDeckGenerator("Random Generated Deck", 0));
|
decks.add(new RandomDeckGenerator("Random Generated Deck", 0, lstDecks, isAi));
|
||||||
decks.add(new RandomDeckGenerator("Random User Deck", 1));
|
decks.add(new RandomDeckGenerator("Random User Deck", 1, lstDecks, isAi));
|
||||||
|
|
||||||
lstDecks.setPool(decks);
|
lstDecks.setPool(decks);
|
||||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import forge.deck.DeckProxy;
|
|||||||
import forge.deck.FDeckViewer;
|
import forge.deck.FDeckViewer;
|
||||||
import forge.deck.io.DeckPreferences;
|
import forge.deck.io.DeckPreferences;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
|
import forge.game.IHasGameType;
|
||||||
import forge.itemmanager.filters.DeckColorFilter;
|
import forge.itemmanager.filters.DeckColorFilter;
|
||||||
import forge.itemmanager.filters.DeckFormatFilter;
|
import forge.itemmanager.filters.DeckFormatFilter;
|
||||||
import forge.itemmanager.filters.DeckSearchFilter;
|
import forge.itemmanager.filters.DeckSearchFilter;
|
||||||
@@ -27,7 +28,7 @@ import java.util.Map.Entry;
|
|||||||
* ItemManager for decks
|
* ItemManager for decks
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public final class DeckManager extends ItemManager<DeckProxy> {
|
public final class DeckManager extends ItemManager<DeckProxy> implements IHasGameType {
|
||||||
private final GameType gameType;
|
private final GameType gameType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
55
forge-gui/src/main/java/forge/deck/ColorDeckGenerator.java
Normal file
55
forge-gui/src/main/java/forge/deck/ColorDeckGenerator.java
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package forge.deck;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import forge.itemmanager.IItemManager;
|
||||||
|
|
||||||
|
|
||||||
|
public class ColorDeckGenerator extends DeckProxy implements Comparable<ColorDeckGenerator> {
|
||||||
|
private String name;
|
||||||
|
private int index;
|
||||||
|
private final IItemManager<DeckProxy> lstDecks;
|
||||||
|
private final boolean isAi;
|
||||||
|
|
||||||
|
public ColorDeckGenerator(String name0, int index0, IItemManager<DeckProxy> lstDecks0, boolean isAi0) {
|
||||||
|
super();
|
||||||
|
name = name0;
|
||||||
|
index = index0;
|
||||||
|
lstDecks = lstDecks0;
|
||||||
|
isAi = isAi0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(final ColorDeckGenerator d) {
|
||||||
|
return d instanceof ColorDeckGenerator ? Integer.compare(index, ((ColorDeckGenerator)d).index) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Deck getDeck() {
|
||||||
|
List<String> selection = new ArrayList<String>();
|
||||||
|
for (DeckProxy deck : lstDecks.getSelectedItems()) {
|
||||||
|
selection.add(deck.getName());
|
||||||
|
}
|
||||||
|
if (DeckgenUtil.colorCheck(selection)) {
|
||||||
|
return DeckgenUtil.buildColorDeck(selection, isAi);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isGeneratedDeck() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
101
forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java
Normal file
101
forge-gui/src/main/java/forge/deck/RandomDeckGenerator.java
Normal file
@@ -0,0 +1,101 @@
|
|||||||
|
package forge.deck;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import forge.game.IHasGameType;
|
||||||
|
import forge.model.FModel;
|
||||||
|
import forge.quest.QuestController;
|
||||||
|
import forge.util.Aggregates;
|
||||||
|
import forge.util.storage.IStorage;
|
||||||
|
|
||||||
|
public class RandomDeckGenerator extends DeckProxy implements Comparable<RandomDeckGenerator> {
|
||||||
|
private final String name;
|
||||||
|
private final int index;
|
||||||
|
private final IHasGameType lstDecks;
|
||||||
|
private final boolean isAi;
|
||||||
|
|
||||||
|
public RandomDeckGenerator(String name0, int index0, IHasGameType lstDecks0, boolean isAi0) {
|
||||||
|
super();
|
||||||
|
name = name0;
|
||||||
|
index = index0;
|
||||||
|
lstDecks = lstDecks0;
|
||||||
|
isAi = isAi0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(final RandomDeckGenerator d) {
|
||||||
|
return d instanceof RandomDeckGenerator ? Integer.compare(index, ((RandomDeckGenerator)d).index) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Deck getDeck() {
|
||||||
|
switch (lstDecks.getGameType()) {
|
||||||
|
case Commander:
|
||||||
|
if (index == 1) {
|
||||||
|
IStorage<Deck> decks = FModel.getDecks().getCommander();
|
||||||
|
if (decks.size() > 0) {
|
||||||
|
return Aggregates.random(decks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DeckgenUtil.generateCommanderDeck(isAi);
|
||||||
|
case Archenemy:
|
||||||
|
if (index == 1) {
|
||||||
|
IStorage<Deck> decks = FModel.getDecks().getScheme();
|
||||||
|
if (decks.size() > 0) {
|
||||||
|
return Aggregates.random(decks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DeckgenUtil.generateSchemeDeck();
|
||||||
|
case Planechase:
|
||||||
|
if (index == 1) {
|
||||||
|
IStorage<Deck> decks = FModel.getDecks().getPlane();
|
||||||
|
if (decks.size() > 0) {
|
||||||
|
return Aggregates.random(decks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DeckgenUtil.generatePlanarDeck();
|
||||||
|
default:
|
||||||
|
if (index == 1) {
|
||||||
|
IStorage<Deck> decks = FModel.getDecks().getConstructed();
|
||||||
|
if (decks.size() > 0) {
|
||||||
|
return Aggregates.random(decks);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while (true) {
|
||||||
|
switch (Aggregates.random(DeckType.values())) {
|
||||||
|
case PRECONSTRUCTED_DECK:
|
||||||
|
return Aggregates.random(DeckProxy.getAllPreconstructedDecks(QuestController.getPrecons())).getDeck();
|
||||||
|
case QUEST_OPPONENT_DECK:
|
||||||
|
return Aggregates.random(DeckProxy.getAllQuestEventAndChallenges()).getDeck();
|
||||||
|
case COLOR_DECK:
|
||||||
|
List<String> colors = new ArrayList<String>();
|
||||||
|
int count = Aggregates.randomInt(1, 3);
|
||||||
|
for (int i = 1; i <= count; i++) {
|
||||||
|
colors.add("Random " + i);
|
||||||
|
}
|
||||||
|
return DeckgenUtil.buildColorDeck(colors, isAi);
|
||||||
|
case THEME_DECK:
|
||||||
|
return Aggregates.random(DeckProxy.getAllThemeDecks()).getDeck();
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isGeneratedDeck() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user