mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Refactor random and color deck generators
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
package forge.deckchooser;
|
||||
|
||||
import forge.UiCommand;
|
||||
import forge.deck.ColorDeckGenerator;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckProxy;
|
||||
import forge.deck.DeckType;
|
||||
import forge.deck.DeckgenUtil;
|
||||
import forge.deck.RandomDeckGenerator;
|
||||
import forge.game.GameType;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
import forge.itemmanager.DeckManager;
|
||||
@@ -18,8 +20,6 @@ import forge.quest.QuestEvent;
|
||||
import forge.quest.QuestEventChallenge;
|
||||
import forge.quest.QuestUtil;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.util.Aggregates;
|
||||
import forge.util.storage.IStorage;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -95,138 +95,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
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() {
|
||||
lstDecks.setAllowMultipleSelections(true);
|
||||
|
||||
@@ -234,7 +102,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
"White", "Blue", "Black", "Red", "Green" };
|
||||
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||
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);
|
||||
@@ -307,8 +175,8 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
lstDecks.setAllowMultipleSelections(false);
|
||||
|
||||
ArrayList<DeckProxy> decks = new ArrayList<DeckProxy>();
|
||||
decks.add(new RandomDeckGenerator("Random Generated Deck", 0));
|
||||
decks.add(new RandomDeckGenerator("Random User Deck", 1));
|
||||
decks.add(new RandomDeckGenerator("Random Generated Deck", 0, lstDecks, isAi));
|
||||
decks.add(new RandomDeckGenerator("Random User Deck", 1, lstDecks, isAi));
|
||||
|
||||
lstDecks.setPool(decks);
|
||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||
|
||||
@@ -8,6 +8,7 @@ import forge.deck.DeckProxy;
|
||||
import forge.deck.io.DeckPreferences;
|
||||
import forge.game.GameFormat;
|
||||
import forge.game.GameType;
|
||||
import forge.game.IHasGameType;
|
||||
import forge.gui.GuiUtils;
|
||||
import forge.gui.framework.FScreen;
|
||||
import forge.item.InventoryItem;
|
||||
@@ -25,11 +26,13 @@ import forge.screens.deckeditor.controllers.CEditorQuest;
|
||||
import forge.screens.home.quest.DialogChooseSets;
|
||||
import forge.toolbox.FOptionPane;
|
||||
import forge.toolbox.FSkin;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.*;
|
||||
@@ -41,7 +44,7 @@ import java.util.Map.Entry;
|
||||
*
|
||||
*/
|
||||
@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 icoDeleteOver = FSkin.getIcon(FSkinProp.ICO_DELETE_OVER);
|
||||
private static final FSkin.SkinIcon icoEdit = FSkin.getIcon(FSkinProp.ICO_EDIT);
|
||||
|
||||
Reference in New Issue
Block a user