Commit Graph

85 Commits

Author SHA1 Message Date
564f7b476c small fixes (#7181)
* fixes

* relaced translations with _

* better displayCutout
2022-06-16 18:56:18 +03:00
0585194eaf Fix cutout options crash (#7169) 2022-06-15 15:59:58 +02:00
fc926420e8 added cutout support (#7044)
* 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
2022-06-14 20:34:30 +03:00
9bd8750739 Refactor: Consistent & correct usage of coroutines (#7077)
* 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>
2022-06-12 00:13:49 +03:00
9008d242a3 Refactor: Change UncivGame.worldScreen and UncivGame.gameInfo to be of nullable type (#7114)
* 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
2022-06-11 22:14:44 +03:00
1abc65163d Fix multiplayer sometimes duplicating games (#6999)
* Fix multiplayer sometimes duplicating games

* Fix test compilation
2022-06-01 22:24:44 +03:00
e4e6b842cb Refactor: Remove superfluous postCrashHandlingRunnable (#6974) 2022-05-28 00:11:14 +02:00
a942c961b5 Fix multiplayer turn check worker writing game data to wrong locations (#6976)
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.
2022-05-27 16:34:24 +02:00
3a03799074 Refactor: Extract all cross-platform code from CustomSaveLocationHelpers into core module (#6962)
* Also fixes the GameInfo.customSaveLocation to work for Android
2022-05-27 15:53:18 +02:00
214fae6f59 Add simple logging solution (#6952)
* Add simple logging solution

* Fix Android compilation

For some reason I stashed this and didn't unstash.

* Add better logging explanation
2022-05-27 13:45:13 +03:00
ea03b97639 #6914 Multiplayer Status Display (#6916)
* 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
2022-05-25 22:22:58 +02:00
b59b890ced Fix multiplayer turn check worker exception (#6915) 2022-05-23 10:48:08 +03:00
fc9668f2d0 Refactor: change GameSaver from singleton to single instance pattern & move autosave logic into GameSaver (#6846)
* 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
2022-05-22 19:51:35 +03:00
f34b97a421 Fix multiplayer turn checker potentially stopping turn checks for everyone that plays that game if a file was not found remotely (#6901) 2022-05-22 00:13:48 -07:00
07593d7034 Fix turn check worker exception (#6867)
AndroidFileHandle uses Gdx.files internally
2022-05-19 13:43:28 +03:00
3d6a01d633 Build warnings cleanup (#6827) 2022-05-19 02:12:18 +02:00
5353f3337c Fix Gdx.files being garbage collected in MultiplayerTurnCheckWorker (#6817)
* Add logging to MultiplayerTurnCheckWorker

* Fix NullPointerException in turn check worker: Gdx.files is null
2022-05-18 07:35:00 +03:00
df9b62ff6f Fix coroutines not being added to desktop:dist (#6822)
* Use kotlin coroutines instead of raw threads (+ refactorings)

Equal to f8e0f572

* Fix coroutine class files not being added to desktop:dist
2022-05-17 08:37:12 -07:00
7ef2bbc56c Revert "Use kotlin coroutines instead of raw threads (+ refactorings) (#6801)"
This reverts commit f8e0f572
2022-05-15 19:20:23 +03:00
f8e0f572e4 Use kotlin coroutines instead of raw threads (+ refactorings) (#6801)
* 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
2022-05-15 00:52:45 +03:00
09b4e82589 Rate limit handling for Dropbox (#6416)
* 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>
2022-05-13 09:16:52 +03:00
dc8dadfcab Fixed proxy issues when starting a new multiplayer game (#6757)
* 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>
2022-05-11 16:58:20 +03:00
eb5e8ae226 Switchable gzipping of saved games (#6735)
* Switchable gzipping of saved games

* Switchable gzipping of saved games - consensus says default off
2022-05-11 16:23:11 +03:00
3ea9c6503b Font choice rework (#6670)
* Font choice rework

* Font choice rework - naming

* Font choice rework - fix default font selection
2022-05-08 21:22:23 +03:00
86d5011da1 In-depth serialization improvement, fixes Barbarian Camps revealed by Honor not showing immediately in multiplayer
* 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
2022-05-08 12:35:41 +02:00
345114ed93 Unciv Adaptive Android Icon (#6672)
* 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>
2022-05-03 07:55:55 +03:00
898b1ca056 check for internet before starting a mp game to avoid freeze (#6679)
* 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.
2022-05-02 23:41:08 +02:00
286e800b96 Resolved #6492 - package reorg 2022-04-08 13:01:37 +03:00
a2a8c0aab5 Fixed turn checker crashes (#6508)
* Fixed turn checker failure

when UncivGame.current goes out of scope

* Cleanup

* Less changed lines

* Added documentation
2022-04-08 12:26:29 +03:00
360d739b97 Resolved ANRs when opening Options menu
Was due to system fonts taking a long time to load
2022-04-06 22:57:27 +03:00
90a172ab02 Remove re-orientation for OptionsPopup (#6466) 2022-03-31 23:03:57 +03:00
c1737b6183 Custom desktop font (#6377)
* Custom desktop font

* Add `getDesktopAllFonts` to setting custom desktop font.

* Custom font.
`desktopFontFamily` change to `fontFamily`.
Add GameSettings.getSettingsForPlatformLaunchers().

* Add `Custom font` setting UI.

* Add `Custom font` on Android.

* `Default Font` use translations.

* format

* remove open fun.

Co-authored-by: Yair Morgenstern <yairm210@hotmail.com>
2022-03-21 21:12:16 +02:00
cea63eb114 Multiplayer code cleanup (#6330)
* Fixed reviewed comments of PR 6273

* Cleanup of Dropbox.kt

- moved Dropbox.kt from ui\worldscreen\mainmenu to logic\multiplayer
- moved ServerMutex and OnlineMultiplayer to own files
- changed DropBoxFileConflictException to FileStorageConflictException to match FileStorage scheme
- merged FolderListEntry with DropboxMetaData as they were basicly the same
- introduced IFileMetaData to match FileStorage scheme and modified DropboxMetaData to use it
- removed some unused imports
2022-03-13 22:44:02 +02:00
0e26ea2cc8 Added deep link to multiplayer games (#6273) 2022-03-05 20:00:56 +02:00
b813e0b38a Fixed assumption that the current game is in the list of games gathered from preview files (#5981) 2022-01-16 18:42:45 +02:00
24dfad696c New crash handler screen Part 2: Threads, runnables, more informative reports. (#5810)
* Add crashHandlingThread.

* Replace all uses of `thread` with `crashHandlingThread`.

* Add `postCrashHandlingRunnable`.

* Replace all uses of `Gdx.app.postRunnable` with `postCrashHandlingRunnable`.

* Remove CrashController and CrashReport; Strip down CrashReportSender to CrashReportSysInfo; Fold their functionality into CrashScreen.

* Typo in comments, rename `SafeCrashStage` to `CrashHandlingStage`.

* Tweak docs.

* Tweak docs, comments, text. Undo an accidentally recursive Replace All change.

* Remove replaced translations.

* More readable indentation handling in report template.
2022-01-09 11:33:45 +02:00
8d2b282cef Revert "Remove periodic saving again (#5880)" (#5883)
This reverts commit 2404749bba.
2022-01-06 23:00:56 +01:00
2404749bba Remove periodic saving again (#5880) 2021-12-31 11:08:19 +02:00
28d3c12142 Improvements to TurnChecker data usage (#5789)
* Added necessary utils

Added the FileNotFoundException which is also part of #5593

* Added preview download to MultiplayerScreen

* Added preview download to TurnChecker

* Fixed uncomplete commit

* Removed debug print in MultiplayerScreen
2021-12-13 21:14:30 +02:00
57c033ff34 More error handling for out of memory errors 2021-11-12 00:19:52 +02:00
3220206bce Added game name to turn notification (#5350) 2021-09-29 17:38:27 +03:00
2474c6a635 Re-upgraded Kotlin to 1.5.30, and together with it - minSdk and source&target compatibility to 1.8.
We've finally advanced to 2015 (when 1.7 was deprecated)
2021-09-05 19:36:35 +03:00
3e3bda42e5 Follow screen rotation even to Portrait on Android with Opt-in (#3936) 2021-05-19 23:27:23 +03:00
4db97dcd1a Added construction production info to city screen 2021-04-29 14:02:27 +03:00
55ef131fb2 3.14.3 2021-04-21 22:12:46 +03:00
3efbbc716e Fixed Multiplayer bugs (#3781)
* Removed save feature from TurnChecker

* Hopefully fixed not correctly updating multiplayer games?

* Fixed "refresh list" not updating the savegame correctly

* Fixed game update when upload fails

* Revert "Fixed game update when upload fails"

This reverts commit cc9f1cf589.
2021-04-13 22:57:39 +03:00
ed8d642036 3.13.3-patch1 2021-02-27 23:47:08 +02:00
0ef44fc4da Changed deprecated StringBuilder.appendln with .appendLine 2021-02-22 21:13:16 +02:00
bcab751f7c Linting 2021-01-28 16:21:25 +02:00
3037ce4141 multiple game support for TurnChecker (#3540)
* TurnChecker now checks every multiplayer game

Not just the currently open game

* Adding game saving to turn checker

so multiplayerScreen stays up to date

* remove unused imports

* removing unused functions
2021-01-24 16:12:44 +02:00