* Fixed wrong implementation of Basic auth
+ added min length for passwords
* Fixed basic auth being compressed
+ added function to get auth header from settings
* Add serialization version to GameInfo
* Add handling of incompatible saves due to a dfiferent save version
* Fix compilation?
* Fix ios compilation
* Refactor: Make it clearer that GameInfo serialization version is only supposed to be incremented when it's guaranteed to cause issues & rename to compatibility version
* Update initial version
* Update initial version
* Fix merge mistake
* Make popups and text fields nicer to interact with on Android
* Refactor: Rename createTextField to UncivTextField.create
* Fix multiplayer save delete text
* added support
* now toggleable in settings
* translation
* added note that it requires restart
* made it enabled by default
* padded buttons to the right if there is a cutout
* checking for cutout instead of android
* reverted button changes
* moved option to advancedTab
* Refactor: Consistent usage of coroutines
* Add usage comments to the different threads
* Refactor: Properly separate crash handling into its platform-specific parts
* Fix autoSave never finishing
* Correctly handle coroutines when the GL thread is not accepting runnables anymore
Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
* Refactor: Make Popups work on Stages instead of BaseScreens
* Refactor: Change UncivGame.worldScreen and UncivGame.gameInfo to be of nullable type
* Fix "Resume" game loading not fully handling exceptions
* Fix one missed refactoring
* Refactor: remove useless postRunnable
The fix in #6901 caused `arrayIndex` to go out of sync, because the `continue` happened before `arrayIndex` was incremented. This caused a later game preview to be saved to the previous game name, overwriting and duplicating it.
* Handle subclassing of Events properly
Previously, you could only listen to the exact class
* Add relevant parent classes for the multiplayer events
* Refactor: use the old name as the main name in MultiplayerGameNameChanged event
* Add being able to stop listening to events in the EventBus
* Add tests for EventBus
* Refactor: Extract GameList into standalone file
* Refactor: safeUpdateIf to more generic throttle function
* Refactor: Extract multiplayer UI helper functions into separate file
* Refactor: Extract load/download multiplayer game into logic class from UI
* Make loading a multiplayer game automatically update the in-memory game in OnlineMultiplayer
* Refactor: Extract multiplayer settings into separate object
* Add multiplayer status display
* Fix error with multiplayer games not correctly being cleaned up after successful update
* Prevent loadLatestMultiplayerState() while next turn update is running
* Show "Working..." while waiting for next turn calculations instead of "Waiting for [civ]..."
* Fix race condition while updating online game state
* Refactor: change GameSaver from singleton to single instance pattern & move autosave logic info GameSaver
Singleton just doesn't make sense anymore when we have to `init(..)` with different arguments, then we should just make a normal class out of it
* Fix not correctly checking for missing external files dir
* Refactor: use more appropriate library method
* Add logging for external files dir
* Refactor: Move classes into their own files
* Handle 404 FileNotFound in UncivServer
* Refactor: Rename method
* Make GameSaver.saveGame throw the exception by default if it is not handled
* Add possibility to work with FileHandles in GameSaver
* Make OnlineMultiplayerGameSaver load the multiplayerServer setting each time it does something
This theoretically makes it unnecessary for the OnlineMultiplayerGameSaver to be re-instantiated each time it is used
* Refactor: Remove duplicated code
* Refactor: Extract NextTurnButton from WorldScreen
* Refactor: Remove WorldScreen-specific code from OptionsPopup
* Use kotlin coroutines everywhere instead of plain threads
This probably also cuts down on our raw thread usage, improving performance, since we now use a cached thread pool (in addition to coroutines being able to reuse threads anyway)
* Improve deep load from notification
* Refactor: Give music download coroutine the proper name
* Added rate limit handling to dropbox
+ some refactor to make the whole file one object
* Added error messages on rate limit reached
+ refactored some popup code to reduce repetition
* Fixed merge error
* Made variables private
* Fixed file upload not working
because of missing override flag for dropbox
* Stop multiplayer refresher if rate limit reached
* Fixed typo
* Various code changes/fixes
- ErrorResponse var name has to be `error` because that's how DropBox's json property is named
- Change FileStorageRateLimitReached exception to store the seconds remaining as its own property instead of in the message
- Use toIntOrNull to avoid setting defaults in two places
* Fixed missed exception message
Co-authored-by: Azzurite <azzurite@gmail.com>
* vpn/proxy issues when creating new mp game
replaced redundant ping with opening a connection to dropbox to fix the proxy issue
* updated error message to include dropbox
* check multiplayerServer url if the user is playing on it
* use `https://content.dropboxapi.com` instead of `https://www.dropbox.com`
* fixed proxy issues on android
if connected to proxy but no internet access it will freeze for a couple seconds (until it finishes the for loop) but it works
* forgot to add the imports
* removed android sdk network check to fix proxy issues
* check for internet now separate from check for multiplayerServer
removed frunctions from PlatformSpecificHelpers__
* added improvements made by touhidurrr
* removed unused imports and replaced setter with property access syntax
Co-authored-by: Md. Touhidur Rahman <46617994+touhidurrr@users.noreply.github.com>
* Fix Barbarian Camp Spawned notification not revealing the camp on the map in multiplayer
* Fix lastSeenImprovement not being cloned
* Use HashMapVector2 in BarbarianManager
* Fix value not having its class written out for proper deserializing
* Refactor: various code improvements
* Use both icon and roundIcon properties
* Studio-generated Android Icon
* Studio-generated Android Icon to fastlane
Co-authored-by: JackRainy <JackRainy@users.noreply.github.com>
* Fixed issue #6649 by checking for internet connection before starting the game if "online multiplayer" is selected
Many thanks to SomeTroglodyte for most of the code and for explanations
* check for internet before starting a mp game to avoid freeze
Fixed issue #6649 by checking for internet connection before starting the game if "online multiplayer" is selected.
Many thanks to SomeTroglodyte for most of the code and for explanations. A slight modification has been done to the code to catch an error caused by InetAddress
* Revert "Merge remote-tracking branch 'origin/master-noInternet' into master-noInternet"
This reverts commit bd6474b50d, reversing
changes made to f52ad60b51.