mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 02:38:02 +00:00
Refactored QuestEventManager to be a static factory.
This commit is contained in:
@@ -113,7 +113,6 @@ public enum FControl {
|
|||||||
|
|
||||||
this.shortcuts = KeyboardShortcuts.attachKeyboardShortcuts();
|
this.shortcuts = KeyboardShortcuts.attachKeyboardShortcuts();
|
||||||
this.display = Singletons.getView().getLayeredContentPane();
|
this.display = Singletons.getView().getLayeredContentPane();
|
||||||
Singletons.getModel().getQuestEventManager().assembleAllEvents();
|
|
||||||
|
|
||||||
//Singletons.getView().initialize();
|
//Singletons.getView().initialize();
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import forge.item.CardPrinted;
|
|||||||
import forge.properties.ForgePreferences;
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.quest.data.QuestEvent;
|
import forge.quest.data.QuestEvent;
|
||||||
|
import forge.quest.data.QuestEventManager;
|
||||||
import forge.util.IStorage;
|
import forge.util.IStorage;
|
||||||
import forge.view.toolbox.FLabel;
|
import forge.view.toolbox.FLabel;
|
||||||
import forge.view.toolbox.FOverlay;
|
import forge.view.toolbox.FOverlay;
|
||||||
@@ -279,11 +280,11 @@ public enum CSubmenuConstructed implements ICSubmenu {
|
|||||||
|
|
||||||
final List<String> eventNames = new ArrayList<String>();
|
final List<String> eventNames = new ArrayList<String>();
|
||||||
|
|
||||||
for (final QuestEvent e : Singletons.getModel().getQuestEventManager().getAllChallenges()) {
|
for (final QuestEvent e : QuestEventManager.ALL_DUELS) {
|
||||||
eventNames.add(e.getEventDeck().getName());
|
eventNames.add(e.getEventDeck().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final QuestEvent e : Singletons.getModel().getQuestEventManager().getAllDuels()) {
|
for (final QuestEvent e : QuestEventManager.ALL_CHALLENGES) {
|
||||||
eventNames.add(e.getEventDeck().getName());
|
eventNames.add(e.getEventDeck().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,7 +406,7 @@ public enum CSubmenuConstructed implements ICSubmenu {
|
|||||||
deck.getMain().add(cards);
|
deck.getMain().add(cards);
|
||||||
}
|
}
|
||||||
else if (lst0.getName().equals(ESubmenuConstructedTypes.QUESTEVENTS.toString())) {
|
else if (lst0.getName().equals(ESubmenuConstructedTypes.QUESTEVENTS.toString())) {
|
||||||
deck = Singletons.getModel().getQuestEventManager().getEvent(selection[0]).getEventDeck();
|
deck = QuestEventManager.getEvent(selection[0]).getEventDeck();
|
||||||
}
|
}
|
||||||
// Custom deck
|
// Custom deck
|
||||||
else if (lst0.getName().equals(ESubmenuConstructedTypes.CUSTOM.toString())) {
|
else if (lst0.getName().equals(ESubmenuConstructedTypes.CUSTOM.toString())) {
|
||||||
@@ -430,7 +431,7 @@ public enum CSubmenuConstructed implements ICSubmenu {
|
|||||||
deck = Singletons.getModel().getDecks().getConstructed().get(deckName);
|
deck = Singletons.getModel().getDecks().getConstructed().get(deckName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
deck = Singletons.getModel().getQuestEventManager().getEvent(deckName).getEventDeck();
|
deck = QuestEventManager.getEvent(deckName).getEventDeck();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dump into map and display.
|
// Dump into map and display.
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import javax.swing.border.EmptyBorder;
|
|||||||
|
|
||||||
import forge.AllZone;
|
import forge.AllZone;
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
|
||||||
import forge.gui.home.EMenuItem;
|
import forge.gui.home.EMenuItem;
|
||||||
import forge.gui.home.ICSubmenu;
|
import forge.gui.home.ICSubmenu;
|
||||||
import forge.gui.home.quest.SubmenuQuestUtil.SelectablePanel;
|
import forge.gui.home.quest.SubmenuQuestUtil.SelectablePanel;
|
||||||
import forge.quest.data.QuestChallenge;
|
import forge.quest.data.QuestChallenge;
|
||||||
|
import forge.quest.data.QuestEventManager;
|
||||||
import forge.view.ViewHomeUI;
|
import forge.view.ViewHomeUI;
|
||||||
import forge.view.toolbox.FLabel;
|
import forge.view.toolbox.FLabel;
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ public enum CSubmenuChallenges implements ICSubmenu {
|
|||||||
|
|
||||||
view.getPnlChallenges().removeAll();
|
view.getPnlChallenges().removeAll();
|
||||||
final List<QuestChallenge> challenges =
|
final List<QuestChallenge> challenges =
|
||||||
Singletons.getModel().getQuestEventManager().generateChallenges(AllZone.getQuestData());
|
QuestEventManager.generateChallenges();
|
||||||
|
|
||||||
for (final QuestChallenge c : challenges) {
|
for (final QuestChallenge c : challenges) {
|
||||||
final SelectablePanel temp = new SelectablePanel(c);
|
final SelectablePanel temp = new SelectablePanel(c);
|
||||||
@@ -103,39 +103,4 @@ public enum CSubmenuChallenges implements ICSubmenu {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see forge.control.home.IControlSubmenu#update()
|
|
||||||
*/
|
|
||||||
/* @Override
|
|
||||||
public void update() {
|
|
||||||
SubmenuQuestUtil.updateStatsAndPet();
|
|
||||||
|
|
||||||
final VSubmenuChallenges view = VSubmenuChallenges.SINGLETON_INSTANCE;
|
|
||||||
VSubmenuChallenges.SINGLETON_INSTANCE.getBtnStart().setEnabled(false);
|
|
||||||
|
|
||||||
if (AllZone.getQuestData() != null) {
|
|
||||||
VSubmenuChallenges.SINGLETON_INSTANCE.getLblTitle().setText("Challenges: " + AllZone.getQuestData().getRank());
|
|
||||||
|
|
||||||
view.getPnlChallenges().removeAll();
|
|
||||||
final List<QuestChallenge> challenges =
|
|
||||||
Singletons.getModel().getQuestEventManager().generateChallenges(AllZone.getQuestData());
|
|
||||||
|
|
||||||
for (final QuestChallenge c : challenges) {
|
|
||||||
final SelectablePanel temp = new SelectablePanel(c);
|
|
||||||
view.getPnlChallenges().add(temp, "w 96%!, h 86px!, gap 2% 0 5px 5px");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (challenges.size() == 0) {
|
|
||||||
final FLabel lbl = new FLabel.Builder()
|
|
||||||
.text(VSubmenuChallenges.SINGLETON_INSTANCE.getLblNextChallengeInWins().getText())
|
|
||||||
.fontAlign(SwingConstants.CENTER).build();
|
|
||||||
lbl.setForeground(Color.red);
|
|
||||||
lbl.setBackground(Color.white);
|
|
||||||
lbl.setBorder(new EmptyBorder(10, 10, 10, 10));
|
|
||||||
lbl.setOpaque(true);
|
|
||||||
view.getPnlChallenges().add(lbl, "w 50%!, h 30px!, gap 25% 0 50px 0");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ import java.util.List;
|
|||||||
|
|
||||||
import forge.AllZone;
|
import forge.AllZone;
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
|
||||||
import forge.gui.home.EMenuItem;
|
import forge.gui.home.EMenuItem;
|
||||||
import forge.gui.home.ICSubmenu;
|
import forge.gui.home.ICSubmenu;
|
||||||
import forge.gui.home.quest.SubmenuQuestUtil.SelectablePanel;
|
import forge.gui.home.quest.SubmenuQuestUtil.SelectablePanel;
|
||||||
import forge.quest.data.QuestDuel;
|
import forge.quest.data.QuestDuel;
|
||||||
|
import forge.quest.data.QuestEventManager;
|
||||||
import forge.view.ViewHomeUI;
|
import forge.view.ViewHomeUI;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,8 +78,7 @@ public enum CSubmenuDuels implements ICSubmenu {
|
|||||||
view.getLblTitle().setText("Duels: " + AllZone.getQuestData().getRank());
|
view.getLblTitle().setText("Duels: " + AllZone.getQuestData().getRank());
|
||||||
|
|
||||||
view.getPnlDuels().removeAll();
|
view.getPnlDuels().removeAll();
|
||||||
final List<QuestDuel> duels =
|
final List<QuestDuel> duels = QuestEventManager.generateDuels();
|
||||||
Singletons.getModel().getQuestEventManager().generateDuels();
|
|
||||||
|
|
||||||
for (final QuestDuel d : duels) {
|
for (final QuestDuel d : duels) {
|
||||||
final SelectablePanel temp = new SelectablePanel(d);
|
final SelectablePanel temp = new SelectablePanel(d);
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ import forge.properties.ForgePreferences;
|
|||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
import forge.properties.ForgeProps;
|
import forge.properties.ForgeProps;
|
||||||
import forge.properties.NewConstants;
|
import forge.properties.NewConstants;
|
||||||
import forge.quest.data.QuestEventManager;
|
|
||||||
import forge.quest.data.QuestPreferences;
|
import forge.quest.data.QuestPreferences;
|
||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
import forge.util.HttpUtil;
|
import forge.util.HttpUtil;
|
||||||
@@ -80,7 +79,6 @@ public enum FModel {
|
|||||||
private final GameAction gameAction;
|
private final GameAction gameAction;
|
||||||
private final QuestPreferences questPreferences;
|
private final QuestPreferences questPreferences;
|
||||||
private final ForgePreferences preferences;
|
private final ForgePreferences preferences;
|
||||||
private final QuestEventManager questEventManager;
|
|
||||||
private final GameState gameState;
|
private final GameState gameState;
|
||||||
private final FMatchState matchState;
|
private final FMatchState matchState;
|
||||||
|
|
||||||
@@ -133,7 +131,6 @@ public enum FModel {
|
|||||||
this.gameState = new GameState();
|
this.gameState = new GameState();
|
||||||
this.matchState = new FMatchState();
|
this.matchState = new FMatchState();
|
||||||
this.questPreferences = new QuestPreferences();
|
this.questPreferences = new QuestPreferences();
|
||||||
this.questEventManager = new QuestEventManager();
|
|
||||||
|
|
||||||
this.editions = new EditionCollection();
|
this.editions = new EditionCollection();
|
||||||
this.formats = new FormatCollection("res/blockdata/formats.txt");
|
this.formats = new FormatCollection("res/blockdata/formats.txt");
|
||||||
@@ -333,15 +330,6 @@ public enum FModel {
|
|||||||
return this.questPreferences;
|
return this.questPreferences;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the quest preferences.
|
|
||||||
*
|
|
||||||
* @return {@link forge.quest.data.QuestEventManager}
|
|
||||||
*/
|
|
||||||
public final QuestEventManager getQuestEventManager() {
|
|
||||||
return this.questEventManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all player's decks for constructed, sealed and whatever.
|
* Returns all player's decks for constructed, sealed and whatever.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -38,45 +38,30 @@ import forge.util.FileSection;
|
|||||||
import forge.util.FileUtil;
|
import forge.util.FileUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
|
||||||
* QuestEventManager.
|
* QuestEventManager.
|
||||||
* </p>
|
|
||||||
* MODEL - Manages collections of quest events (duelsquests, etc.)
|
|
||||||
*
|
*
|
||||||
* @author Forge
|
* @author Forge
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class QuestEventManager {
|
public enum QuestEventManager {
|
||||||
|
/** */
|
||||||
|
SINGLETON_INSTANCE;
|
||||||
|
|
||||||
/** The easy a iduels. */
|
/** */
|
||||||
private final List<QuestDuel> easyAIduels = new ArrayList<QuestDuel>();
|
private static final List<QuestDuel> EASY_DUELS = new ArrayList<QuestDuel>();
|
||||||
|
/** */
|
||||||
/** The medium a iduels. */
|
private static final List<QuestDuel> MEDIUM_DUELS = new ArrayList<QuestDuel>();
|
||||||
private final List<QuestDuel> mediumAIduels = new ArrayList<QuestDuel>();
|
/** */
|
||||||
|
private static final List<QuestDuel> HARD_DUELS = new ArrayList<QuestDuel>();
|
||||||
/** The hard a iduels. */
|
/** */
|
||||||
private final List<QuestDuel> hardAIduels = new ArrayList<QuestDuel>();
|
private static final List<QuestDuel> EXPERT_DUELS = new ArrayList<QuestDuel>();
|
||||||
|
/** */
|
||||||
/** The very hard a iduels. */
|
public static final List<QuestDuel> ALL_DUELS = new ArrayList<QuestDuel>();
|
||||||
private final List<QuestDuel> veryHardAIduels = new ArrayList<QuestDuel>();
|
/** */
|
||||||
|
public static final List<QuestChallenge> ALL_CHALLENGES = new ArrayList<QuestChallenge>();
|
||||||
/** The all duels. */
|
|
||||||
private List<QuestDuel> allDuels = null;
|
|
||||||
|
|
||||||
/** The all challenges. */
|
|
||||||
private List<QuestChallenge> allChallenges = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* assembleAllEvents.
|
|
||||||
* </p>
|
|
||||||
* * Reads all duel and challenge files and instantiates all events, and
|
|
||||||
* difficulty lists accordingly. Should be used sparingly.
|
|
||||||
*/
|
|
||||||
public final void assembleAllEvents() {
|
|
||||||
this.allDuels = new ArrayList<QuestDuel>();
|
|
||||||
this.allChallenges = new ArrayList<QuestChallenge>();
|
|
||||||
|
|
||||||
|
/** Instantiate all events and difficulty lists. */
|
||||||
|
static {
|
||||||
QuestEvent tempEvent;
|
QuestEvent tempEvent;
|
||||||
|
|
||||||
final File[] allFiles = ForgeProps.getFile(NewConstants.Quest.DECKS).listFiles(DeckSerializer.DCK_FILE_FILTER);
|
final File[] allFiles = ForgeProps.getFile(NewConstants.Quest.DECKS).listFiles(DeckSerializer.DCK_FILE_FILTER);
|
||||||
@@ -85,21 +70,20 @@ public class QuestEventManager {
|
|||||||
final Map<String, List<String>> contents = FileSection.parseSections(FileUtil.readFile(f));
|
final Map<String, List<String>> contents = FileSection.parseSections(FileUtil.readFile(f));
|
||||||
|
|
||||||
if (contents.containsKey("quest")) {
|
if (contents.containsKey("quest")) {
|
||||||
tempEvent = this.readChallenge(contents.get("quest"));
|
tempEvent = QuestEventManager.readChallenge(contents.get("quest"));
|
||||||
this.allChallenges.add((QuestChallenge) tempEvent);
|
ALL_CHALLENGES.add((QuestChallenge) tempEvent);
|
||||||
} // End if([quest])
|
}
|
||||||
else {
|
else {
|
||||||
tempEvent = this.readDuel(contents.get("metadata"));
|
tempEvent = QuestEventManager.readDuel(contents.get("metadata"));
|
||||||
this.allDuels.add((QuestDuel) tempEvent);
|
ALL_DUELS.add((QuestDuel) tempEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assemble metadata (may not be necessary later) and deck object.
|
// Assemble metadata (may not be necessary later) and deck object.
|
||||||
this.readMetadata(contents.get("metadata"), tempEvent);
|
QuestEventManager.readMetadata(contents.get("metadata"), tempEvent);
|
||||||
tempEvent.setEventDeck(Deck.fromSections(contents));
|
tempEvent.setEventDeck(Deck.fromSections(contents));
|
||||||
} // End for(allFiles)
|
} // End for(allFiles)
|
||||||
|
|
||||||
this.assembleDuelDifficultyLists();
|
QuestEventManager.assembleDuelDifficultyLists();
|
||||||
|
|
||||||
} // End assembleAllEvents()
|
} // End assembleAllEvents()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -109,14 +93,14 @@ public class QuestEventManager {
|
|||||||
*   {@link java.lang.String}
|
*   {@link java.lang.String}
|
||||||
* @return {@link forge.data.QuestEvent}
|
* @return {@link forge.data.QuestEvent}
|
||||||
*/
|
*/
|
||||||
public QuestEvent getEvent(final String s0) {
|
public static QuestEvent getEvent(final String s0) {
|
||||||
for (final QuestEvent q : this.allDuels) {
|
for (final QuestEvent q : ALL_DUELS) {
|
||||||
if (q.getName().equals(s0)) {
|
if (q.getName().equals(s0)) {
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final QuestChallenge q : this.allChallenges) {
|
for (final QuestChallenge q : ALL_CHALLENGES) {
|
||||||
if (q.getName().equals(s0)) {
|
if (q.getName().equals(s0)) {
|
||||||
return q;
|
return q;
|
||||||
}
|
}
|
||||||
@@ -125,6 +109,98 @@ public class QuestEventManager {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Generates an array of new duel opponents based on current win conditions.
|
||||||
|
*
|
||||||
|
* @return an array of {@link java.lang.String} objects.
|
||||||
|
*/
|
||||||
|
public static final List<QuestDuel> generateDuels() {
|
||||||
|
final QuestPreferences qpref = Singletons.getModel().getQuestPreferences();
|
||||||
|
if (AllZone.getQuestData() == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final int index = AllZone.getQuestData().getDifficultyIndex();
|
||||||
|
final List<QuestDuel> duelOpponents = new ArrayList<QuestDuel>();
|
||||||
|
|
||||||
|
if (AllZone.getQuestData().getWin() < qpref.getPreferenceInt(QPref.WINS_MEDIUMAI, index)) {
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.EASY_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.EASY_DUELS, 1));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.EASY_DUELS, 2));
|
||||||
|
} else if (AllZone.getQuestData().getWin() == qpref.getPreferenceInt(QPref.WINS_MEDIUMAI, index)) {
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.EASY_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.MEDIUM_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.MEDIUM_DUELS, 1));
|
||||||
|
} else if (AllZone.getQuestData().getWin() < qpref.getPreferenceInt(QPref.WINS_HARDAI, index)) {
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.MEDIUM_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.MEDIUM_DUELS, 1));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.MEDIUM_DUELS, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (AllZone.getQuestData().getWin() == qpref.getPreferenceInt(QPref.WINS_HARDAI, index)) {
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.MEDIUM_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (AllZone.getQuestData().getWin() < qpref.getPreferenceInt(QPref.WINS_EXPERTAI, index)) {
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 1));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 2));
|
||||||
|
} else {
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 0));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.HARD_DUELS, 1));
|
||||||
|
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(QuestEventManager.EXPERT_DUELS, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
return duelOpponents;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Generates an array of new challenge opponents based on current win conditions.
|
||||||
|
*
|
||||||
|
* @return a {@link java.util.List} object.
|
||||||
|
*/
|
||||||
|
public static final List<QuestChallenge> generateChallenges() {
|
||||||
|
final List<QuestChallenge> challengeOpponents = new ArrayList<QuestChallenge>();
|
||||||
|
final QuestData qData = AllZone.getQuestData();
|
||||||
|
|
||||||
|
int maxChallenges = qData.getWin() / 10;
|
||||||
|
if (maxChallenges > 5) {
|
||||||
|
maxChallenges = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate IDs as needed.
|
||||||
|
if ((qData.getAvailableChallenges() == null) || (qData.getAvailableChallenges().size() < maxChallenges)) {
|
||||||
|
|
||||||
|
final List<Integer> unlockedChallengeIds = new ArrayList<Integer>();
|
||||||
|
final List<Integer> availableChallengeIds = new ArrayList<Integer>();
|
||||||
|
|
||||||
|
for (final QuestChallenge qc : QuestEventManager.ALL_CHALLENGES) {
|
||||||
|
if ((qc.getWinsReqd() <= qData.getWin())
|
||||||
|
&& !qData.getCompletedChallenges().contains(qc.getId())) {
|
||||||
|
unlockedChallengeIds.add(qc.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.shuffle(unlockedChallengeIds);
|
||||||
|
|
||||||
|
maxChallenges = Math.min(maxChallenges, unlockedChallengeIds.size());
|
||||||
|
|
||||||
|
for (int i = 0; i < maxChallenges; i++) {
|
||||||
|
availableChallengeIds.add(unlockedChallengeIds.get(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
qData.setAvailableChallenges(availableChallengeIds);
|
||||||
|
qData.saveData();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finally, pull challenge events from available IDs and return.
|
||||||
|
for (final int i : qData.getAvailableChallenges()) {
|
||||||
|
challengeOpponents.add(QuestEventManager.getChallengeEventByNumber(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
return challengeOpponents;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* assembleDuelUniqueData.
|
* assembleDuelUniqueData.
|
||||||
@@ -134,7 +210,7 @@ public class QuestEventManager {
|
|||||||
* @param contents
|
* @param contents
|
||||||
* @param qd
|
* @param qd
|
||||||
*/
|
*/
|
||||||
private QuestDuel readDuel(final List<String> contents) {
|
private static QuestDuel readDuel(final List<String> contents) {
|
||||||
final QuestDuel qd = new QuestDuel();
|
final QuestDuel qd = new QuestDuel();
|
||||||
int eqpos;
|
int eqpos;
|
||||||
String key, value;
|
String key, value;
|
||||||
@@ -167,7 +243,7 @@ public class QuestEventManager {
|
|||||||
* @param contents
|
* @param contents
|
||||||
* @param qc
|
* @param qc
|
||||||
*/
|
*/
|
||||||
private QuestChallenge readChallenge(final List<String> contents) {
|
private static QuestChallenge readChallenge(final List<String> contents) {
|
||||||
int eqpos;
|
int eqpos;
|
||||||
String key, value;
|
String key, value;
|
||||||
|
|
||||||
@@ -236,7 +312,7 @@ public class QuestEventManager {
|
|||||||
* @param contents
|
* @param contents
|
||||||
* @param qe
|
* @param qe
|
||||||
*/
|
*/
|
||||||
private void readMetadata(final List<String> contents, final QuestEvent qe) {
|
private static void readMetadata(final List<String> contents, final QuestEvent qe) {
|
||||||
int eqpos;
|
int eqpos;
|
||||||
String key, value;
|
String key, value;
|
||||||
|
|
||||||
@@ -265,54 +341,29 @@ public class QuestEventManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* getAllDuels.
|
|
||||||
* </p>
|
|
||||||
* Returns complete list of all duel objects.
|
|
||||||
*
|
|
||||||
* @return a {@link java.util.List} object.
|
|
||||||
*/
|
|
||||||
public final List<QuestDuel> getAllDuels() {
|
|
||||||
return this.allDuels;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* getAllChallenges.
|
|
||||||
* </p>
|
|
||||||
* Returns complete list of all challenge objects.
|
|
||||||
*
|
|
||||||
* @return a {@link java.util.List} object.
|
|
||||||
*/
|
|
||||||
public final List<QuestChallenge> getAllChallenges() {
|
|
||||||
return this.allChallenges;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
* assembleDuelDifficultyLists.
|
* assembleDuelDifficultyLists.
|
||||||
* </p>
|
* </p>
|
||||||
* Assemble duel deck difficulty lists
|
* Assemble duel deck difficulty lists
|
||||||
*/
|
*/
|
||||||
private void assembleDuelDifficultyLists() {
|
private static void assembleDuelDifficultyLists() {
|
||||||
|
EASY_DUELS.clear();
|
||||||
this.easyAIduels.clear();
|
MEDIUM_DUELS.clear();
|
||||||
this.mediumAIduels.clear();
|
HARD_DUELS.clear();
|
||||||
this.hardAIduels.clear();
|
EXPERT_DUELS.clear();
|
||||||
this.veryHardAIduels.clear();
|
|
||||||
String s;
|
String s;
|
||||||
|
|
||||||
for (final QuestDuel qd : this.allDuels) {
|
for (final QuestDuel qd : ALL_DUELS) {
|
||||||
s = qd.getDifficulty();
|
s = qd.getDifficulty();
|
||||||
if (s.equalsIgnoreCase("easy")) {
|
if (s.equalsIgnoreCase("easy")) {
|
||||||
this.easyAIduels.add(qd);
|
EASY_DUELS.add(qd);
|
||||||
} else if (s.equalsIgnoreCase("medium")) {
|
} else if (s.equalsIgnoreCase("medium")) {
|
||||||
this.mediumAIduels.add(qd);
|
MEDIUM_DUELS.add(qd);
|
||||||
} else if (s.equalsIgnoreCase("hard")) {
|
} else if (s.equalsIgnoreCase("hard")) {
|
||||||
this.hardAIduels.add(qd);
|
HARD_DUELS.add(qd);
|
||||||
} else if (s.equalsIgnoreCase("very hard")) {
|
} else if (s.equalsIgnoreCase("very hard")) {
|
||||||
this.veryHardAIduels.add(qd);
|
EXPERT_DUELS.add(qd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -348,114 +399,12 @@ public class QuestEventManager {
|
|||||||
* @param n
|
* @param n
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private QuestChallenge getChallengeEventByNumber(final int n) {
|
private static QuestChallenge getChallengeEventByNumber(final int n) {
|
||||||
for (final QuestChallenge qc : this.allChallenges) {
|
for (final QuestChallenge qc : ALL_CHALLENGES) {
|
||||||
if (qc.getId() == n) {
|
if (qc.getId() == n) {
|
||||||
return qc;
|
return qc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* generateDuels.
|
|
||||||
* </p>
|
|
||||||
* Generates an array of new duel opponents based on current win conditions.
|
|
||||||
*
|
|
||||||
* @return an array of {@link java.lang.String} objects.
|
|
||||||
*/
|
|
||||||
public final List<QuestDuel> generateDuels() {
|
|
||||||
final QuestPreferences qpref = Singletons.getModel().getQuestPreferences();
|
|
||||||
if (AllZone.getQuestData() == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
final int index = AllZone.getQuestData().getDifficultyIndex();
|
|
||||||
final List<QuestDuel> duelOpponents = new ArrayList<QuestDuel>();
|
|
||||||
|
|
||||||
if (AllZone.getQuestData().getWin() < qpref.getPreferenceInt(QPref.WINS_MEDIUMAI, index)) {
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.easyAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.easyAIduels, 1));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.easyAIduels, 2));
|
|
||||||
} else if (AllZone.getQuestData().getWin() == qpref.getPreferenceInt(QPref.WINS_MEDIUMAI, index)) {
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.easyAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.mediumAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.mediumAIduels, 1));
|
|
||||||
} else if (AllZone.getQuestData().getWin() < qpref.getPreferenceInt(QPref.WINS_HARDAI, index)) {
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.mediumAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.mediumAIduels, 1));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.mediumAIduels, 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (AllZone.getQuestData().getWin() == qpref.getPreferenceInt(QPref.WINS_HARDAI, index)) {
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.mediumAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (AllZone.getQuestData().getWin() < qpref.getPreferenceInt(QPref.WINS_EXPERTAI, index)) {
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 1));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 2));
|
|
||||||
} else {
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 0));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.hardAIduels, 1));
|
|
||||||
duelOpponents.add(QuestEventManager.getDuelOpponentByNumber(this.veryHardAIduels, 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
return duelOpponents;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* <p>
|
|
||||||
* generateChallenges.
|
|
||||||
* </p>
|
|
||||||
* Generates an array of new challenge opponents based on current win
|
|
||||||
* conditions.
|
|
||||||
*
|
|
||||||
* @param questData the quest data
|
|
||||||
* @return a {@link java.util.List} object.
|
|
||||||
*/
|
|
||||||
public final List<QuestChallenge> generateChallenges(final QuestData questData) {
|
|
||||||
final List<QuestChallenge> challengeOpponents = new ArrayList<QuestChallenge>();
|
|
||||||
|
|
||||||
int maxChallenges = questData.getWin() / 10;
|
|
||||||
if (maxChallenges > 5) {
|
|
||||||
maxChallenges = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate IDs as needed.
|
|
||||||
if ((questData.getAvailableChallenges() == null) || (questData.getAvailableChallenges().size() < maxChallenges)) {
|
|
||||||
|
|
||||||
final List<Integer> unlockedChallengeIds = new ArrayList<Integer>();
|
|
||||||
final List<Integer> availableChallengeIds = new ArrayList<Integer>();
|
|
||||||
|
|
||||||
for (final QuestChallenge qc : this.allChallenges) {
|
|
||||||
if ((qc.getWinsReqd() <= questData.getWin())
|
|
||||||
&& !questData.getCompletedChallenges().contains(qc.getId())) {
|
|
||||||
unlockedChallengeIds.add(qc.getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Collections.shuffle(unlockedChallengeIds);
|
|
||||||
|
|
||||||
maxChallenges = Math.min(maxChallenges, unlockedChallengeIds.size());
|
|
||||||
|
|
||||||
for (int i = 0; i < maxChallenges; i++) {
|
|
||||||
availableChallengeIds.add(unlockedChallengeIds.get(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
questData.setAvailableChallenges(availableChallengeIds);
|
|
||||||
questData.saveData();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Finally, pull challenge events from available IDs and return.
|
|
||||||
for (final int i : questData.getAvailableChallenges()) {
|
|
||||||
challengeOpponents.add(this.getChallengeEventByNumber(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
return challengeOpponents;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user