From 5f46af3fd11993bebfe7adc821a7c03545aedf8e Mon Sep 17 00:00:00 2001 From: leriomaggio Date: Sun, 12 Sep 2021 18:31:30 +0100 Subject: [PATCH] Support for Deck Section highlight in Deck Import following XMage integration Signed-off-by: leriomaggio --- .../java/forge/deck/DeckImportController.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/forge-gui/src/main/java/forge/deck/DeckImportController.java b/forge-gui/src/main/java/forge/deck/DeckImportController.java index 991c8010780..10af1f333e4 100644 --- a/forge-gui/src/main/java/forge/deck/DeckImportController.java +++ b/forge-gui/src/main/java/forge/deck/DeckImportController.java @@ -21,8 +21,8 @@ public class DeckImportController { private final IComboBox yearDropdown; private final List tokens = new ArrayList<>(); private final boolean currentDeckNotEmpty; - private List allowedSetCodes; - private DeckFormat currentDeckFormat; + private final List allowedSetCodes; + private final DeckFormat currentDeckFormat; public DeckImportController(ICheckBox dateTimeCheck0, IComboBox monthDropdown0, IComboBox yearDropdown0, @@ -71,7 +71,7 @@ public class DeckImportController { } int yearNow = Calendar.getInstance().get(Calendar.YEAR); for (int i = yearNow; i >= 1993; i--) { - yearDropdown.addItem(Integer.valueOf(i)); + yearDropdown.addItem(i); } } @@ -88,10 +88,26 @@ public class DeckImportController { recognizer.setDeckFormatConstraint(this.currentDeckFormat); String[] lines = input.split("\n"); + DeckSection referenceDeckSectionInParsing = null; // default for (String line : lines) { - DeckRecognizer.Token token = recognizer.recognizeLine(line); - if (token != null) - tokens.add(token); + DeckRecognizer.Token token = recognizer.recognizeLine(line, referenceDeckSectionInParsing); + if (token != null) { + if (token.getType() == DeckRecognizer.TokenType.DECK_SECTION_NAME) + referenceDeckSectionInParsing = DeckSection.valueOf(token.getText()); + else if (token.isCardToken()) { + DeckSection tokenSection = token.getTokenSection(); + if (!tokenSection.equals(referenceDeckSectionInParsing)) { + DeckRecognizer.Token sectionToken = DeckRecognizer.Token.DeckSection(token.getTokenSection().name()); + if (referenceDeckSectionInParsing == null) + tokens.add(0, sectionToken); // first ever - put on top! + else + tokens.add(sectionToken); // add just before card token + referenceDeckSectionInParsing = tokenSection; + } + } + tokens.add(token); // add found token + } + } return tokens; }