mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-28 21:58:54 +07:00
Fixed Multiplayer Turn Notifier periodically failing with error notification. (#2054)
This commit is contained in:
@ -3,6 +3,7 @@ package com.unciv.logic
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.files.FileHandle
|
||||
import com.badlogic.gdx.utils.Json
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.models.metadata.GameSettings
|
||||
import com.unciv.ui.utils.ImageGetter
|
||||
import java.io.File
|
||||
@ -95,5 +96,15 @@ class GameSaver {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current turn's player from GameInfo JSON-String for multiplayer.
|
||||
* Does not initialize transitive GameInfo data.
|
||||
* It is therefore stateless and save to call for Multiplayer Turn Notifier, unlike gameInfoFromString().
|
||||
*/
|
||||
fun currentTurnCivFromString(gameData: String): CivilizationInfo {
|
||||
val game = json().fromJson(GameInfo::class.java, gameData)
|
||||
return game.getCivilization(game.currentPlayer)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package com.unciv.ui.worldscreen.mainmenu
|
||||
|
||||
import com.unciv.logic.GameInfo
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.ui.saves.Gzip
|
||||
import java.io.BufferedReader
|
||||
import java.io.DataOutputStream
|
||||
@ -9,7 +10,7 @@ import java.io.InputStream
|
||||
import java.io.InputStreamReader
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.URL
|
||||
import java.nio.charset.StandardCharsets
|
||||
import java.nio.charset.Charset
|
||||
|
||||
class DropBox {
|
||||
|
||||
@ -27,7 +28,8 @@ class DropBox {
|
||||
|
||||
try {
|
||||
if (data != "") {
|
||||
val postData: ByteArray = data.toByteArray(StandardCharsets.UTF_8)
|
||||
// StandardCharsets.UTF_8 requires API 19
|
||||
val postData: ByteArray = data.toByteArray(Charset.forName("UTF-8"))
|
||||
val outputStream = DataOutputStream(outputStream)
|
||||
outputStream.write(postData)
|
||||
outputStream.flush()
|
||||
@ -103,4 +105,14 @@ class OnlineMultiplayer {
|
||||
val zippedGameInfo = DropBox().downloadFileAsString(getGameLocation(gameId))
|
||||
return GameSaver().gameInfoFromString(Gzip.unzip(zippedGameInfo))
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current turn's player.
|
||||
* Does not initialize transitive GameInfo data.
|
||||
* It is therefore stateless and save to call for Multiplayer Turn Notifier, unlike tryDownloadGame().
|
||||
*/
|
||||
fun tryDownloadCurrentTurnCiv(gameId: String): CivilizationInfo {
|
||||
val zippedGameInfo = DropBox().downloadFileAsString(getGameLocation(gameId))
|
||||
return GameSaver().currentTurnCivFromString(Gzip.unzip(zippedGameInfo))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user