mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-15 18:28:00 +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.display = Singletons.getView().getLayeredContentPane();
|
||||
Singletons.getModel().getQuestEventManager().assembleAllEvents();
|
||||
|
||||
//Singletons.getView().initialize();
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ import forge.item.CardPrinted;
|
||||
import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.quest.data.QuestEvent;
|
||||
import forge.quest.data.QuestEventManager;
|
||||
import forge.util.IStorage;
|
||||
import forge.view.toolbox.FLabel;
|
||||
import forge.view.toolbox.FOverlay;
|
||||
@@ -279,11 +280,11 @@ public enum CSubmenuConstructed implements ICSubmenu {
|
||||
|
||||
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());
|
||||
}
|
||||
|
||||
for (final QuestEvent e : Singletons.getModel().getQuestEventManager().getAllDuels()) {
|
||||
for (final QuestEvent e : QuestEventManager.ALL_CHALLENGES) {
|
||||
eventNames.add(e.getEventDeck().getName());
|
||||
}
|
||||
|
||||
@@ -405,7 +406,7 @@ public enum CSubmenuConstructed implements ICSubmenu {
|
||||
deck.getMain().add(cards);
|
||||
}
|
||||
else if (lst0.getName().equals(ESubmenuConstructedTypes.QUESTEVENTS.toString())) {
|
||||
deck = Singletons.getModel().getQuestEventManager().getEvent(selection[0]).getEventDeck();
|
||||
deck = QuestEventManager.getEvent(selection[0]).getEventDeck();
|
||||
}
|
||||
// Custom deck
|
||||
else if (lst0.getName().equals(ESubmenuConstructedTypes.CUSTOM.toString())) {
|
||||
@@ -430,7 +431,7 @@ public enum CSubmenuConstructed implements ICSubmenu {
|
||||
deck = Singletons.getModel().getDecks().getConstructed().get(deckName);
|
||||
}
|
||||
else {
|
||||
deck = Singletons.getModel().getQuestEventManager().getEvent(deckName).getEventDeck();
|
||||
deck = QuestEventManager.getEvent(deckName).getEventDeck();
|
||||
}
|
||||
|
||||
// Dump into map and display.
|
||||
|
||||
@@ -10,11 +10,11 @@ import javax.swing.border.EmptyBorder;
|
||||
|
||||
import forge.AllZone;
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
import forge.gui.home.EMenuItem;
|
||||
import forge.gui.home.ICSubmenu;
|
||||
import forge.gui.home.quest.SubmenuQuestUtil.SelectablePanel;
|
||||
import forge.quest.data.QuestChallenge;
|
||||
import forge.quest.data.QuestEventManager;
|
||||
import forge.view.ViewHomeUI;
|
||||
import forge.view.toolbox.FLabel;
|
||||
|
||||
@@ -84,7 +84,7 @@ public enum CSubmenuChallenges implements ICSubmenu {
|
||||
|
||||
view.getPnlChallenges().removeAll();
|
||||
final List<QuestChallenge> challenges =
|
||||
Singletons.getModel().getQuestEventManager().generateChallenges(AllZone.getQuestData());
|
||||
QuestEventManager.generateChallenges();
|
||||
|
||||
for (final QuestChallenge c : challenges) {
|
||||
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.Command;
|
||||
import forge.Singletons;
|
||||
import forge.gui.home.EMenuItem;
|
||||
import forge.gui.home.ICSubmenu;
|
||||
import forge.gui.home.quest.SubmenuQuestUtil.SelectablePanel;
|
||||
import forge.quest.data.QuestDuel;
|
||||
import forge.quest.data.QuestEventManager;
|
||||
import forge.view.ViewHomeUI;
|
||||
|
||||
/**
|
||||
@@ -78,8 +78,7 @@ public enum CSubmenuDuels implements ICSubmenu {
|
||||
view.getLblTitle().setText("Duels: " + AllZone.getQuestData().getRank());
|
||||
|
||||
view.getPnlDuels().removeAll();
|
||||
final List<QuestDuel> duels =
|
||||
Singletons.getModel().getQuestEventManager().generateDuels();
|
||||
final List<QuestDuel> duels = QuestEventManager.generateDuels();
|
||||
|
||||
for (final QuestDuel d : duels) {
|
||||
final SelectablePanel temp = new SelectablePanel(d);
|
||||
|
||||
@@ -47,7 +47,6 @@ import forge.properties.ForgePreferences;
|
||||
import forge.properties.ForgePreferences.FPref;
|
||||
import forge.properties.ForgeProps;
|
||||
import forge.properties.NewConstants;
|
||||
import forge.quest.data.QuestEventManager;
|
||||
import forge.quest.data.QuestPreferences;
|
||||
import forge.util.FileUtil;
|
||||
import forge.util.HttpUtil;
|
||||
@@ -80,7 +79,6 @@ public enum FModel {
|
||||
private final GameAction gameAction;
|
||||
private final QuestPreferences questPreferences;
|
||||
private final ForgePreferences preferences;
|
||||
private final QuestEventManager questEventManager;
|
||||
private final GameState gameState;
|
||||
private final FMatchState matchState;
|
||||
|
||||
@@ -133,7 +131,6 @@ public enum FModel {
|
||||
this.gameState = new GameState();
|
||||
this.matchState = new FMatchState();
|
||||
this.questPreferences = new QuestPreferences();
|
||||
this.questEventManager = new QuestEventManager();
|
||||
|
||||
this.editions = new EditionCollection();
|
||||
this.formats = new FormatCollection("res/blockdata/formats.txt");
|
||||
@@ -333,15 +330,6 @@ public enum FModel {
|
||||
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.
|
||||
*
|
||||
|
||||
@@ -38,45 +38,30 @@ import forge.util.FileSection;
|
||||
import forge.util.FileUtil;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* QuestEventManager.
|
||||
* </p>
|
||||
* MODEL - Manages collections of quest events (duelsquests, etc.)
|
||||
*
|
||||
* @author Forge
|
||||
* @version $Id$
|
||||
*/
|
||||
public class QuestEventManager {
|
||||
public enum QuestEventManager {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
/** The easy a iduels. */
|
||||
private final List<QuestDuel> easyAIduels = new ArrayList<QuestDuel>();
|
||||
|
||||
/** The medium a iduels. */
|
||||
private final List<QuestDuel> mediumAIduels = new ArrayList<QuestDuel>();
|
||||
|
||||
/** The hard a iduels. */
|
||||
private final List<QuestDuel> hardAIduels = new ArrayList<QuestDuel>();
|
||||
|
||||
/** The very hard a iduels. */
|
||||
private final List<QuestDuel> veryHardAIduels = new ArrayList<QuestDuel>();
|
||||
|
||||
/** 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>();
|
||||
/** */
|
||||
private static final List<QuestDuel> EASY_DUELS = new ArrayList<QuestDuel>();
|
||||
/** */
|
||||
private static final List<QuestDuel> MEDIUM_DUELS = new ArrayList<QuestDuel>();
|
||||
/** */
|
||||
private static final List<QuestDuel> HARD_DUELS = new ArrayList<QuestDuel>();
|
||||
/** */
|
||||
private static final List<QuestDuel> EXPERT_DUELS = new ArrayList<QuestDuel>();
|
||||
/** */
|
||||
public static final List<QuestDuel> ALL_DUELS = new ArrayList<QuestDuel>();
|
||||
/** */
|
||||
public static final List<QuestChallenge> ALL_CHALLENGES = new ArrayList<QuestChallenge>();
|
||||
|
||||
/** Instantiate all events and difficulty lists. */
|
||||
static {
|
||||
QuestEvent tempEvent;
|
||||
|
||||
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));
|
||||
|
||||
if (contents.containsKey("quest")) {
|
||||
tempEvent = this.readChallenge(contents.get("quest"));
|
||||
this.allChallenges.add((QuestChallenge) tempEvent);
|
||||
} // End if([quest])
|
||||
tempEvent = QuestEventManager.readChallenge(contents.get("quest"));
|
||||
ALL_CHALLENGES.add((QuestChallenge) tempEvent);
|
||||
}
|
||||
else {
|
||||
tempEvent = this.readDuel(contents.get("metadata"));
|
||||
this.allDuels.add((QuestDuel) tempEvent);
|
||||
tempEvent = QuestEventManager.readDuel(contents.get("metadata"));
|
||||
ALL_DUELS.add((QuestDuel) tempEvent);
|
||||
}
|
||||
|
||||
// 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));
|
||||
} // End for(allFiles)
|
||||
|
||||
this.assembleDuelDifficultyLists();
|
||||
|
||||
QuestEventManager.assembleDuelDifficultyLists();
|
||||
} // End assembleAllEvents()
|
||||
|
||||
/**
|
||||
@@ -109,14 +93,14 @@ public class QuestEventManager {
|
||||
*   {@link java.lang.String}
|
||||
* @return {@link forge.data.QuestEvent}
|
||||
*/
|
||||
public QuestEvent getEvent(final String s0) {
|
||||
for (final QuestEvent q : this.allDuels) {
|
||||
public static QuestEvent getEvent(final String s0) {
|
||||
for (final QuestEvent q : ALL_DUELS) {
|
||||
if (q.getName().equals(s0)) {
|
||||
return q;
|
||||
}
|
||||
}
|
||||
|
||||
for (final QuestChallenge q : this.allChallenges) {
|
||||
for (final QuestChallenge q : ALL_CHALLENGES) {
|
||||
if (q.getName().equals(s0)) {
|
||||
return q;
|
||||
}
|
||||
@@ -125,6 +109,98 @@ public class QuestEventManager {
|
||||
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>
|
||||
* assembleDuelUniqueData.
|
||||
@@ -134,7 +210,7 @@ public class QuestEventManager {
|
||||
* @param contents
|
||||
* @param qd
|
||||
*/
|
||||
private QuestDuel readDuel(final List<String> contents) {
|
||||
private static QuestDuel readDuel(final List<String> contents) {
|
||||
final QuestDuel qd = new QuestDuel();
|
||||
int eqpos;
|
||||
String key, value;
|
||||
@@ -167,7 +243,7 @@ public class QuestEventManager {
|
||||
* @param contents
|
||||
* @param qc
|
||||
*/
|
||||
private QuestChallenge readChallenge(final List<String> contents) {
|
||||
private static QuestChallenge readChallenge(final List<String> contents) {
|
||||
int eqpos;
|
||||
String key, value;
|
||||
|
||||
@@ -236,7 +312,7 @@ public class QuestEventManager {
|
||||
* @param contents
|
||||
* @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;
|
||||
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>
|
||||
* assembleDuelDifficultyLists.
|
||||
* </p>
|
||||
* Assemble duel deck difficulty lists
|
||||
*/
|
||||
private void assembleDuelDifficultyLists() {
|
||||
|
||||
this.easyAIduels.clear();
|
||||
this.mediumAIduels.clear();
|
||||
this.hardAIduels.clear();
|
||||
this.veryHardAIduels.clear();
|
||||
private static void assembleDuelDifficultyLists() {
|
||||
EASY_DUELS.clear();
|
||||
MEDIUM_DUELS.clear();
|
||||
HARD_DUELS.clear();
|
||||
EXPERT_DUELS.clear();
|
||||
String s;
|
||||
|
||||
for (final QuestDuel qd : this.allDuels) {
|
||||
for (final QuestDuel qd : ALL_DUELS) {
|
||||
s = qd.getDifficulty();
|
||||
if (s.equalsIgnoreCase("easy")) {
|
||||
this.easyAIduels.add(qd);
|
||||
EASY_DUELS.add(qd);
|
||||
} else if (s.equalsIgnoreCase("medium")) {
|
||||
this.mediumAIduels.add(qd);
|
||||
MEDIUM_DUELS.add(qd);
|
||||
} else if (s.equalsIgnoreCase("hard")) {
|
||||
this.hardAIduels.add(qd);
|
||||
HARD_DUELS.add(qd);
|
||||
} else if (s.equalsIgnoreCase("very hard")) {
|
||||
this.veryHardAIduels.add(qd);
|
||||
EXPERT_DUELS.add(qd);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -348,114 +399,12 @@ public class QuestEventManager {
|
||||
* @param n
|
||||
* @return
|
||||
*/
|
||||
private QuestChallenge getChallengeEventByNumber(final int n) {
|
||||
for (final QuestChallenge qc : this.allChallenges) {
|
||||
private static QuestChallenge getChallengeEventByNumber(final int n) {
|
||||
for (final QuestChallenge qc : ALL_CHALLENGES) {
|
||||
if (qc.getId() == n) {
|
||||
return qc;
|
||||
}
|
||||
}
|
||||
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