- forge.exe and forge-adventure.exe needs at least Java 11.0.1
- for Java 8, user should use forge-old.exe for Forge Desktop, and forge-adventure-old.exe for Forge Adventure
The card art optimisation algorithm integrated into DeckImportController leverages (in terms of general logic) on the card art optimisation in Deck.
However, several are differences in terms of context and interactions so a specialised implementation is needed.
First, the smart card art optimisation has been added as an option in DeckImport. Therefore, smart card art is not a static game option to be used when loading decks with cards with no edition, but also as an option to tweak the deck list.
The second specialisation required is that this implementation takes into account any game format constraint (in terms of allowed sets for optimisation).
Last but not least, the current deck in editor (if any) will be also considered during optimisation.
In particular, when _importing cards_ in current deck (therefore, when not creating a new deck with the deck list) will also take into account the pools of current deck so that harmonisation will already consider where cards will be imported to.
This method will be invoked by DeckImport (desktop) to pass on current deck in editor (if any) to the DeckImportController.
This deck will be eventually used as part of the smart card optimisation.
- Clear image cache if necessary (prevent clearing if the downloaded data is not image)
- Cache missing cards (prevent finding missing cards unless the user has fetched/downloads an image)
- Clear preselected options for New Gauntlet Match (easier to filter decks for Gauntlet)
This commit adds in a new piece of information to Token in DeckRecognizer to mark whether original card request included or not a set code.
This flag will be only used by actual CardToken and will be leveraged later on by "smart card optimisation option" to be added to DeckImport on desktop too.
Majority of tests in DeckRecognizerTest have been updated to cross-check that no bug has been unintentionally introduced.
The DeckView = when initialised = after editing the current deck in editor, tries to select it in the decklist view. However, at startup this won't be actually successful due to an un-initialised table model.
The issue only happens at startup time, and it is related to the fact that despite any selected item can be set (with the current Deck in editor) - see `populate` - the `update` method that initialise the (table)models is only called afterwards.
Therefore, the update method of Controller has been modified to re-try a selection with current deck in editor.
The whole procedure is skipped if the selected index is different from zero = assuming zero is the default fallback option.
If that's not the case, say the zero first deck should be indeed selected, the selected item shouldn't be activated twice anyway if that's exactly what's already been selected.