Added UI elements required for Brawl variant

This commit is contained in:
austinio7116
2018-03-26 06:57:15 +01:00
committed by maustin
parent 81373d2b69
commit 364bf3724f
22 changed files with 241 additions and 20 deletions

View File

@@ -15,6 +15,7 @@ public class ConstructedAchievements extends AchievementCollection {
add(new VariantWins(GameType.MomirBasic, 25, 50, 100));
add(new VariantWins(GameType.Commander, 25, 50, 100));
add(new VariantWins(GameType.TinyLeaders, 25, 50, 100));
add(new VariantWins(GameType.Brawl, 25, 50, 100));
add(new VariantWins(GameType.Planechase, 25, 50, 100));
add(new VariantWins(GameType.Archenemy, 25, 50, 100));
add(new Poisoned(15, 25, 40));

View File

@@ -370,6 +370,27 @@ public class DeckProxy implements InventoryItem {
return result;
}
public static Iterable<DeckProxy> getAllBrawlDecks() {
return getAllBrawlDecks(null);
}
public static Iterable<DeckProxy> getAllBrawlDecks(Predicate<Deck> filter) {
final List<DeckProxy> result = new ArrayList<DeckProxy>();
if (filter == null) {
filter = DeckFormat.Brawl.hasLegalCardsPredicate();
}
else {
filter = Predicates.and(DeckFormat.Brawl.hasLegalCardsPredicate(), filter);
}
filter = Predicates.and(new Predicate<Deck>() {
@Override
public boolean apply(Deck input) {
return FModel.getFormats().getStandard().isDeckLegal(input);
}
}, filter);
addDecksRecursivelly("Tiny Leaders", GameType.Brawl, result, "", FModel.getDecks().getBrawl(), filter);
return result;
}
public static Iterable<DeckProxy> getAllSchemeDecks() {
return getAllSchemeDecks(null);
}

View File

@@ -10,6 +10,7 @@ public enum DeckType {
RANDOM_COMMANDER_DECK ("Random Commander Decks"),
RANDOM_CARDGEN_COMMANDER_DECK ("Random Commander Card-based Decks"),
TINY_LEADERS_DECKS ("Tiny Leaders Decks"),
BRAWL_DECKS ("Brawl Decks"),
SCHEME_DECKS ("Scheme Decks"),
PLANAR_DECKS ("Planar Decks"),
DRAFT_DECKS ("Draft Decks"),

View File

@@ -135,6 +135,9 @@ public class RandomDeckGenerator extends DeckProxy implements Comparable<RandomD
case TinyLeaders:
decks = DeckProxy.getAllTinyLeadersDecks(DeckFormat.TinyLeaders.isLegalDeckPredicate());
break;
case Brawl:
decks = DeckProxy.getAllBrawlDecks(DeckFormat.Brawl.isLegalDeckPredicate());
break;
case Archenemy:
decks = DeckProxy.getAllSchemeDecks(DeckFormat.Archenemy.isLegalDeckPredicate());
break;

View File

@@ -21,7 +21,7 @@ import org.w3c.dom.NodeList;
*
*/
public class DeckPreferences {
private static String currentDeck = "", draftDeck = "", sealedDeck = "", commanderDeck = "", tinyLeadersDeck = "", planarDeck = "", schemeDeck = "";
private static String currentDeck = "", draftDeck = "", sealedDeck = "", commanderDeck = "", tinyLeadersDeck = "", brawlDeck = "", planarDeck = "", schemeDeck = "";
private static Map<String, DeckPreferences> allPrefs = new HashMap<String, DeckPreferences>();
public static String getCurrentDeck() {
@@ -69,6 +69,15 @@ public class DeckPreferences {
save();
}
public static String getBrawlDeck() {
return brawlDeck;
}
public static void setBrawlDeck(String brawlDeck0) {
if (brawlDeck.equals(brawlDeck0)) { return; }
brawlDeck = brawlDeck0;
save();
}
public static String getPlanarDeck() {
return planarDeck;
}

View File

@@ -232,10 +232,17 @@ public abstract class GameLobby implements IHasGameType {
break;
case Commander:
data.appliedVariants.remove(GameType.TinyLeaders);
data.appliedVariants.remove(GameType.Brawl);
data.appliedVariants.remove(GameType.MomirBasic);
break;
case TinyLeaders:
data.appliedVariants.remove(GameType.Commander);
data.appliedVariants.remove(GameType.Brawl);
data.appliedVariants.remove(GameType.MomirBasic);
break;
case Brawl:
data.appliedVariants.remove(GameType.Commander);
data.appliedVariants.remove(GameType.TinyLeaders);
data.appliedVariants.remove(GameType.MomirBasic);
break;
case Vanguard:
@@ -244,6 +251,7 @@ public abstract class GameLobby implements IHasGameType {
case MomirBasic:
data.appliedVariants.remove(GameType.Commander);
data.appliedVariants.remove(GameType.TinyLeaders);
data.appliedVariants.remove(GameType.Brawl);
data.appliedVariants.remove(GameType.Vanguard);
break;
default:
@@ -263,6 +271,8 @@ public abstract class GameLobby implements IHasGameType {
currentGameType = GameType.Commander;
} else if (hasVariant(GameType.TinyLeaders)) {
currentGameType = GameType.TinyLeaders;
} else if (hasVariant(GameType.Brawl)) {
currentGameType = GameType.Brawl;
} else {
currentGameType = GameType.Constructed;
}
@@ -326,7 +336,7 @@ public abstract class GameLobby implements IHasGameType {
SOptionPane.showMessageDialog(TextUtil.concatNoSpace("Please specify a deck for ", slot.getName()));
return null;
}
if (hasVariant(GameType.Commander) || hasVariant(GameType.TinyLeaders)) {
if (hasVariant(GameType.Commander) || hasVariant(GameType.TinyLeaders) || hasVariant(GameType.Brawl)) {
if (!slot.getDeck().has(DeckSection.Commander)) {
SOptionPane.showMessageDialog(TextUtil.concatNoSpace(slot.getName(), " doesn't have a commander"));
return null;
@@ -339,9 +349,11 @@ public abstract class GameLobby implements IHasGameType {
GameType autoGenerateVariant = null;
boolean isCommanderMatch = false;
boolean isTinyLeadersMatch = false;
boolean isBrawlMatch = false;
if (!variantTypes.isEmpty()) {
isTinyLeadersMatch = variantTypes.contains(GameType.TinyLeaders);
isCommanderMatch = isTinyLeadersMatch || variantTypes.contains(GameType.Commander);
isBrawlMatch = variantTypes.contains(GameType.Brawl);
isCommanderMatch = isBrawlMatch || isTinyLeadersMatch || variantTypes.contains(GameType.Commander);
if (!isCommanderMatch) {
for (final GameType variant : variantTypes) {
if (variant.isAutoGenerated()) {
@@ -403,7 +415,7 @@ public abstract class GameLobby implements IHasGameType {
else {
PaperCard vanguardAvatar = null;
if (isCommanderMatch) {
final GameType commanderGameType = isTinyLeadersMatch ? GameType.TinyLeaders : GameType.Commander;
final GameType commanderGameType = isTinyLeadersMatch ? GameType.TinyLeaders : isBrawlMatch ? GameType.Brawl : GameType.Commander;
if (checkLegality) {
final String errMsg = commanderGameType.getDeckFormat().getDeckConformanceProblem(deck);
if (errMsg != null) {

View File

@@ -28,6 +28,8 @@ import forge.model.FModel;
import forge.player.GamePlayerUtil;
import forge.player.PlayerControllerHuman;
import forge.properties.ForgePreferences.FPref;
import forge.sound.SoundEffectType;
import forge.sound.SoundSystem;
import forge.util.ITriggerEvent;
import forge.util.ThreadUtil;
@@ -62,6 +64,7 @@ public class InputPassPriority extends InputSyncronizedBase {
}
getController().getGui().alertUser();
SoundSystem.instance.play(SoundEffectType.WinDuel, false);
}
/** {@inheritDoc} */

View File

@@ -42,6 +42,7 @@ public class CardCollections {
private IStorage<Deck> plane;
private IStorage<Deck> commander;
private IStorage<Deck> tinyLeaders;
private IStorage<Deck> brawl;
public CardCollections() {
}
@@ -118,4 +119,12 @@ public class CardCollections {
}
return tinyLeaders;
}
public IStorage<Deck> getBrawl() {
if (brawl == null) {
brawl = new StorageImmediatelySerialized<Deck>("Brawl decks",
new DeckStorage(new File(ForgeConstants.DECK_BRAWL_DIR), ForgeConstants.DECK_BASE_DIR));
}
return brawl;
}
}

View File

@@ -219,6 +219,7 @@ public final class ForgeConstants {
public static final String QUEST_SAVE_DIR = USER_QUEST_DIR + "saves" + PATH_SEPARATOR;
public static final String CONQUEST_SAVE_DIR = USER_CONQUEST_DIR + "saves" + PATH_SEPARATOR;
public static final String DECK_TINY_LEADERS_DIR= DECK_BASE_DIR + "tiny_leaders" + PATH_SEPARATOR;
public static final String DECK_BRAWL_DIR= DECK_BASE_DIR + "brawl" + PATH_SEPARATOR;
public static final String MAIN_PREFS_FILE = USER_PREFS_DIR + "forge.preferences";
public static final String CARD_PREFS_FILE = USER_PREFS_DIR + "card.preferences";
public static final String DECK_PREFS_FILE = USER_PREFS_DIR + "deck.preferences";

View File

@@ -50,6 +50,14 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
TINY_LEADER_P6_DECK_STATE(""),
TINY_LEADER_P7_DECK_STATE(""),
TINY_LEADER_P8_DECK_STATE(""),
BRAWL_P1_DECK_STATE(""),
BRAWL_P2_DECK_STATE(""),
BRAWL_P3_DECK_STATE(""),
BRAWL_P4_DECK_STATE(""),
BRAWL_P5_DECK_STATE(""),
BRAWL_P6_DECK_STATE(""),
BRAWL_P7_DECK_STATE(""),
BRAWL_P8_DECK_STATE(""),
UI_LANDSCAPE_MODE ("false"),
UI_COMPACT_MAIN_MENU ("false"),
UI_USE_OLD ("false"),
@@ -240,6 +248,12 @@ public class ForgePreferences extends PreferencesStore<ForgePreferences.FPref> {
TINY_LEADER_P5_DECK_STATE, TINY_LEADER_P6_DECK_STATE,
TINY_LEADER_P7_DECK_STATE, TINY_LEADER_P8_DECK_STATE };
public static FPref[] BRAWL_DECK_STATES = {
BRAWL_P1_DECK_STATE, BRAWL_P2_DECK_STATE,
BRAWL_P3_DECK_STATE, BRAWL_P4_DECK_STATE,
BRAWL_P5_DECK_STATE, BRAWL_P6_DECK_STATE,
BRAWL_P7_DECK_STATE, BRAWL_P8_DECK_STATE };
}
/** Instantiates a ForgePreferences object. */