Draft Cubes rework (better cube from deck, dynamic data, better errors processing, actual MTGO Vintage Cube) (#13705)

- GUI, table: added dynamic data support for Cube Types (no more depends on server's config names, part of #12050);
- server: replace multiple MTGO Vintage Cubes by single cube, updated to April 2025 (part of #12050);
- server: fixed table freeze on starting error (related to #11285);
- GUI, table: added better support of Cube From Deck (client/server side errors, additional info about loaded cards, etc);
This commit is contained in:
Oleg Agafonov 2025-05-31 20:15:31 +04:00 committed by GitHub
parent 2034b3fe59
commit 3d45a24959
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 755 additions and 61 deletions

View file

@ -1,50 +1,63 @@
package mage.view;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import mage.cards.ExpansionSet;
import mage.game.draft.Draft;
import mage.game.draft.DraftCube;
import mage.game.draft.DraftPlayer;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author BetaSteward_at_googlemail.com
* @author BetaSteward_at_googlemail.com, JayDi85
*/
public class DraftView implements Serializable {
private static final long serialVersionUID = 1L;
private final List<String> sets = new ArrayList<>();
private final List<String> setNames = new ArrayList<>();
private final List<String> setCodes = new ArrayList<>();
private final int boosterNum; // starts with 1
private final int cardNum; // starts with 1
private final boolean isCube;
private final List<String> players = new ArrayList<>();
public DraftView(Draft draft) {
if (draft.getDraftCube() != null) {
this.isCube = draft.getDraftCube() != null;
if (this.isCube) {
for (int i = 0; i < draft.getNumberBoosters(); i++) {
DraftCube cube = draft.getDraftCube();
sets.add(cube.getName());
setNames.add(cube.getName());
setCodes.add(cube.getCode());
}
} else {
for (ExpansionSet set: draft.getSets()) {
sets.add(set.getName());
for (ExpansionSet set : draft.getSets()) {
setNames.add(set.getName());
setCodes.add(set.getCode());
}
}
this.boosterNum = draft.getBoosterNum();
this.cardNum = draft.getCardNum();
for(DraftPlayer draftPlayer :draft.getPlayers()) {
for (DraftPlayer draftPlayer : draft.getPlayers()) {
players.add(draftPlayer.getPlayer().getName());
}
}
public List<String> getSets() {
return sets;
public String getBoosterInfo(int index) {
if (index >= this.setCodes.size() || this.setCodes.size() != this.setNames.size()) {
return "error";
}
if (this.isCube) {
return this.setNames.get(index);
} else {
return String.join(" - ", this.setCodes.get(index), this.setNames.get(index));
}
}
public List<String> getSetNames() {
return setNames;
}
public List<String> getSetCodes() {