* Try to allow chained promotion picking
* Reorg PromotionPickerScreen into own package
* Draft for new PromotionTree
* Change PromotionPickerScreen to use new tree (picking still not done)
* Finish new PromotionPickerScreen - code
* Finish new PromotionPickerScreen - assets and linting
* Finish new PromotionPickerScreen - polish positioning and lines
* Finish new PromotionPickerScreen - fix sound
* Finish new PromotionPickerScreen - little optimization
* Finish new PromotionPickerScreen - emphasize line along path
* Finish new PromotionPickerScreen - merge fix
* Finish new PromotionPickerScreen - address comments
* Finish new PromotionPickerScreen - fix sort and update wiki
* Check for trigger uniques when starting and recaluating population
* Adding imports
* whoops
* Moved where starting techs are added, added a parameter, and fixed the check for GUI
* Improve Load game error label readability
* Fix threading on load game screen
* Miscellaneous tweaks
* Compatibility with Mods using trailing dashes on Windows
* Do not recreate the Line Chart every time
* Simplifed the Line Chart creation
* Do not create objects in draw(): VictoryScreenCivGroup table
* Do not create objects in draw(): Labels
* Create labels without negative Y
* Lift the X axis if there is an negative number
* Arbitrary number of -Y labels
* Autoscale by Y axis
* Zoom in/out by click
* Autoscale by X axis
* Unit tests for LineChart
* Rework of the line chart rendering
* Adding Field for great person types
* Switching from unit field to unique
* Simplification and adding back in the old field for backward compatibility
* Deprecate old field for checking great person
* Fix error
* Fixes part 2. I probably should've waited
* Spies now occasionally steal technologies
* Updated the UI so it doesn't show a turn counter when that cannot be provided
* Implemented changes discussed in reveiw comments
* Renamed variable
---------
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
* Tighten mod check severity and selectivity for unit-producing triggered Uniques
* Prettify display of mod check results by suppressing dupes and hiding conditionals from tr()
* Extra confirmation to play with errors, colors, improved handling of mod checkboxes
* Tweaks to improved mod checking in new game
* Added new ktor dependency for developing multiplayer API v2
* Added the api package, including endpoint implementations, cookie helpers, serializers and structs
* Fixed a bunch of problems related to error handling
* Fixed some API incompatibilities, added getFriends() method
Rename the Api class to ApiV2Wrapper, added a chat room screen
Replaced logging dependency, renamed the endpoint implementations
* Dropped the extra logger to remove dependencies, added the APIv2 class
* Restructured the project to make ApiV2 class the center
* Improved chat handling, added server game detail caching
Added a generic HTTP request wrapper that can retry requests easily
Added a default handler to retry requests after session refreshing
* Updated the API structs based on the new OpenAPI specifications
Switched endpoint implementations to use the new 'request', updated WebSocket structs
* Updated the auth helper, added the UncivNetworkException
Fixed some more issues due to refactoring APIv2 handler
Fixed some issues and some minor incompatibilities with the new API
* Implemented the LobbyBrowserTable, added missing API endpoint
Fixed login and auth issues in the main menu screen
* Added new WebSocket structs for handling invites and friends
Updated the API reference implementation
* Added GET cache, allowed all WS messages to be Events, added missing endpoints
Added func to dispose and refresh OnlineMultiplayer, only show set username for APIv2
* Reworked the ApiV2 class to improve WebSocket handling for every login
Added small game fetch, fixed lobby start, some smaller fixes
* Change the user ID after logging in to fix later in-game issues
Attention: Afterwards, there is restoration of the
previous player ID. Therefore, it won't be possible to
revert back to APIv0 or APIv1 behavior easily (i.e., without
saving the player ID before logging in the first time).
Added serializer class for WebSocket's FriendshipEvent enum
Fixed chat room access and cancelling friendships
* Fixed WebSocket re-connecting, outsourced configs
Updated the RegisterLoginPopup to ask if the user wants to use the new servers
Implemented a self-contained API version check with side-effects
Fixed various problems with WebSocket connections
Don't show kick button for lobby owner, handle network issues during login
* Added English translations for ApiStatusCode, fixed broken APIv1 games for uncivserver.xyz
Fixed subpaths in baseUrl, added server settings button
* Added WS-based Android turn checker, added a new event channel, fixed APIWrapper
Added a logout hook, implemented ensureConnectedWebSocket
Merge branch 'master' into dev
* Throttle auto-reconnect for WS on Android in background, added reload notice for your turn popup
Implemented real pinging with awaiting responses, fixed ping-related problems
* Adapted new getAllChats API, added outstanding friend request list, improved styling
* Added the ApiVersion enum and the ApiV2 storage emulator
* Updated the APIv2 file storage emulator
* Replaced all wildcard imports with named imports
- use existing map for building resource check, instead of iterating over uniques
- remove one retrieval for UniqueMap.addUnique
Idea for future improvement: setTerrainFeatures currently populates a UniqueMap for each tile. MANY tiles share the same set of features...
- improvementFilter checks map instead of array for textual match
- forCityGetMatchingUniques does not string-serialize conditionals - revealed by flame chart to be significant