forked from External/mage
deck improves:
* gui: removed public deck hash info; * gui: improved xmage dck-file - now it correctly load a card's amount (related to files from third party services); * server: fixed wrong cheating warning on deck construction (closes #11877); * refactor: removed outdated hash code and calculations; * other: added docs, added multiple deck hash tests;
This commit is contained in:
parent
889c1125e8
commit
7817a5cac6
32 changed files with 551 additions and 247 deletions
|
|
@ -794,18 +794,14 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
dialog.showDialog();
|
||||
|
||||
if (!dialog.getTmpPath().isEmpty()) {
|
||||
Deck deckToAppend = null;
|
||||
StringBuilder errorMessages = new StringBuilder();
|
||||
|
||||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
try {
|
||||
deckToAppend = Deck.load(DeckImporter.importDeckFromFile(dialog.getTmpPath(), errorMessages, false), true, true);
|
||||
Deck deckToAppend = Deck.load(DeckImporter.importDeckFromFile(dialog.getTmpPath(), errorMessages, false), true, true);
|
||||
processAndShowImportErrors(errorMessages);
|
||||
|
||||
if (deckToAppend != null) {
|
||||
deck = Deck.append(deckToAppend, deck);
|
||||
refreshDeck();
|
||||
}
|
||||
this.deck = Deck.append(deckToAppend, this.deck);
|
||||
refreshDeck();
|
||||
} catch (GameException e1) {
|
||||
JOptionPane.showMessageDialog(MageFrame.getDesktop(), e1.getMessage(), "Error loading deck", JOptionPane.ERROR_MESSAGE);
|
||||
} finally {
|
||||
|
|
@ -864,7 +860,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
|
||||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
try {
|
||||
DeckFormats.writeDeck(needFileName, deck.getDeckCardLists());
|
||||
DeckFormats.writeDeck(needFileName, deck.prepareCardsOnlyDeck());
|
||||
|
||||
try {
|
||||
MageFrame.getPreferences().put("lastExportFolder", file.getCanonicalPath());
|
||||
|
|
@ -1364,7 +1360,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
useDeckInfo = true;
|
||||
}
|
||||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
DeckCardLists cardLists = deck.getDeckCardLists();
|
||||
DeckCardLists cardLists = deck.prepareCardsOnlyDeck();
|
||||
cardLists.setCardLayout(deckArea.getCardLayout());
|
||||
cardLists.setSideboardLayout(deckArea.getSideboardLayout());
|
||||
if (!useDeckInfo) {
|
||||
|
|
@ -1444,12 +1440,14 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
if (mode == DeckEditorMode.SIDEBOARDING
|
||||
|| mode == DeckEditorMode.LIMITED_BUILDING
|
||||
|| mode == DeckEditorMode.LIMITED_SIDEBOARD_BUILDING) {
|
||||
// in game mode - move all to sideboard
|
||||
for (Card card : deck.getCards()) {
|
||||
deck.getSideboard().add(card);
|
||||
}
|
||||
deck.getCards().clear();
|
||||
cardSelector.loadSideboard(new ArrayList<>(deck.getSideboard()), this.bigCard);
|
||||
} else {
|
||||
// in deck editor mode - clear all cards
|
||||
deck = new Deck();
|
||||
}
|
||||
refreshDeck();
|
||||
|
|
@ -1488,7 +1486,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
updateDeckTask.cancel(true);
|
||||
}
|
||||
|
||||
if (SessionHandler.submitDeck(mode, tableId, deck.getDeckCardLists())) {
|
||||
if (SessionHandler.submitDeck(mode, tableId, deck.prepareCardsOnlyDeck())) {
|
||||
removeDeckEditor();
|
||||
}
|
||||
}//GEN-LAST:event_btnSubmitActionPerformed
|
||||
|
|
@ -1504,7 +1502,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
updateDeckTask.cancel(true);
|
||||
}
|
||||
|
||||
if (SessionHandler.submitDeck(mode, tableId, deck.getDeckCardLists())) {
|
||||
if (SessionHandler.submitDeck(mode, tableId, deck.prepareCardsOnlyDeck())) {
|
||||
SwingUtilities.invokeLater(this::removeDeckEditor);
|
||||
}
|
||||
return null;
|
||||
|
|
@ -1617,7 +1615,7 @@ class UpdateDeckTask extends SwingWorker<Void, Void> {
|
|||
@Override
|
||||
protected Void doInBackground() throws Exception {
|
||||
while (!isCancelled()) {
|
||||
SessionHandler.updateDeck(tableId, deck.getDeckCardLists());
|
||||
SessionHandler.updateDeck(tableId, deck.prepareCardsOnlyDeck());
|
||||
TimeUnit.SECONDS.sleep(5);
|
||||
}
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ public class DeckExportClipboardDialog extends MageDialog {
|
|||
DeckExporter exporter = formats.get(formatIndex).getExporter();
|
||||
|
||||
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||
exporter.writeDeck(baos, deck.getDeckCardLists());
|
||||
exporter.writeDeck(baos, deck.prepareCardsOnlyDeck());
|
||||
editData.setText(baos.toString());
|
||||
editData.setCaretPosition(0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ public class DeckLegalityPanel extends javax.swing.JPanel {
|
|||
} else {
|
||||
// contains mock cards, e.g. it's a Deck Editor
|
||||
try {
|
||||
deckToValidate = Deck.load(deck.getDeckCardLists(), true, false);
|
||||
deckToValidate = Deck.load(deck.prepareCardsOnlyDeck(), true, false);
|
||||
} catch (Exception ex) {
|
||||
logger.error("Can't load real deck cards for validate: " + ex.getMessage(), ex);
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue