mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Improved handling of color selection for deckbuilding and land selection in card-based random decks - including fixing a few bugs with dual land detection regexs
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -20939,6 +20939,7 @@ forge-gui/src/main/java/forge/limited/CardThemedDeckBuilder.java -text
|
|||||||
forge-gui/src/main/java/forge/limited/CustomLimited.java svneol=native#text/plain
|
forge-gui/src/main/java/forge/limited/CustomLimited.java svneol=native#text/plain
|
||||||
forge-gui/src/main/java/forge/limited/DeckColors.java svneol=native#text/plain
|
forge-gui/src/main/java/forge/limited/DeckColors.java svneol=native#text/plain
|
||||||
forge-gui/src/main/java/forge/limited/DraftRankCache.java -text
|
forge-gui/src/main/java/forge/limited/DraftRankCache.java -text
|
||||||
|
forge-gui/src/main/java/forge/limited/FullDeckColors.java -text
|
||||||
forge-gui/src/main/java/forge/limited/GauntletMini.java -text
|
forge-gui/src/main/java/forge/limited/GauntletMini.java -text
|
||||||
forge-gui/src/main/java/forge/limited/IBoosterDraft.java svneol=native#text/plain
|
forge-gui/src/main/java/forge/limited/IBoosterDraft.java svneol=native#text/plain
|
||||||
forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java -text
|
forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java -text
|
||||||
|
|||||||
@@ -393,7 +393,7 @@ public abstract class DeckGeneratorBase {
|
|||||||
*/
|
*/
|
||||||
protected List<String> getDualLandList() {
|
protected List<String> getDualLandList() {
|
||||||
|
|
||||||
|
System.out.println("Dual Land Colors: " + colors.toEnumSet().toString());
|
||||||
if (colors.countColors() > 3) {
|
if (colors.countColors() > 3) {
|
||||||
addCardNameToList("Rupture Spire", dLands);
|
addCardNameToList("Rupture Spire", dLands);
|
||||||
addCardNameToList("Undiscovered Paradise", dLands);
|
addCardNameToList("Undiscovered Paradise", dLands);
|
||||||
@@ -445,7 +445,7 @@ public abstract class DeckGeneratorBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<String> regexFetchLandSearch(Iterable<PaperCard> landCards){
|
public List<String> regexFetchLandSearch(Iterable<PaperCard> landCards){
|
||||||
final String fetchPattern="Search your library for a ([^\\s]*) or ([^\\s]*) card";
|
final String fetchPattern="Search your library for an* ([^\\s]*) or ([^\\s]*) card";
|
||||||
//final List<String> dLands = new ArrayList<String>();
|
//final List<String> dLands = new ArrayList<String>();
|
||||||
Map<String,String> colorLookup= new HashMap<>();
|
Map<String,String> colorLookup= new HashMap<>();
|
||||||
colorLookup.put("Plains","W");
|
colorLookup.put("Plains","W");
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
protected Iterable<PaperCard> keyCards;
|
protected Iterable<PaperCard> keyCards;
|
||||||
|
|
||||||
protected static final boolean logToConsole = false;
|
protected static final boolean logToConsole = false;
|
||||||
|
protected static final boolean logColorsToConsole = false;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -84,11 +85,18 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
deckColors.addColorsOf(c);
|
deckColors.addColorsOf(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.colors = deckColors.getChosenColors();
|
colors = deckColors.getChosenColors();
|
||||||
|
if (logColorsToConsole) {
|
||||||
|
System.out.println(keyCard.getName());
|
||||||
|
System.out.println("Pre Colors: " + colors.toEnumSet().toString());
|
||||||
|
}
|
||||||
if(!colors.hasAllColors(keyCard.getRules().getColorIdentity().getColor())){
|
if(!colors.hasAllColors(keyCard.getRules().getColorIdentity().getColor())){
|
||||||
colors = ColorSet.fromMask(colors.getColor() | keyCard.getRules().getColorIdentity().getColor());
|
colors = ColorSet.fromMask(colors.getColor() | keyCard.getRules().getColorIdentity().getColor());
|
||||||
}
|
}
|
||||||
|
if (logColorsToConsole) {
|
||||||
|
System.out.println(keyCard.getName());
|
||||||
|
System.out.println("Pre Colors: " + colors.toEnumSet().toString());
|
||||||
|
}
|
||||||
findBasicLandSets();
|
findBasicLandSets();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +118,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
public Deck buildDeck() {
|
public Deck buildDeck() {
|
||||||
// 1. Prepare
|
// 1. Prepare
|
||||||
hasColor = Predicates.or(new MatchColorIdentity(colors), COLORLESS_CARDS);
|
hasColor = Predicates.or(new MatchColorIdentity(colors), COLORLESS_CARDS);
|
||||||
if (logToConsole) {
|
if (logColorsToConsole) {
|
||||||
System.out.println(keyCard.getName());
|
System.out.println(keyCard.getName());
|
||||||
System.out.println("Colors: " + colors.toEnumSet().toString());
|
System.out.println("Colors: " + colors.toEnumSet().toString());
|
||||||
}
|
}
|
||||||
@@ -174,7 +182,7 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
// 7. If not enough cards yet, try to add a third color,
|
// 7. If not enough cards yet, try to add a third color,
|
||||||
// to try and avoid adding purely random cards.
|
// to try and avoid adding purely random cards.
|
||||||
addThirdColorCards(numSpellsNeeded - deckList.size());
|
addThirdColorCards(numSpellsNeeded - deckList.size());
|
||||||
if (logToConsole) {
|
if (logColorsToConsole) {
|
||||||
System.out.println("Post 3rd colour : " + deckList.size());
|
System.out.println("Post 3rd colour : " + deckList.size());
|
||||||
System.out.println("Colors: " + colors.toEnumSet().toString());
|
System.out.println("Colors: " + colors.toEnumSet().toString());
|
||||||
}
|
}
|
||||||
@@ -188,7 +196,17 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
if (logToConsole) {
|
if (logToConsole) {
|
||||||
System.out.println("Post Randoms : " + deckList.size());
|
System.out.println("Post Randoms : " + deckList.size());
|
||||||
}
|
}
|
||||||
|
//TODO: update colors
|
||||||
|
FullDeckColors finalDeckColors = new FullDeckColors();
|
||||||
|
for(PaperCard c:deckList){
|
||||||
|
if(finalDeckColors.canChoseMoreColors()){
|
||||||
|
finalDeckColors.addColorsOf(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
colors = finalDeckColors.getChosenColors();
|
||||||
|
if (logColorsToConsole) {
|
||||||
|
System.out.println("Final Colors: " + colors.toEnumSet().toString());
|
||||||
|
}
|
||||||
// 10. Add non-basic lands that were drafted.
|
// 10. Add non-basic lands that were drafted.
|
||||||
addWastesIfRequired();
|
addWastesIfRequired();
|
||||||
List<String> duals = getDualLandList();
|
List<String> duals = getDualLandList();
|
||||||
@@ -833,11 +851,11 @@ public class CardThemedDeckBuilder extends DeckGeneratorBase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param colors
|
* @param colors0
|
||||||
* the colors to set
|
* the colors to set
|
||||||
*/
|
*/
|
||||||
public void setColors(final ColorSet colors) {
|
public void setColors(final ColorSet colors0) {
|
||||||
this.colors = colors;
|
colors = colors0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public class DeckColors {
|
|||||||
private ColorSet chosen;
|
private ColorSet chosen;
|
||||||
private int colorMask;
|
private int colorMask;
|
||||||
|
|
||||||
public final static int MAX_COLORS = 2;
|
public int MAX_COLORS = 2;
|
||||||
|
|
||||||
public ColorSet getChosenColors() {
|
public ColorSet getChosenColors() {
|
||||||
if (null == chosen) {
|
if (null == chosen) {
|
||||||
@@ -47,7 +47,7 @@ public class DeckColors {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final byte color : MagicColor.WUBRGC) {
|
for (final byte color : MagicColor.WUBRG) {
|
||||||
if (toAdd.hasAnyColor(color)) {
|
if (toAdd.hasAnyColor(color)) {
|
||||||
colorMask |= color;
|
colorMask |= color;
|
||||||
chosen = null; // invalidate color set
|
chosen = null; // invalidate color set
|
||||||
|
|||||||
10
forge-gui/src/main/java/forge/limited/FullDeckColors.java
Normal file
10
forge-gui/src/main/java/forge/limited/FullDeckColors.java
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
package forge.limited;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by maustin on 11/05/2017.
|
||||||
|
*/
|
||||||
|
public class FullDeckColors extends DeckColors {
|
||||||
|
public FullDeckColors(){
|
||||||
|
MAX_COLORS = 5;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user