Support creating custom gauntlet for mobile game

This commit is contained in:
drdev
2014-08-09 04:16:27 +00:00
parent 1aa95fbddc
commit f56927fc00
4 changed files with 83 additions and 46 deletions

View File

@@ -25,9 +25,11 @@ public class GauntletIO {
/** Prompt in text field for new (unsaved) built gauntlets. */
public static final String TXF_PROMPT = "[New Gauntlet]";
/** suffix for all gauntlet data files */
public static final String SUFFIX_DATA = ".dat";
public static final String SUFFIX_DATA = ".dat";
/** Prefix for quick gauntlet save files. */
public static final String PREFIX_QUICK = "Quick_";
/** Prefix for custom gauntlet save files. */
public static final String PREFIX_CUSTOM = "Custom_";
/** Regex for locked gauntlet save files. */
public static final String PREFIX_LOCKED = "LOCKED_";
@@ -45,24 +47,12 @@ public class GauntletIO {
public static File getGauntletFile(GauntletData gd) {
return getGauntletFile(gd.getName());
}
public static File[] getGauntletFilesUnlocked() {
public static File[] getGauntletFilesUnlocked(final String prefix) {
final FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return (name.endsWith(SUFFIX_DATA));
}
};
File folder = new File(ForgeConstants.GAUNTLET_DIR.userPrefLoc);
return folder.listFiles(filter);
}
public static File[] getGauntletFilesQuick() {
final FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return (name.startsWith(PREFIX_QUICK) && name.endsWith(SUFFIX_DATA));
return ((prefix == null || name.startsWith(prefix)) && name.endsWith(SUFFIX_DATA));
}
};

View File

@@ -13,58 +13,64 @@ import forge.model.FModel;
public class GauntletUtil {
public static GauntletData createQuickGauntlet(final Deck userDeck, final int numOpponents, final List<DeckType> allowedDeckTypes) {
final File[] arrFiles = GauntletIO.getGauntletFilesQuick();
final Set<String> setNames = new HashSet<String>();
for (File f : arrFiles) {
setNames.add(f.getName());
}
int num = 1;
while (setNames.contains(GauntletIO.PREFIX_QUICK + num + GauntletIO.SUFFIX_DATA)) { num++; }
GauntletData gauntlet = new GauntletData();
gauntlet.setName(GauntletIO.PREFIX_QUICK + num);
setDefaultGauntletName(gauntlet, GauntletIO.PREFIX_QUICK);
FModel.setGauntletData(gauntlet);
// Generate gauntlet decks
final List<String> lstEventNames = new ArrayList<String>();
final List<Deck> lstGauntletDecks = new ArrayList<Deck>();
Deck tempDeck;
Deck deck;
final List<String> eventNames = new ArrayList<String>();
final List<Deck> decks = new ArrayList<Deck>();
for (int i = 0; i < numOpponents; i++) {
int randType = (int)Math.floor(Math.random() * allowedDeckTypes.size());
switch (allowedDeckTypes.get(randType)) {
case COLOR_DECK:
tempDeck = DeckgenUtil.getRandomColorDeck(true);
lstEventNames.add("Random colors deck");
deck = DeckgenUtil.getRandomColorDeck(true);
eventNames.add("Random colors deck");
break;
case CUSTOM_DECK:
tempDeck = DeckgenUtil.getRandomCustomDeck();
lstEventNames.add(tempDeck.getName());
deck = DeckgenUtil.getRandomCustomDeck();
eventNames.add(deck.getName());
break;
case PRECONSTRUCTED_DECK:
tempDeck = DeckgenUtil.getRandomPreconDeck();
lstEventNames.add(tempDeck.getName());
deck = DeckgenUtil.getRandomPreconDeck();
eventNames.add(deck.getName());
break;
case QUEST_OPPONENT_DECK:
tempDeck = DeckgenUtil.getRandomQuestDeck();
lstEventNames.add(tempDeck.getName());
deck = DeckgenUtil.getRandomQuestDeck();
eventNames.add(deck.getName());
break;
case THEME_DECK:
tempDeck = DeckgenUtil.getRandomThemeDeck();
lstEventNames.add(tempDeck.getName());
deck = DeckgenUtil.getRandomThemeDeck();
eventNames.add(deck.getName());
break;
default:
continue;
}
lstGauntletDecks.add(tempDeck);
decks.add(deck);
}
gauntlet.setDecks(lstGauntletDecks);
gauntlet.setEventNames(lstEventNames);
gauntlet.setDecks(decks);
gauntlet.setEventNames(eventNames);
gauntlet.setUserDeck(userDeck);
// Reset all variable fields to 0, stamps and saves automatically.
gauntlet.reset();
return gauntlet;
}
public static void setDefaultGauntletName(GauntletData gauntlet, String prefix) {
final File[] arrFiles = GauntletIO.getGauntletFilesUnlocked(prefix);
final Set<String> setNames = new HashSet<String>();
for (File f : arrFiles) {
setNames.add(f.getName());
}
int num = 1;
while (setNames.contains(prefix + num + GauntletIO.SUFFIX_DATA)) {
num++;
}
gauntlet.setName(prefix + num);
}
}