Network upgrade and new reconnection mode:
* users can disconnect or close app without game progress loose now;
* disconnect dialog will show active tables stats and additional options;
* all active tables will be restored on reconnect (tables, tourneys, games, drafts, sideboarding, constructing);
* user must use same server and username on next connection;
* there are few minutes for reconnect until server kick off a disconnected player from all player's tables (concede/loose);
* now you can safety reconnect after IP change (after proxy/vpn/wifi/router restart);
Other improvements and fixes:
* gui: main menu - improved switch panel button, added stats about current tables/panels;
* gui: improved data sync and updates (fixes many use cases with empty battlefield, not started games/drafts/tourneys, not updatable drafts, etc);
* gui: improved stability on game updates (fixes some random errors related to wrong threads);
* server: fixed miss messages about player's disconnection problems for other players in the chat;
* refactor: simplified and improved connection and network related code, deleted outdated code, added docs;
* tests: improved load test to support lands only set for more stable performance/network testing (set TEST_AI_RANDOM_DECK_SETS = PELP and run test_TwoAIPlayGame_Multiple);
* Improve some "mana spent -> give effect to permanent spell" cards
make effect source be the SpellAbility itself
* Implement Intrepid Paleontologist and tests
* Use a common class for the "specific MOR ETBs with counter" effect
* Prevent casting non-owned dinosuars
* Rename AddCounterEnteringMOR to AddCounterEnteringCreature
* fixes from review
* server: fixed that a critical errors ignored in user commands threads (now it will be added to the logs);
* network: fixed frozen user responses in some use cases;
* network: fixed accidental and incorrect user responses (only latest response will be used now);
* network: improved freeze logs, added problem method name and code's line number;
* cheats: removed outdated deck and card load logic (only init.txt commands supports now);
* cheats: fixed wrong priority after add card dialog (closes#11437);
* cheats: improved stability and random errors on cheat executes (related to #11437);
* docs: added details on network and thread logic, human feedback life cycle, etc (see HumanPlayer, ThreadExecutorImpl);
* Add tests for conditional mana usage with soft counterspells
* Fix "to cast" conditions on common ManaCondition classes
* Add fix to all remaining ManaCondition classes
* SimpleActivatedAbilityConditionalMana is tested to pay for a soft counterspell activated ability
* Remove now-unused imports
* Switch Convoke to using costs tag system
* Add Convoke copy/clone tests
* update author name on sufficiently changed files
* Remove now-unused CONVOKED event
* Add [WHO] Coward // Killer
* Add MTGO version of [UNF] "Name Sticker" Goblin
* Implement [WHO] Thijarian Witness
* Add NameStickerGoblinTest
* Fix Thijarian Witness, add tests (may need additional tests). Also adds a simple toString for MageObjectReference
* Don't spam the java garbage collector, add another test
* Replace non-ASCII characters in card text
* improve MOR toString
* Thijarian Witness fixed better, add AttackingBlockingWatcher in common
* cleanup from xenohedron's review
* Fix test, add warning not to use AttackingBlockingWatcher for static effects
* rename AttackingBlockingWatcher to AttackingBlockingDelayedWatcher to make it more obvious how it should be used, minor documentation changes
Simplify and rename Thijarian Witness Predicate
* add null checks