mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Removed ability to concede for AI in tournaments.
Rewrote booster configuration selection for tournaments. Minor balance adjustments for tournaments.
This commit is contained in:
@@ -21,6 +21,7 @@ public class QuestDraftUtils {
|
|||||||
private static List<DraftMatchup> matchups = new ArrayList<DraftMatchup>();
|
private static List<DraftMatchup> matchups = new ArrayList<DraftMatchup>();
|
||||||
|
|
||||||
public static boolean matchInProgress = false;
|
public static boolean matchInProgress = false;
|
||||||
|
public static boolean aiMatchInProgress = false;
|
||||||
private static boolean waitForUserInput = false;
|
private static boolean waitForUserInput = false;
|
||||||
|
|
||||||
public static void continueMatch(Game lastGame) {
|
public static void continueMatch(Game lastGame) {
|
||||||
@@ -148,6 +149,9 @@ public class QuestDraftUtils {
|
|||||||
public static void update() {
|
public static void update() {
|
||||||
|
|
||||||
if (matchups.isEmpty()) {
|
if (matchups.isEmpty()) {
|
||||||
|
if (!matchInProgress) {
|
||||||
|
aiMatchInProgress = false;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -176,8 +180,10 @@ public class QuestDraftUtils {
|
|||||||
if (!nextMatch.hasHumanPlayer) {
|
if (!nextMatch.hasHumanPlayer) {
|
||||||
GuiBase.getInterface().disableOverlay();
|
GuiBase.getInterface().disableOverlay();
|
||||||
waitForUserInput = false;
|
waitForUserInput = false;
|
||||||
|
aiMatchInProgress = true;
|
||||||
} else {
|
} else {
|
||||||
waitForUserInput = true;
|
waitForUserInput = true;
|
||||||
|
aiMatchInProgress = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
GuiBase.getInterface().startMatch(GameType.QuestDraft, nextMatch.matchStarter);
|
GuiBase.getInterface().startMatch(GameType.QuestDraft, nextMatch.matchStarter);
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import forge.item.InventoryItem;
|
|||||||
import forge.menus.IMenuProvider;
|
import forge.menus.IMenuProvider;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
|
import forge.screens.home.quest.QuestDraftUtils;
|
||||||
import forge.screens.match.controllers.*;
|
import forge.screens.match.controllers.*;
|
||||||
import forge.screens.match.menus.CMatchUIMenus;
|
import forge.screens.match.menus.CMatchUIMenus;
|
||||||
import forge.screens.match.views.*;
|
import forge.screens.match.views.*;
|
||||||
@@ -475,7 +476,7 @@ public enum CMatchUI implements ICDoc, IMenuProvider {
|
|||||||
|
|
||||||
/** Concede game, bring up WinLose UI. */
|
/** Concede game, bring up WinLose UI. */
|
||||||
public void concede() {
|
public void concede() {
|
||||||
if (FOverlay.SINGLETON_INSTANCE.getPanel().isShowing()) {
|
if (FOverlay.SINGLETON_INSTANCE.getPanel().isShowing() || QuestDraftUtils.aiMatchInProgress) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,12 +18,11 @@
|
|||||||
package forge.quest;
|
package forge.quest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Stack;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
|
||||||
@@ -251,7 +250,7 @@ public class QuestEventDraft {
|
|||||||
public Object[] getPrizes() {
|
public Object[] getPrizes() {
|
||||||
|
|
||||||
int place = getPlayerPlacement();
|
int place = getPlayerPlacement();
|
||||||
int prizePool = entryFee * 8;
|
int prizePool = entryFee * 9;
|
||||||
|
|
||||||
int boosterPrices = 0;
|
int boosterPrices = 0;
|
||||||
|
|
||||||
@@ -622,17 +621,6 @@ public class QuestEventDraft {
|
|||||||
|
|
||||||
Collections.shuffle(possibleBlocks);
|
Collections.shuffle(possibleBlocks);
|
||||||
CardBlock selectedBlock = possibleBlocks.get(0);
|
CardBlock selectedBlock = possibleBlocks.get(0);
|
||||||
|
|
||||||
final Stack<String> sets = new Stack<String>();
|
|
||||||
for (int k = selectedBlock.getSets().length - 1; k >= 0; k--) {
|
|
||||||
sets.add(selectedBlock.getSets()[k].getCode());
|
|
||||||
}
|
|
||||||
|
|
||||||
for (String setCode : selectedBlock.getMetaSetNames()) {
|
|
||||||
if (selectedBlock.getMetaSet(setCode).isDraftable()) {
|
|
||||||
sets.push(setCode);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
QuestEventDraft event = new QuestEventDraft(selectedBlock.getName());
|
QuestEventDraft event = new QuestEventDraft(selectedBlock.getName());
|
||||||
|
|
||||||
@@ -646,7 +634,7 @@ public class QuestEventDraft {
|
|||||||
event.boosterConfiguration = boosterConfiguration;
|
event.boosterConfiguration = boosterConfiguration;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
List<String> possibleSetCombinations = getSetCombos(sets);
|
List<String> possibleSetCombinations = getSetCombos(selectedBlock);
|
||||||
Collections.shuffle(possibleSetCombinations);
|
Collections.shuffle(possibleSetCombinations);
|
||||||
event.boosterConfiguration = possibleSetCombinations.get(0);
|
event.boosterConfiguration = possibleSetCombinations.get(0);
|
||||||
}
|
}
|
||||||
@@ -722,71 +710,48 @@ public class QuestEventDraft {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int) (entryFee * 1.65);
|
return (int) (entryFee * 1.5);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<String> getSetCombos(final List<String> setz) {
|
private static List<String> getSetCombos(final CardBlock block) {
|
||||||
String[] sets = setz.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
|
|
||||||
List<String> setCombos = new ArrayList<String>();
|
List<String> setCombos = new ArrayList<String>();
|
||||||
if (sets.length >= 2) {
|
CardEdition[] sets = block.getSets();
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[0], sets[0], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[0], sets[0], sets[1]));
|
Arrays.sort(sets, new Comparator<CardEdition>() {
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[0], sets[1], sets[1]));
|
@Override
|
||||||
if (sets.length >= 3) {
|
public int compare(CardEdition set1, CardEdition set2) {
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[0], sets[1], sets[2]));
|
if (set1.getDate().after(set2.getDate())) {
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[0], sets[2], sets[2]));
|
return -1;
|
||||||
|
} else if (set1.getDate().before(set2.getDate())) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[1], sets[0], sets[0]));
|
});
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[1]));
|
if (sets.length == 2) {
|
||||||
if (sets.length >= 3) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[1], sets[1], sets[2]));
|
if (sets[0].getCards().length < 200) {
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[1], sets[2], sets[2]));
|
setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[1].getCode()));
|
||||||
|
} else if (sets[1].getCards().length < 200) {
|
||||||
|
setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[0].getCode(), sets[0].getCode()));
|
||||||
|
} else {
|
||||||
|
setCombos.add(String.format("%s/%s/%s", sets[1].getCode(), sets[1].getCode(), sets[1].getCode()));
|
||||||
|
setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[1].getCode()));
|
||||||
|
setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[0].getCode(), sets[1].getCode()));
|
||||||
|
setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[0].getCode(), sets[0].getCode()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (sets.length >= 3) {
|
||||||
|
|
||||||
|
setCombos.add(String.format("%s/%s/%s", sets[0].getCode(), sets[1].getCode(), sets[2].getCode()));
|
||||||
|
|
||||||
}
|
}
|
||||||
if (sets.length >= 3) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[2], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[1]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[2], sets[2], sets[2]));
|
|
||||||
} // Beyond 3, skimp on the choice configurations, or the list will be enormous!
|
|
||||||
if (sets.length >= 4) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[3], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[3], sets[2], sets[1]));
|
|
||||||
}
|
|
||||||
if (sets.length >= 5) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[4], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[4], sets[3], sets[2]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[4], sets[2], sets[0]));
|
|
||||||
}
|
|
||||||
if (sets.length >= 6) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[5], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[5], sets[3], sets[2]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[5], sets[4], sets[3]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[5], sets[2], sets[0]));
|
|
||||||
}
|
|
||||||
if (sets.length >= 7) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[6], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[6], sets[3], sets[2]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[6], sets[5], sets[4]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[6], sets[3], sets[0]));
|
|
||||||
}
|
|
||||||
if (sets.length >= 8) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[7], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[7], sets[3], sets[2]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[7], sets[5], sets[4]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[7], sets[6], sets[5]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[7], sets[3], sets[0]));
|
|
||||||
}
|
|
||||||
if (sets.length >= 9) {
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[8], sets[1], sets[0]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[8], sets[3], sets[2]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[8], sets[5], sets[4]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[8], sets[7], sets[6]));
|
|
||||||
setCombos.add(String.format("%s/%s/%s", sets[8], sets[4], sets[0]));
|
|
||||||
}
|
|
||||||
return setCombos;
|
return setCombos;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user