mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-14 01:39:40 +07:00
Game now saves save files in external storage on Android when possible.
May the lord have mercy on our souls.
This commit is contained in:
@ -14,16 +14,26 @@ object GameSaver {
|
||||
private const val multiplayerFilesFolder = "MultiplayerGames"
|
||||
private const val settingsFileName = "GameSettings.json"
|
||||
|
||||
/** When set, we know we're on Android and can save to the app's personal external file directory
|
||||
* See https://developer.android.com/training/data-storage/app-specific#external-access-files */
|
||||
var externalFilesDirForAndroid = ""
|
||||
|
||||
fun json() = Json().apply { setIgnoreDeprecated(true); ignoreUnknownFields = true } // Json() is NOT THREAD SAFE so we need to create a new one for each function
|
||||
|
||||
fun getSubfolder(multiplayer: Boolean=false) = if(multiplayer) multiplayerFilesFolder else saveFilesFolder
|
||||
|
||||
fun getSave(GameName: String, multiplayer: Boolean = false): FileHandle {
|
||||
return Gdx.files.local("${getSubfolder(multiplayer)}/$GameName")
|
||||
val localfile = Gdx.files.local("${getSubfolder(multiplayer)}/$GameName")
|
||||
if(externalFilesDirForAndroid=="" || !Gdx.files.isExternalStorageAvailable) return localfile
|
||||
val externalFile = Gdx.files.absolute(externalFilesDirForAndroid+"/${getSubfolder(multiplayer)}/$GameName")
|
||||
if(localfile.exists() && !externalFile.exists()) return localfile
|
||||
return externalFile
|
||||
}
|
||||
|
||||
fun getSaves(multiplayer: Boolean = false): List<String> {
|
||||
return Gdx.files.local(getSubfolder(multiplayer)).list().map { it.name() }
|
||||
val localSaves = Gdx.files.local(getSubfolder(multiplayer)).list().map { it.name() }
|
||||
if(externalFilesDirForAndroid=="" || !Gdx.files.isExternalStorageAvailable) return localSaves
|
||||
return localSaves + Gdx.files.absolute(externalFilesDirForAndroid+"/${getSubfolder(multiplayer)}").list().map { it.name() }
|
||||
}
|
||||
|
||||
fun saveGame(game: GameInfo, GameName: String, multiplayer: Boolean = false) {
|
||||
|
Reference in New Issue
Block a user