GUI enchancements (themes, sound notification, deck validation) (#6755)

GUI enchancements (themes, sound notification, deck validation)
This commit is contained in:
18ths 2020-07-17 19:15:02 +02:00 committed by GitHub
parent 8c4c2728d6
commit 99d5eafc8a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
128 changed files with 1988 additions and 11320 deletions

View file

@ -81,7 +81,7 @@ public class AusHighlander extends Constructed {
}
public AusHighlander() {
this("Australian Highlander");
super("Australian Highlander", "AU Highlander");
for (ExpansionSet set : Sets.getInstance().values()) {
if (set.getSetType().isEternalLegal()) {
setCodes.add(set.getCode());
@ -89,13 +89,10 @@ public class AusHighlander extends Constructed {
}
}
public AusHighlander(String name) {
super(name);
}
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
if (deck.getCards().size() != getDeckMinSize()) {
invalid.put("Deck", "Must contain " + getDeckMinSize() + " singleton cards: has " + (deck.getCards().size()) + " cards");

View file

@ -32,10 +32,6 @@ public class Brawl extends Constructed {
banned.add("Winota, Joiner of Forces");
}
public Brawl(String name) {
super(name);
}
@Override
public int getSideboardMinSize() {
return 1;
@ -44,6 +40,7 @@ public class Brawl extends Constructed {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
Card brawler = null;
Card companion = null;
FilterMana colorIdentity = new FilterMana();

View file

@ -63,7 +63,7 @@ public class CanadianHighlander extends Constructed {
}
public CanadianHighlander() {
this("Canadian Highlander");
super("Canadian Highlander");
for (ExpansionSet set : Sets.getInstance().values()) {
if (set.getSetType().isEternalLegal()) {
setCodes.add(set.getCode());
@ -71,13 +71,10 @@ public class CanadianHighlander extends Constructed {
}
}
public CanadianHighlander(String name) {
super(name);
}
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
if (deck.getCards().size() < 100) {
invalid.put("Deck", "Must contain 100 or more singleton cards: has " + (deck.getCards().size()) + " cards");

View file

@ -27,7 +27,7 @@ public class Commander extends Constructed {
protected boolean partnerAllowed = true;
public Commander() {
this("Commander");
super("Commander");
for (ExpansionSet set : Sets.getInstance().values()) {
if (set.getSetType().isEternalLegal()) {
setCodes.add(set.getCode());
@ -80,6 +80,10 @@ public class Commander extends Constructed {
super(name);
}
public Commander(String name, String shortName) {
super(name, shortName);
}
@Override
public int getDeckMinSize() {
return 98;
@ -93,6 +97,7 @@ public class Commander extends Constructed {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
FilterMana colorIdentity = new FilterMana();
Set<Card> commanders = new HashSet<>();
Card companion = null;

View file

@ -12,6 +12,14 @@ public class Freeform extends DeckValidator {
super("Constructed - Freeform");
}
public Freeform(String name) {
super(name);
}
public Freeform(String name, String shortName) {
super(name, shortName);
}
@Override
public int getDeckMinSize() {
return 40;
@ -25,6 +33,7 @@ public class Freeform extends DeckValidator {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
// http://magic.wizards.com/en/gameinfo/gameplay/formats/freeform
if (deck.getCards().size() < getDeckMinSize()) {
invalid.put("Deck", "Must contain at least " + getDeckMinSize() + " cards: has only " + deck.getCards().size() + " cards");

View file

@ -23,7 +23,7 @@ public class FreeformCommander extends Constructed {
private static final Map<String, Integer> pdAllowed = new HashMap<>();
public FreeformCommander() {
this("Freeform Commander");
super("Freeform Commander");
for (ExpansionSet set : Sets.getInstance().values()) {
setCodes.add(set.getCode());
}
@ -36,6 +36,10 @@ public class FreeformCommander extends Constructed {
super(name);
}
public FreeformCommander(String name, String shortName) {
super(name, shortName);
}
@Override
public int getDeckMinSize() {
return 98;
@ -49,6 +53,7 @@ public class FreeformCommander extends Constructed {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
FilterMana colorIdentity = new FilterMana();
Set<Card> commanders = new HashSet<>();
Card companion = null;

View file

@ -107,6 +107,7 @@ public class HistoricalType2 extends Constructed {
Map<String, String> leastInvalid = null;
boolean valid = false;
invalid.clear();
// first, check whether misty and batterskull are in the same deck.
Map<String, Integer> counts = new HashMap<>();

View file

@ -14,11 +14,7 @@ import java.util.List;
public class Momir extends DeckValidator {
public Momir() {
this("Momir Basic");
}
public Momir(String name) {
super(name);
super("Momir Basic", "Momir");
}
@Override
@ -34,6 +30,7 @@ public class Momir extends DeckValidator {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
if (deck.getCards().size() != getDeckMinSize()) {
invalid.put("Deck", "Must contain " + getDeckMinSize() + " cards: has " + deck.getCards().size() + " cards");

View file

@ -20,7 +20,7 @@ public class Oathbreaker extends Vintage {
public Oathbreaker() {
super();
this.name = "Oathbreaker";
setName("Oathbreaker");
// banned = vintage + oathbreaker's list: https://oathbreakermtg.org/banned-list/
// last updated 4/24/20 - Dark Ritual banned
@ -82,6 +82,7 @@ public class Oathbreaker extends Vintage {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
if (deck.getCards().size() + deck.getSideboard().size() != 60) {
invalid.put("Deck", "Must contain " + 60 + " cards: has " + (deck.getCards().size() + deck.getSideboard().size()) + " cards");

View file

@ -10,6 +10,7 @@ import mage.cards.ExpansionSet;
import mage.cards.Sets;
import mage.cards.decks.Constructed;
import mage.cards.decks.Deck;
import mage.cards.decks.PennyDreadfulLegalityUtil;
import mage.filter.FilterMana;
import mage.util.ManaUtil;
@ -23,10 +24,9 @@ public class PennyDreadfulCommander extends Constructed {
protected List<String> bannedCommander = new ArrayList<>();
private static final Map<String, Integer> pdAllowed = new HashMap<>();
private static boolean setupAllowed = false;
public PennyDreadfulCommander() {
this("Penny Dreadful Commander");
super("Penny Dreadful Commander", "Penny");
for (ExpansionSet set : Sets.getInstance().values()) {
if (set.getSetType().isEternalLegal()) {
setCodes.add(set.getCode());
@ -34,10 +34,6 @@ public class PennyDreadfulCommander extends Constructed {
}
}
public PennyDreadfulCommander(String name) {
super(name);
}
@Override
public int getDeckMinSize() {
return 98;
@ -51,6 +47,7 @@ public class PennyDreadfulCommander extends Constructed {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
FilterMana colorIdentity = new FilterMana();
Set<Card> commanders = new HashSet<>();
Card companion = null;
@ -110,7 +107,10 @@ public class PennyDreadfulCommander extends Constructed {
countCards(counts, deck.getSideboard());
valid = checkCounts(1, counts) && valid;
generatePennyDreadfulHash();
if (pdAllowed.isEmpty()) {
pdAllowed.putAll(PennyDreadfulLegalityUtil.getLegalCardList());
}
for (String wantedCard : counts.keySet()) {
if (!(pdAllowed.containsKey(wantedCard))) {
invalid.put(wantedCard, "Banned");
@ -199,22 +199,4 @@ public class PennyDreadfulCommander extends Constructed {
}
return valid;
}
public void generatePennyDreadfulHash() {
if (setupAllowed == false) {
setupAllowed = true;
} else {
return;
}
Properties properties = new Properties();
try {
properties.load(PennyDreadfulCommander.class.getResourceAsStream("pennydreadful.properties"));
} catch (Exception e) {
e.printStackTrace();
}
for (final Entry<Object, Object> entry : properties.entrySet()) {
pdAllowed.put((String) entry.getKey(), 1);
}
}
}

View file

@ -80,6 +80,7 @@ public class SuperType2 extends Constructed {
Map<String, String> leastInvalid = null;
boolean valid = false;
invalid.clear();
// first, check whether misty and batterskull are in the same deck.
Map<String, Integer> counts = new HashMap<>();

View file

@ -22,7 +22,7 @@ public class TinyLeaders extends Constructed {
protected List<String> bannedCommander = new ArrayList<>();
public TinyLeaders() {
this("Tiny Leaders");
super("Tiny Leaders");
for (ExpansionSet set : Sets.getInstance().values()) {
if (set.getSetType().isEternalLegal()) {
setCodes.add(set.getCode());
@ -86,10 +86,6 @@ public class TinyLeaders extends Constructed {
bannedCommander.add("Derevi, Empyrical Tactician");
}
public TinyLeaders(String name) {
super(name);
}
@Override
public int getDeckMinSize() {
return 49; // commander gives from deck name
@ -107,6 +103,7 @@ public class TinyLeaders extends Constructed {
@Override
public boolean validate(Deck deck) {
boolean valid = true;
invalid.clear();
if (deck.getCards().size() != getDeckMinSize()) {
invalid.put("Deck", "Must contain " + getDeckMinSize() + " cards: has " + deck.getCards().size() + " cards");