Quest menu update

This commit is contained in:
Sol
2020-05-18 03:29:30 +00:00
committed by Michael Kamensky
parent 56b5a6d3c2
commit 74b3ecd8ce
11 changed files with 364 additions and 245 deletions

View File

@@ -4,17 +4,7 @@
package forge.gui.framework;
import com.google.common.collect.ObjectArrays;
import forge.screens.deckeditor.views.VAllDecks;
import forge.screens.deckeditor.views.VBrawlDecks;
import forge.screens.deckeditor.views.VCardCatalog;
import forge.screens.deckeditor.views.VCommanderDecks;
import forge.screens.deckeditor.views.VCurrentDeck;
import forge.screens.deckeditor.views.VDeckgen;
import forge.screens.deckeditor.views.VProbabilities;
import forge.screens.deckeditor.views.VStatistics;
import forge.screens.deckeditor.views.VTinyLeadersDecks;
import forge.screens.deckeditor.views.VOathbreakerDecks;
import forge.screens.deckeditor.views.*;
import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
@@ -22,21 +12,12 @@ import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.puzzle.VSubmenuPuzzleCreate;
import forge.screens.home.puzzle.VSubmenuPuzzleSolve;
import forge.screens.home.quest.VSubmenuChallenges;
import forge.screens.home.quest.VSubmenuDuels;
import forge.screens.home.quest.VSubmenuQuestData;
import forge.screens.home.quest.VSubmenuQuestDecks;
import forge.screens.home.quest.VSubmenuQuestDraft;
import forge.screens.home.quest.VSubmenuQuestPrefs;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
import forge.screens.home.sanctioned.VSubmenuSealed;
import forge.screens.home.sanctioned.VSubmenuWinston;
import forge.screens.home.settings.VSubmenuAchievements;
import forge.screens.home.settings.VSubmenuAvatars;
import forge.screens.home.settings.VSubmenuDownloaders;
import forge.screens.home.settings.VSubmenuPreferences;
import forge.screens.home.settings.VSubmenuReleaseNotes;
import forge.screens.home.settings.*;
import forge.screens.workshop.views.VCardDesigner;
import forge.screens.workshop.views.VCardScript;
import forge.screens.workshop.views.VWorkshopCatalog;
@@ -67,10 +48,11 @@ public enum EDocID {
WORKSHOP_CARDDESIGNER (VCardDesigner.SINGLETON_INSTANCE),
WORKSHOP_CARDSCRIPT (VCardScript.SINGLETON_INSTANCE),
HOME_QUESTSTART (VSubmenuQuestStart.SINGLETON_INSTANCE),
HOME_QUESTLOADDATA(VSubmenuQuestLoadData.SINGLETON_INSTANCE),
HOME_QUESTDRAFTS (VSubmenuQuestDraft.SINGLETON_INSTANCE),
HOME_QUESTCHALLENGES (VSubmenuChallenges.SINGLETON_INSTANCE),
HOME_QUESTDUELS (VSubmenuDuels.SINGLETON_INSTANCE),
HOME_QUESTDATA (VSubmenuQuestData.SINGLETON_INSTANCE),
HOME_QUESTDECKS (VSubmenuQuestDecks.SINGLETON_INSTANCE),
HOME_QUESTPREFS (VSubmenuQuestPrefs.SINGLETON_INSTANCE),
HOME_GAUNTLETBUILD (VSubmenuGauntletBuild.SINGLETON_INSTANCE),

View File

@@ -17,31 +17,9 @@
*/
package forge.screens.home;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.ScrollPaneConstants;
import javax.swing.SwingConstants;
import forge.screens.home.puzzle.VSubmenuPuzzleCreate;
import forge.screens.home.puzzle.VSubmenuPuzzleSolve;
import net.miginfocom.swing.MigLayout;
import forge.Singletons;
import forge.assets.FSkinProp;
import forge.gui.framework.EDocID;
import forge.gui.framework.FScreen;
import forge.gui.framework.ICDoc;
import forge.gui.framework.ILocalRepaint;
import forge.gui.framework.IVTopLevelUI;
import forge.gui.framework.*;
import forge.model.FModel;
import forge.properties.ForgePreferences.FPref;
import forge.screens.home.gauntlet.VSubmenuGauntletBuild;
@@ -49,26 +27,25 @@ import forge.screens.home.gauntlet.VSubmenuGauntletContests;
import forge.screens.home.gauntlet.VSubmenuGauntletLoad;
import forge.screens.home.gauntlet.VSubmenuGauntletQuick;
import forge.screens.home.online.VSubmenuOnlineLobby;
import forge.screens.home.quest.VSubmenuChallenges;
import forge.screens.home.quest.VSubmenuDuels;
import forge.screens.home.quest.VSubmenuQuestData;
import forge.screens.home.quest.VSubmenuQuestDecks;
import forge.screens.home.quest.VSubmenuQuestDraft;
import forge.screens.home.quest.VSubmenuQuestPrefs;
import forge.screens.home.puzzle.VSubmenuPuzzleCreate;
import forge.screens.home.puzzle.VSubmenuPuzzleSolve;
import forge.screens.home.quest.*;
import forge.screens.home.sanctioned.VSubmenuConstructed;
import forge.screens.home.sanctioned.VSubmenuDraft;
import forge.screens.home.sanctioned.VSubmenuSealed;
import forge.screens.home.settings.VSubmenuAchievements;
import forge.screens.home.settings.VSubmenuAvatars;
import forge.screens.home.settings.VSubmenuDownloaders;
import forge.screens.home.settings.VSubmenuPreferences;
import forge.screens.home.settings.VSubmenuReleaseNotes;
import forge.screens.home.settings.*;
import forge.toolbox.FLabel;
import forge.toolbox.FScrollPanel;
import forge.toolbox.FSkin;
import forge.toolbox.FSkin.SkinColor;
import forge.toolbox.FSkin.SkinnedPanel;
import forge.view.FView;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
import java.awt.*;
import java.util.List;
import java.util.*;
/**
* Top level view class for home UI drag layout.<br>
@@ -122,11 +99,12 @@ public enum VHomeUI implements IVTopLevelUI {
allSubmenus.add(VSubmenuOnlineLobby.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestStart.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestLoadData.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestDecks.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuDuels.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuChallenges.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestDraft.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestDecks.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestData.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuQuestPrefs.SINGLETON_INSTANCE);
allSubmenus.add(VSubmenuGauntletQuick.SINGLETON_INSTANCE);

View File

@@ -0,0 +1,134 @@
package forge.screens.home.quest;
import forge.UiCommand;
import forge.gui.framework.ICDoc;
import forge.model.FModel;
import forge.properties.ForgeConstants;
import forge.quest.QuestController;
import forge.quest.data.QuestData;
import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.QuestDataIO;
import forge.screens.bazaar.CBazaarUI;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
/**
* Controls the quest data submenu in the home UI.
*
* <br><br><i>(C at beginning of class name denotes a control class.)</i>
*
*/
@SuppressWarnings("serial")
public enum CSubmenuQuestLoadData implements ICDoc {
SINGLETON_INSTANCE;
private final Map<String, QuestData> arrQuests = new HashMap<>();
private final UiCommand cmdQuestSelect = new UiCommand() {
@Override public void run() {
changeQuest();
}
};
private final UiCommand cmdQuestUpdate = new UiCommand() {
@Override public void run() {
update();
}
};
@Override
public void register() {
}
/* (non-Javadoc)
* @see forge.control.home.IControlSubmenu#update()
*/
@Override
public void initialize() {
}
/* (non-Javadoc)
* @see forge.control.home.IControlSubmenu#update()
*/
@Override
public void update() {
final VSubmenuQuestLoadData view = VSubmenuQuestLoadData.SINGLETON_INSTANCE;
final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR);
final QuestController qc = FModel.getQuest();
ArrayList<String> restorableQuests = new ArrayList<>();
// Iterate over files and load quest data for each.
final FilenameFilter takeDatFiles = new FilenameFilter() {
@Override
public boolean accept(final File dir, final String name) {
return name.endsWith(".dat");
}
};
final File[] arrFiles = dirQuests.listFiles(takeDatFiles);
arrQuests.clear();
for (final File f : arrFiles) {
try {
System.out.println(String.format("About to load quest (%s)... ", f.getName()));
arrQuests.put(f.getName(), QuestDataIO.loadData(f));
} catch(IOException ex) {
ex.printStackTrace();
System.out.println(String.format("Error loading quest data (%s).. skipping for now..", f.getName()));
restorableQuests.add(f.getName());
}
}
// Populate list with available quest data.
view.getLstQuests().setQuests(new ArrayList<>(arrQuests.values()));
// If there are quests available, force select.
if (!arrQuests.isEmpty()) {
final String questName = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
// Attempt to select previous quest.
if (arrQuests.get(questName) != null) {
view.getLstQuests().setSelectedQuestData(arrQuests.get(questName));
}
else {
view.getLstQuests().setSelectedIndex(0);
}
// Drop into AllZone.
qc.load(view.getLstQuests().getSelectedQuest());
}
else {
qc.load(null);
}
view.getLstQuests().setSelectCommand(cmdQuestSelect);
view.getLstQuests().setDeleteCommand(cmdQuestUpdate);
view.getLstQuests().setEditCommand(cmdQuestUpdate);
}
/** Changes between quest data files. */
private void changeQuest() {
FModel.getQuest().load(VSubmenuQuestLoadData.SINGLETON_INSTANCE.getLstQuests().getSelectedQuest());
// Save in preferences.
FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, FModel.getQuest().getName() + ".dat");
FModel.getQuestPreferences().save();
CSubmenuDuels.SINGLETON_INSTANCE.update();
CSubmenuChallenges.SINGLETON_INSTANCE.update();
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
CBazaarUI.SINGLETON_INSTANCE.update();
}
private Map<String, QuestData> getAllQuests() {
return arrQuests;
}
}

View File

@@ -7,24 +7,16 @@ import forge.game.GameFormat;
import forge.gui.framework.ICDoc;
import forge.item.PaperCard;
import forge.model.FModel;
import forge.properties.ForgeConstants;
import forge.quest.*;
import forge.quest.StartingPoolPreferences.PoolType;
import forge.quest.data.DeckConstructionRules;
import forge.quest.data.GameFormatQuest;
import forge.quest.data.QuestData;
import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.QuestDataIO;
import forge.screens.bazaar.CBazaarUI;
import forge.quest.data.QuestPreferences;
import forge.screens.home.CHomeUI;
import forge.toolbox.FOptionPane;
import forge.util.Localizer;
import javax.swing.*;
import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.*;
import java.util.Map.Entry;
/**
* Controls the quest data submenu in the home UI.
@@ -33,28 +25,17 @@ import java.util.Map.Entry;
*
*/
@SuppressWarnings("serial")
public enum CSubmenuQuestData implements ICDoc {
public enum CSubmenuQuestStart implements ICDoc {
SINGLETON_INSTANCE;
private final Map<String, QuestData> arrQuests = new HashMap<>();
private final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
private final VSubmenuQuestStart view = VSubmenuQuestStart.SINGLETON_INSTANCE;
private final List<String> customFormatCodes = new ArrayList<>();
private final List<String> customPrizeFormatCodes = new ArrayList<>();
private final UiCommand cmdQuestSelect = new UiCommand() {
@Override public void run() {
changeQuest();
}
};
private final UiCommand cmdQuestUpdate = new UiCommand() {
@Override public void run() {
update();
}
};
private List<Byte> preferredColors = new ArrayList<>();
private PoolType poolType = PoolType.BALANCED;
private StartingPoolPreferences.PoolType poolType = StartingPoolPreferences.PoolType.BALANCED;
private boolean includeArtifacts = true;
private int numberOfBoosters = 0;
@@ -166,65 +147,6 @@ public enum CSubmenuQuestData implements ICDoc {
*/
@Override
public void update() {
final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
final File dirQuests = new File(ForgeConstants.QUEST_SAVE_DIR);
final QuestController qc = FModel.getQuest();
ArrayList<String> restorableQuests = new ArrayList<>();
// Iterate over files and load quest data for each.
final FilenameFilter takeDatFiles = new FilenameFilter() {
@Override
public boolean accept(final File dir, final String name) {
return name.endsWith(".dat");
}
};
final File[] arrFiles = dirQuests.listFiles(takeDatFiles);
arrQuests.clear();
for (final File f : arrFiles) {
try {
System.out.println(String.format("About to load quest (%s)... ", f.getName()));
arrQuests.put(f.getName(), QuestDataIO.loadData(f));
} catch(IOException ex) {
ex.printStackTrace();
System.out.println(String.format("Error loading quest data (%s).. skipping for now..", f.getName()));
restorableQuests.add(f.getName());
}
}
// Populate list with available quest data.
view.getLstQuests().setQuests(new ArrayList<>(arrQuests.values()));
// If there are quests available, force select.
if (!arrQuests.isEmpty()) {
final String questName = FModel.getQuestPreferences().getPref(QPref.CURRENT_QUEST);
// Attempt to select previous quest.
if (arrQuests.get(questName) != null) {
view.getLstQuests().setSelectedQuestData(arrQuests.get(questName));
}
else {
view.getLstQuests().setSelectedIndex(0);
}
// Drop into AllZone.
qc.load(view.getLstQuests().getSelectedQuest());
}
else {
qc.load(null);
}
view.getLstQuests().setSelectCommand(cmdQuestSelect);
view.getLstQuests().setDeleteCommand(cmdQuestUpdate);
view.getLstQuests().setEditCommand(cmdQuestUpdate);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
view.getBtnEmbark().requestFocusInWindow();
}
});
}
/**
@@ -232,7 +154,7 @@ public enum CSubmenuQuestData implements ICDoc {
*/
private void newQuest() {
final Localizer localizer = Localizer.getInstance();
final VSubmenuQuestData view = VSubmenuQuestData.SINGLETON_INSTANCE;
final VSubmenuQuestStart view = VSubmenuQuestStart.SINGLETON_INSTANCE;
final int difficulty = view.getSelectedDifficulty();
final QuestMode mode = view.isFantasy() ? QuestMode.Fantasy : QuestMode.Classic;
@@ -245,38 +167,38 @@ public enum CSubmenuQuestData implements ICDoc {
if (worldFormat == null) {
switch(view.getStartingPoolType()) {
case Sanctioned:
fmtStartPool = view.getRotatingFormat();
break;
case Sanctioned:
fmtStartPool = view.getRotatingFormat();
break;
case Casual:
case CustomFormat:
if (customFormatCodes.isEmpty()) {
if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
case Casual:
case CustomFormat:
if (customFormatCodes.isEmpty()) {
if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
return;
}
}
fmtStartPool = customFormatCodes.isEmpty() ? null : new GameFormatQuest("Custom", customFormatCodes, null); // chosen sets and no banned cards
break;
case DraftDeck:
case SealedDeck:
case Cube:
dckStartPool = view.getSelectedDeck();
if (null == dckStartPool) {
FOptionPane.showMessageDialog(localizer.getMessage("lbldckStartPool"), localizer.getMessage("lblCannotStartaQuest"), FOptionPane.ERROR_ICON);
return;
}
}
fmtStartPool = customFormatCodes.isEmpty() ? null : new GameFormatQuest("Custom", customFormatCodes, null); // chosen sets and no banned cards
break;
break;
case DraftDeck:
case SealedDeck:
case Cube:
dckStartPool = view.getSelectedDeck();
if (null == dckStartPool) {
FOptionPane.showMessageDialog(localizer.getMessage("lbldckStartPool"), localizer.getMessage("lblCannotStartaQuest"), FOptionPane.ERROR_ICON);
return;
}
break;
case Precon:
dckStartPool = QuestController.getPrecons().get(view.getSelectedPrecon()).getDeck();
break;
case Precon:
dckStartPool = QuestController.getPrecons().get(view.getSelectedPrecon()).getDeck();
break;
case Complete:
default:
// leave everything as nulls
break;
case Complete:
default:
// leave everything as nulls
break;
}
}
else {
@@ -290,11 +212,11 @@ public enum CSubmenuQuestData implements ICDoc {
fmtPrizes = fmtStartPool;
if (null == fmtPrizes && dckStartPool != null) { // build it form deck
final Set<String> sets = new HashSet<>();
for (final Entry<PaperCard, Integer> c : dckStartPool.getMain()) {
for (final Map.Entry<PaperCard, Integer> c : dckStartPool.getMain()) {
sets.add(c.getKey().getEdition());
}
if (dckStartPool.has(DeckSection.Sideboard)) {
for (final Entry<PaperCard, Integer> c : dckStartPool.get(DeckSection.Sideboard)) {
for (final Map.Entry<PaperCard, Integer> c : dckStartPool.get(DeckSection.Sideboard)) {
sets.add(c.getKey().getEdition());
}
}
@@ -303,23 +225,23 @@ public enum CSubmenuQuestData implements ICDoc {
}
else {
switch(prizedPoolType) {
case Complete:
fmtPrizes = null;
break;
case Casual:
case CustomFormat:
if (customPrizeFormatCodes.isEmpty()) {
if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
return;
case Complete:
fmtPrizes = null;
break;
case Casual:
case CustomFormat:
if (customPrizeFormatCodes.isEmpty()) {
if (!FOptionPane.showConfirmDialog(localizer.getMessage("lblNotFormatDefined"))) {
return;
}
}
}
fmtPrizes = customPrizeFormatCodes.isEmpty() ? null : new GameFormat("Custom Prizes", customPrizeFormatCodes, null); // chosen sets and no banned cards
break;
case Sanctioned:
fmtPrizes = view.getPrizedRotatingFormat();
break;
default:
throw new RuntimeException("Should not get this result");
fmtPrizes = customPrizeFormatCodes.isEmpty() ? null : new GameFormat("Custom Prizes", customPrizeFormatCodes, null); // chosen sets and no banned cards
break;
case Sanctioned:
fmtPrizes = view.getPrizedRotatingFormat();
break;
default:
throw new RuntimeException("Should not get this result");
}
}
@@ -346,7 +268,7 @@ public enum CSubmenuQuestData implements ICDoc {
//Apply the appropriate deck construction rules for this quest
DeckConstructionRules dcr = DeckConstructionRules.Default;
if(VSubmenuQuestData.SINGLETON_INSTANCE.isCommander()){
if(VSubmenuQuestStart.SINGLETON_INSTANCE.isCommander()){
dcr = DeckConstructionRules.Commander;
}
@@ -356,28 +278,11 @@ public enum CSubmenuQuestData implements ICDoc {
FModel.getQuest().save();
// Save in preferences.
FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, questName + ".dat");
FModel.getQuestPreferences().setPref(QuestPreferences.QPref.CURRENT_QUEST, questName + ".dat");
FModel.getQuestPreferences().save();
update();
}
/** Changes between quest data files. */
private void changeQuest() {
FModel.getQuest().load(VSubmenuQuestData.SINGLETON_INSTANCE.getLstQuests().getSelectedQuest());
// Save in preferences.
FModel.getQuestPreferences().setPref(QPref.CURRENT_QUEST, FModel.getQuest().getName() + ".dat");
FModel.getQuestPreferences().save();
CSubmenuDuels.SINGLETON_INSTANCE.update();
CSubmenuChallenges.SINGLETON_INSTANCE.update();
CSubmenuQuestDecks.SINGLETON_INSTANCE.update();
CSubmenuQuestDraft.SINGLETON_INSTANCE.update();
CBazaarUI.SINGLETON_INSTANCE.update();
// Change to QuestDecks screen
CHomeUI.SINGLETON_INSTANCE.itemClick(VSubmenuQuestDecks.SINGLETON_INSTANCE.getDocumentID());
}
private Map<String, QuestData> getAllQuests() {

View File

@@ -0,0 +1,138 @@
package forge.screens.home.quest;
import forge.gui.framework.DragCell;
import forge.gui.framework.DragTab;
import forge.gui.framework.EDocID;
import forge.properties.ForgeConstants;
import forge.screens.home.EMenuGroup;
import forge.screens.home.IVSubmenu;
import forge.screens.home.VHomeUI;
import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane;
import forge.toolbox.FSkin;
import forge.util.Localizer;
import net.miginfocom.swing.MigLayout;
import javax.swing.*;
/**
* Assembles Swing components of quest data submenu singleton.
*
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
*/
public enum VSubmenuQuestLoadData implements IVSubmenu<CSubmenuQuestLoadData> {
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
// Fields used with interface IVDoc
private DragCell parentCell;
private final DragTab tab = new DragTab(localizer.getMessage("lblQuestData"));
private final FLabel lblTitle = new FLabel.Builder()
.text(localizer.getMessage("lblLoadQuestData")).fontAlign(SwingConstants.CENTER)
.opaque(true).fontSize(16).build();
String str= ForgeConstants.QUEST_SAVE_DIR.replace('\\', '/');
private final FLabel lblOldQuests = new FLabel.Builder().text(localizer.getMessage("lblOldQuestData").replace("%s",str)).fontAlign(SwingConstants.CENTER).fontSize(12).build();
private final QuestFileLister lstQuests = new QuestFileLister();
private final FScrollPane scrQuests = new FScrollPane(lstQuests, false);
private final JPanel pnlOptions = new JPanel();
/**
* Constructor.
*/
@SuppressWarnings("unchecked")
VSubmenuQuestLoadData() {
lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
}
/* (non-Javadoc)
* @see forge.view.home.IViewSubmenu#populate()
*/
@Override
public void populate() {
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().removeAll();
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0, wrap"));
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitle, "w 98%!, h 30px!, gap 1% 0 15px 15px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblOldQuests, "w 98%, h 30px!, gap 1% 0 0 5px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(scrQuests, "w 98%!, growy, pushy, gap 1% 0 0 20px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().repaintSelf();
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate();
}
/* (non-Javadoc)
* @see forge.view.home.IViewSubmenu#getGroup()
*/
@Override
public EMenuGroup getGroupEnum() {
return EMenuGroup.QUEST;
}
/* (non-Javadoc)
* @see forge.gui.home.IVSubmenu#getMenuTitle()
*/
@Override
public String getMenuTitle() {
return localizer.getMessage("lblNewLoadQuest");
}
/* (non-Javadoc)
* @see forge.gui.home.IVSubmenu#getMenuName()
*/
@Override
public EDocID getItemEnum() {
return EDocID.HOME_QUESTLOADDATA;
}
/**
* @return {@link forge.screens.home.quest.QuestFileLister}
*/
public QuestFileLister getLstQuests() {
return this.lstQuests;
}
//========== Overridden from IVDoc
/* (non-Javadoc)
* @see forge.gui.framework.IVDoc#getDocumentID()
*/
@Override
public EDocID getDocumentID() {
return EDocID.HOME_QUESTLOADDATA;
}
/* (non-Javadoc)
* @see forge.gui.framework.IVDoc#getTabLabel()
*/
@Override
public DragTab getTabLabel() {
return tab;
}
/* (non-Javadoc)
* @see forge.gui.framework.IVDoc#getLayoutControl()
*/
@Override
public CSubmenuQuestLoadData getLayoutControl() {
return CSubmenuQuestLoadData.SINGLETON_INSTANCE;
}
/* (non-Javadoc)
* @see forge.gui.framework.IVDoc#setParentCell(forge.gui.framework.DragCell)
*/
@Override
public void setParentCell(final DragCell cell0) {
this.parentCell = cell0;
}
/* (non-Javadoc)
* @see forge.gui.framework.IVDoc#getParentCell()
*/
@Override
public DragCell getParentCell() {
return parentCell;
}
}

View File

@@ -34,24 +34,17 @@ import java.util.Map;
*
* <br><br><i>(V at beginning of class name denotes a view class.)</i>
*/
public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
public enum VSubmenuQuestStart implements IVSubmenu<CSubmenuQuestStart> {
SINGLETON_INSTANCE;
final Localizer localizer = Localizer.getInstance();
// Fields used with interface IVDoc
private DragCell parentCell;
private final DragTab tab = new DragTab(localizer.getMessage("lblQuestData"));
private final FLabel lblTitle = new FLabel.Builder()
.text(localizer.getMessage("lblLoadQuestData")).fontAlign(SwingConstants.CENTER)
.opaque(true).fontSize(16).build();
private final DragTab tab = new DragTab(localizer.getMessage("lblStartanewQuest"));
private final FLabel lblTitleNew = new FLabel.Builder().text(localizer.getMessage("lblStartanewQuest")).opaque(true).fontSize(16).build();
String str= ForgeConstants.QUEST_SAVE_DIR.replace('\\', '/');
private final FLabel lblOldQuests = new FLabel.Builder().text(localizer.getMessage("lblOldQuestData").replace("%s",str)).fontAlign(SwingConstants.CENTER).fontSize(12).build();
private final QuestFileLister lstQuests = new QuestFileLister();
private final FScrollPane scrQuests = new FScrollPane(lstQuests, false);
private final JPanel pnlOptions = new JPanel();
/* First column */
@@ -188,9 +181,8 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
* Constructor.
*/
@SuppressWarnings("unchecked")
VSubmenuQuestData() {
VSubmenuQuestStart() {
lblTitle.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
lblTitleNew.setBackground(FSkin.getColor(FSkin.Colors.CLR_THEME2));
final JXButtonPanel difficultyPanel = new JXButtonPanel();
@@ -286,7 +278,7 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
//Otherwise, set the starting world to Random Commander
cbxStartingWorld.setSelectedItem(FModel.getWorlds().get("Random Commander"));
}
}
}
);
@@ -368,11 +360,8 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().removeAll();
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().setLayout(new MigLayout("insets 0, gap 0, wrap"));
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitle, "w 98%!, h 30px!, gap 1% 0 15px 15px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblOldQuests, "w 98%, h 30px!, gap 1% 0 0 5px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(scrQuests, "w 98%!, growy, pushy, gap 1% 0 0 20px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitleNew, "w 98%, h 30px!, gap 1% 0 0 10px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlOptions, "w 98%!, gap 1% 0 0 0");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(lblTitleNew, "w 98%, h 30px!, gap 1% 0 15px 10px");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().add(pnlOptions, "w 98%!, growy, pushy, gap 1% 0 0 0");
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().repaintSelf();
VHomeUI.SINGLETON_INSTANCE.getPnlDisplay().revalidate();
@@ -391,7 +380,7 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
*/
@Override
public String getMenuTitle() {
return localizer.getMessage("lblNewLoadQuest");
return localizer.getMessage("lblStartanewQuest");
}
/* (non-Javadoc)
@@ -399,14 +388,7 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
*/
@Override
public EDocID getItemEnum() {
return EDocID.HOME_QUESTDATA;
}
/**
* @return {@link forge.screens.home.quest.QuestFileLister}
*/
public QuestFileLister getLstQuests() {
return this.lstQuests;
return getDocumentID();
}
/**
@@ -423,7 +405,7 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
*/
@Override
public EDocID getDocumentID() {
return EDocID.HOME_QUESTDATA;
return EDocID.HOME_QUESTSTART;
}
/* (non-Javadoc)
@@ -438,8 +420,8 @@ public enum VSubmenuQuestData implements IVSubmenu<CSubmenuQuestData> {
* @see forge.gui.framework.IVDoc#getLayoutControl()
*/
@Override
public CSubmenuQuestData getLayoutControl() {
return CSubmenuQuestData.SINGLETON_INSTANCE;
public CSubmenuQuestStart getLayoutControl() {
return CSubmenuQuestStart.SINGLETON_INSTANCE;
}
/* (non-Javadoc)

View File

@@ -469,7 +469,7 @@ lblEmbark=Aufbrechen!
lblboxCompleteSet=Du startest mit je 4 Stück jeder Karte der gewählten Sets.
lblboxAllowDuplicates=In deiner Startsammlung können Karten mehrfach vorkommen.
lblSameAsStartingPool=Wie Startsammlung
lblNewLoadQuest=Neu / Lade Quest
lblNewLoadQuest=Lade Quest
#CSubmenuQChallenges.java
lblLaunchaZeppelin=Starte einen Zeppelin.
lblPlant=Pflanze

View File

@@ -441,7 +441,7 @@ cbLaunchZeppelin=Launch Zeppelin
#VSubmenuQuest.java
lblQuestData=Quest Data
lblLoadQuestData=Load Quest Data
lblStartanewQuest=Start a new Quest
lblStartanewQuest=Start Quest
lblOldQuestData=Old quest data? Put into %s and restart Forge.
rbEasy=Easy
rbMedium=Medium
@@ -469,7 +469,7 @@ lblEmbark=Embark!
lblboxCompleteSet=You will start the quest with 4 of each card in the sets you have selected.
lblboxAllowDuplicates=When your starting pool is generated, duplicates of cards may be included.
lblSameAsStartingPool=Same as starting pool
lblNewLoadQuest=New / Load Quest
lblNewLoadQuest=Load Quest
#CSubmenuQChallenges.java
lblLaunchaZeppelin=Launch a Zeppelin.
lblPlant=Plant

View File

@@ -469,7 +469,7 @@ lblEmbark=¡Embarcarse!
lblboxCompleteSet=Comenzarás la aventura con 4 copias de cada carta en los sets que hayas seleccionado.
lblboxAllowDuplicates=Cuando tu pool inicial se genera, se puede incluir duplicados de cartas.
lblSameAsStartingPool=Igual que el pool inicial
lblNewLoadQuest=Nueva/Cargar Aventura
lblNewLoadQuest=Cargar Aventura
#CSubmenuQChallenges.java
lblLaunchaZeppelin=Lanzar el Zeppelin.
lblPlant=Planta

View File

@@ -469,7 +469,7 @@ lblEmbark=开始!
lblboxCompleteSet=你将使用所选系列的每张卡中的4张开始探索
lblboxAllowDuplicates=生成初始牌池时,可能包含重复的卡。
lblSameAsStartingPool=与初始牌池相同
lblNewLoadQuest=新建/载入
lblNewLoadQuest=载入
#CSubmenuQChallenges.java
lblLaunchaZeppelin=启动一个飞艇.
lblPlant=植物

View File

@@ -23,7 +23,7 @@ import java.util.List;
* This class is used to store the Quest starting pool preferences.
* (It could be expanded to store other Quest starting preferences as well,
* in order to reduce the number of parameters that need to be passed to
* QuestController.newGame from CSubmenuQuestData)
* QuestController.newGame from CSubmenuQuestStart)
*
*/
public final class StartingPoolPreferences {