mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-13 19:39:34 +07:00
chore: Renamed OnlineMultiplayer -> Multiplayer. That's the default MP, local MP is called 'hotseat'.
This commit is contained in:
parent
cdf6d6169e
commit
25f2e03a66
@ -11,7 +11,7 @@ import com.unciv.logic.IsPartOfGameInfoSerialization
|
||||
import com.unciv.logic.UncivShowableException
|
||||
import com.unciv.logic.civilization.PlayerType
|
||||
import com.unciv.logic.files.UncivFiles
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayer
|
||||
import com.unciv.logic.multiplayer.Multiplayer
|
||||
import com.unciv.models.metadata.GameSettings
|
||||
import com.unciv.models.ruleset.RulesetCache
|
||||
import com.unciv.models.skins.SkinCache
|
||||
@ -67,7 +67,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci
|
||||
|
||||
lateinit var settings: GameSettings
|
||||
lateinit var musicController: MusicController
|
||||
lateinit var onlineMultiplayer: OnlineMultiplayer
|
||||
lateinit var onlineMultiplayer: Multiplayer
|
||||
lateinit var files: UncivFiles
|
||||
|
||||
var isTutorialTaskCollapsed = false
|
||||
@ -120,7 +120,7 @@ open class UncivGame(val isConsoleMode: Boolean = false) : Game(), PlatformSpeci
|
||||
musicController = MusicController() // early, but at this point does only copy volume from settings
|
||||
installAudioHooks()
|
||||
|
||||
onlineMultiplayer = OnlineMultiplayer()
|
||||
onlineMultiplayer = Multiplayer()
|
||||
|
||||
Concurrency.run {
|
||||
// Check if the server is available in case the feature set has changed
|
||||
|
@ -38,10 +38,10 @@ import kotlinx.serialization.json.Json
|
||||
* - https://github.com/hopfenspace/runciv
|
||||
*
|
||||
* A particular server may implement multiple interfaces simultaneously.
|
||||
* There's a server version check in the constructor of [OnlineMultiplayer]
|
||||
* There's a server version check in the constructor of [Multiplayer]
|
||||
* which handles API auto-detection. The precedence of various APIs is
|
||||
* determined by that function:
|
||||
* @see [OnlineMultiplayer.determineServerAPI]
|
||||
* @see [Multiplayer.determineServerAPI]
|
||||
*/
|
||||
enum class ApiVersion {
|
||||
APIv0, APIv1, APIv2;
|
||||
|
@ -10,7 +10,7 @@ import com.unciv.logic.event.EventBus
|
||||
import com.unciv.logic.multiplayer.storage.FileStorageRateLimitReached
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerAuthException
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerFileNotFoundException
|
||||
import com.unciv.logic.multiplayer.storage.OnlineMultiplayerServer
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerServer
|
||||
import com.unciv.models.metadata.GameSettings
|
||||
import com.unciv.ui.components.extensions.isLargerThan
|
||||
import com.unciv.utils.Concurrency
|
||||
@ -38,9 +38,9 @@ private val FILE_UPDATE_THROTTLE_PERIOD = Duration.ofSeconds(60)
|
||||
*
|
||||
* See the file of [com.unciv.logic.multiplayer.HasMultiplayerGameName] for all available [EventBus] events.
|
||||
*/
|
||||
class OnlineMultiplayer {
|
||||
class Multiplayer {
|
||||
/** Handles SERVER DATA only */
|
||||
val multiplayerServer = OnlineMultiplayerServer()
|
||||
val multiplayerServer = MultiplayerServer()
|
||||
/** Handles LOCAL FILES only */
|
||||
val multiplayerFiles = MultiplayerFiles()
|
||||
|
||||
@ -49,7 +49,7 @@ class OnlineMultiplayer {
|
||||
private val lastAllGamesRefresh: AtomicReference<Instant?> = AtomicReference()
|
||||
private val lastCurGameRefresh: AtomicReference<Instant?> = AtomicReference()
|
||||
|
||||
val games: Set<OnlineMultiplayerGame> get() = multiplayerFiles.savedGames.values.toSet()
|
||||
val games: Set<MultiplayerGame> get() = multiplayerFiles.savedGames.values.toSet()
|
||||
val multiplayerGameUpdater: Job
|
||||
|
||||
init {
|
||||
@ -79,7 +79,7 @@ class OnlineMultiplayer {
|
||||
}.launchIn(CoroutineScope(Dispatcher.DAEMON))
|
||||
}
|
||||
|
||||
private fun getCurrentGame(): OnlineMultiplayerGame? {
|
||||
private fun getCurrentGame(): MultiplayerGame? {
|
||||
val gameInfo = UncivGame.Current.gameInfo
|
||||
return if (gameInfo != null && gameInfo.gameParameters.isOnlineMultiplayer) {
|
||||
multiplayerFiles.getGameByGameId(gameInfo.gameId)
|
||||
@ -93,7 +93,7 @@ class OnlineMultiplayer {
|
||||
*
|
||||
* Fires: [MultiplayerGameUpdateStarted], [MultiplayerGameUpdated], [MultiplayerGameUpdateUnchanged], [MultiplayerGameUpdateFailed]
|
||||
*/
|
||||
fun requestUpdate(forceUpdate: Boolean = false, doNotUpdate: List<OnlineMultiplayerGame> = listOf()) {
|
||||
fun requestUpdate(forceUpdate: Boolean = false, doNotUpdate: List<MultiplayerGame> = listOf()) {
|
||||
Concurrency.run("Update all multiplayer games") {
|
||||
val fileThrottleInterval = if (forceUpdate) Duration.ZERO else FILE_UPDATE_THROTTLE_PERIOD
|
||||
// An exception only happens here if the files can't be listed, should basically never happen
|
||||
@ -146,7 +146,7 @@ class OnlineMultiplayer {
|
||||
* @throws MultiplayerAuthException if the authentication failed
|
||||
* @return false if it's not the user's turn and thus resigning did not happen
|
||||
*/
|
||||
suspend fun resign(game: OnlineMultiplayerGame): Boolean {
|
||||
suspend fun resign(game: MultiplayerGame): Boolean {
|
||||
val preview = game.preview ?: throw game.error!!
|
||||
// download to work with the latest game state
|
||||
val gameInfo = multiplayerServer.tryDownloadGame(preview.gameId)
|
||||
@ -181,7 +181,7 @@ class OnlineMultiplayer {
|
||||
* @throws FileStorageRateLimitReached if the file storage backend can't handle any additional actions for a time
|
||||
* @throws MultiplayerFileNotFoundException if the file can't be found
|
||||
*/
|
||||
suspend fun loadGame(game: OnlineMultiplayerGame) {
|
||||
suspend fun loadGame(game: MultiplayerGame) {
|
||||
val preview = game.preview ?: throw game.error!!
|
||||
loadGame(preview.gameId)
|
||||
}
|
@ -12,7 +12,7 @@ import java.util.*
|
||||
/** Files that are stored locally */
|
||||
class MultiplayerFiles {
|
||||
internal val files = UncivGame.Current.files
|
||||
internal val savedGames: MutableMap<FileHandle, OnlineMultiplayerGame> = Collections.synchronizedMap(mutableMapOf())
|
||||
internal val savedGames: MutableMap<FileHandle, MultiplayerGame> = Collections.synchronizedMap(mutableMapOf())
|
||||
|
||||
internal fun updateSavesFromFiles() {
|
||||
val saves = files.getMultiplayerSaves()
|
||||
@ -31,8 +31,8 @@ class MultiplayerFiles {
|
||||
/**
|
||||
* Deletes the game from disk, does not delete it remotely.
|
||||
*/
|
||||
fun deleteGame(onlineMultiplayerGame: OnlineMultiplayerGame) {
|
||||
deleteGame(onlineMultiplayerGame.fileHandle)
|
||||
fun deleteGame(multiplayerGame: MultiplayerGame) {
|
||||
deleteGame(multiplayerGame.fileHandle)
|
||||
}
|
||||
|
||||
private fun deleteGame(fileHandle: FileHandle) {
|
||||
@ -56,15 +56,15 @@ class MultiplayerFiles {
|
||||
|
||||
private fun addGame(fileHandle: FileHandle, preview: GameInfoPreview? = null) {
|
||||
debug("Adding game %s", fileHandle.name())
|
||||
val game = OnlineMultiplayerGame(fileHandle, preview, if (preview != null) Instant.now() else null)
|
||||
val game = MultiplayerGame(fileHandle, preview, if (preview != null) Instant.now() else null)
|
||||
savedGames[fileHandle] = game
|
||||
}
|
||||
|
||||
fun getGameByName(name: String): OnlineMultiplayerGame? {
|
||||
fun getGameByName(name: String): MultiplayerGame? {
|
||||
return savedGames.values.firstOrNull { it.name == name }
|
||||
}
|
||||
|
||||
fun getGameByGameId(gameId: String): OnlineMultiplayerGame? {
|
||||
fun getGameByGameId(gameId: String): MultiplayerGame? {
|
||||
return savedGames.values.firstOrNull { it.preview?.gameId == gameId }
|
||||
}
|
||||
|
||||
@ -72,14 +72,14 @@ class MultiplayerFiles {
|
||||
/**
|
||||
* Fires [MultiplayerGameNameChanged]
|
||||
*/
|
||||
fun changeGameName(game: OnlineMultiplayerGame, newName: String, onException: (Exception?)->Unit) {
|
||||
fun changeGameName(game: MultiplayerGame, newName: String, onException: (Exception?)->Unit) {
|
||||
debug("Changing name of game %s to", game.name, newName)
|
||||
val oldPreview = game.preview ?: throw game.error!!
|
||||
val oldLastUpdate = game.getLastUpdate()
|
||||
val oldName = game.name
|
||||
|
||||
val newFileHandle = files.saveGame(oldPreview, newName, onException)
|
||||
val newGame = OnlineMultiplayerGame(newFileHandle, oldPreview, oldLastUpdate)
|
||||
val newGame = MultiplayerGame(newFileHandle, oldPreview, oldLastUpdate)
|
||||
savedGames[newFileHandle] = newGame
|
||||
|
||||
savedGames.remove(game.fileHandle)
|
||||
|
@ -8,7 +8,7 @@ import com.unciv.logic.multiplayer.GameUpdateResult.Type.CHANGED
|
||||
import com.unciv.logic.multiplayer.GameUpdateResult.Type.FAILURE
|
||||
import com.unciv.logic.multiplayer.GameUpdateResult.Type.UNCHANGED
|
||||
import com.unciv.logic.multiplayer.storage.FileStorageRateLimitReached
|
||||
import com.unciv.logic.multiplayer.storage.OnlineMultiplayerServer
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerServer
|
||||
import com.unciv.ui.audio.SoundPlayer
|
||||
import com.unciv.ui.components.extensions.isLargerThan
|
||||
import com.unciv.utils.debug
|
||||
@ -25,7 +25,7 @@ private const val DROPBOX_THROTTLE_PERIOD = 8L
|
||||
/** @see getUpdateThrottleInterval */
|
||||
private const val CUSTOM_SERVER_THROTTLE_PERIOD = 1L
|
||||
|
||||
class OnlineMultiplayerGame(
|
||||
class MultiplayerGame(
|
||||
val fileHandle: FileHandle,
|
||||
var preview: GameInfoPreview? = null,
|
||||
lastOnlineUpdate: Instant? = null
|
||||
@ -107,7 +107,7 @@ class OnlineMultiplayerGame(
|
||||
private suspend fun update(): GameUpdateResult {
|
||||
val curPreview = if (preview != null) preview!! else loadPreviewFromFile()
|
||||
val serverIdentifier = curPreview.gameParameters.multiplayerServerUrl
|
||||
val newPreview = OnlineMultiplayerServer(serverIdentifier).tryDownloadGamePreview(curPreview.gameId)
|
||||
val newPreview = MultiplayerServer(serverIdentifier).tryDownloadGamePreview(curPreview.gameId)
|
||||
if (newPreview.turns == curPreview.turns && newPreview.currentPlayer == curPreview.currentPlayer) return GameUpdateResult(UNCHANGED, newPreview)
|
||||
UncivGame.Current.files.saveGame(newPreview, fileHandle)
|
||||
preview = newPreview
|
||||
@ -138,7 +138,7 @@ class OnlineMultiplayerGame(
|
||||
SoundPlayer.play(sound)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean = other is OnlineMultiplayerGame && fileHandle == other.fileHandle
|
||||
override fun equals(other: Any?): Boolean = other is MultiplayerGame && fileHandle == other.fileHandle
|
||||
override fun hashCode(): Int = fileHandle.hashCode()
|
||||
}
|
||||
|
||||
@ -157,5 +157,5 @@ private class GameUpdateResult private constructor(
|
||||
* How often games can be checked for remote updates. More attempted checks within this time period will do nothing.
|
||||
*/
|
||||
private fun getUpdateThrottleInterval(): Duration {
|
||||
return Duration.ofSeconds(if (OnlineMultiplayer.usesCustomServer()) CUSTOM_SERVER_THROTTLE_PERIOD else DROPBOX_THROTTLE_PERIOD)
|
||||
return Duration.ofSeconds(if (Multiplayer.usesCustomServer()) CUSTOM_SERVER_THROTTLE_PERIOD else DROPBOX_THROTTLE_PERIOD)
|
||||
}
|
@ -19,7 +19,7 @@ import com.unciv.logic.multiplayer.ServerFeatureSet
|
||||
* @see UncivGame.settings.multiplayer.server
|
||||
*/
|
||||
@Suppress("RedundantSuspendModifier") // Methods can take a long time, so force users to use them in a coroutine to not get ANRs on Android
|
||||
class OnlineMultiplayerServer(
|
||||
class MultiplayerServer(
|
||||
val fileStorageIdentifier: String? = null,
|
||||
private var authenticationHeader: Map<String, String>? = null
|
||||
) {
|
||||
@ -34,7 +34,7 @@ class OnlineMultiplayerServer(
|
||||
|
||||
return if (getServerUrl() == Constants.dropboxMultiplayerServer) DropBox
|
||||
else UncivServerFileStorage.apply {
|
||||
serverUrl = this@OnlineMultiplayerServer.getServerUrl()
|
||||
serverUrl = this@MultiplayerServer.getServerUrl()
|
||||
this.authHeader = authHeader
|
||||
}
|
||||
}
|
@ -6,7 +6,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextField
|
||||
import com.unciv.UncivGame
|
||||
import com.unciv.logic.files.IMediaFinder
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayer
|
||||
import com.unciv.logic.multiplayer.Multiplayer
|
||||
import com.unciv.logic.multiplayer.storage.FileStorageRateLimitReached
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerAuthException
|
||||
import com.unciv.models.metadata.GameSettings
|
||||
@ -106,7 +106,7 @@ private fun addMultiplayerServerOptions(
|
||||
|
||||
val connectionToServerButton = "Check connection to server".toTextButton()
|
||||
|
||||
val textToShowForOnlineMultiplayerAddress = if (OnlineMultiplayer.usesCustomServer()) {
|
||||
val textToShowForOnlineMultiplayerAddress = if (Multiplayer.usesCustomServer()) {
|
||||
settings.multiplayer.server
|
||||
} else {
|
||||
"https://"
|
||||
@ -124,7 +124,7 @@ private fun addMultiplayerServerOptions(
|
||||
// we can't trim on 'fixTextFieldUrlOnType' for reasons
|
||||
settings.multiplayer.server = multiplayerServerTextField.text.trimEnd('/')
|
||||
|
||||
val isCustomServer = OnlineMultiplayer.usesCustomServer()
|
||||
val isCustomServer = Multiplayer.usesCustomServer()
|
||||
connectionToServerButton.isEnabled = isCustomServer
|
||||
|
||||
for (refreshSelect in toUpdate) refreshSelect.update(isCustomServer)
|
||||
@ -326,7 +326,7 @@ private class RefreshSelect(
|
||||
private fun getInitialOptions(extraCustomServerOptions: List<SelectItem<Duration>>, dropboxOptions: List<SelectItem<Duration>>): Iterable<SelectItem<Duration>> {
|
||||
val customServerItems = (extraCustomServerOptions + dropboxOptions).toGdxArray()
|
||||
val dropboxItems = dropboxOptions.toGdxArray()
|
||||
return if (OnlineMultiplayer.usesCustomServer()) customServerItems else dropboxItems
|
||||
return if (Multiplayer.usesCustomServer()) customServerItems else dropboxItems
|
||||
}
|
||||
|
||||
private fun fixTextFieldUrlOnType(textField: TextField) {
|
||||
|
@ -3,8 +3,8 @@ package com.unciv.ui.screens.multiplayerscreens
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.unciv.Constants
|
||||
import com.unciv.UncivGame
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayer
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayerGame
|
||||
import com.unciv.logic.multiplayer.Multiplayer
|
||||
import com.unciv.logic.multiplayer.MultiplayerGame
|
||||
import com.unciv.models.translations.tr
|
||||
import com.unciv.ui.components.extensions.formatShort
|
||||
import com.unciv.ui.components.extensions.toCheckBox
|
||||
@ -18,7 +18,7 @@ import java.time.Instant
|
||||
|
||||
object MultiplayerHelpers {
|
||||
|
||||
fun loadMultiplayerGame(screen: BaseScreen, selectedGame: OnlineMultiplayerGame) {
|
||||
fun loadMultiplayerGame(screen: BaseScreen, selectedGame: MultiplayerGame) {
|
||||
val loadingGamePopup = Popup(screen)
|
||||
loadingGamePopup.addGoodSizedLabel("Loading latest game state...")
|
||||
loadingGamePopup.open()
|
||||
@ -35,16 +35,16 @@ object MultiplayerHelpers {
|
||||
}
|
||||
}
|
||||
|
||||
fun buildDescriptionText(onlineMultiplayerGame: OnlineMultiplayerGame): StringBuilder {
|
||||
fun buildDescriptionText(multiplayerGame: MultiplayerGame): StringBuilder {
|
||||
val descriptionText = StringBuilder()
|
||||
val ex = onlineMultiplayerGame.error
|
||||
val ex = multiplayerGame.error
|
||||
if (ex != null) {
|
||||
val (message) = LoadGameScreen.getLoadExceptionMessage(ex, "Error while refreshing:")
|
||||
descriptionText.appendLine(message)
|
||||
}
|
||||
val lastUpdate = onlineMultiplayerGame.getLastUpdate()
|
||||
val lastUpdate = multiplayerGame.getLastUpdate()
|
||||
descriptionText.appendLine("Last refresh: [${Duration.between(lastUpdate, Instant.now()).formatShort()}] ago".tr())
|
||||
val preview = onlineMultiplayerGame.preview
|
||||
val preview = multiplayerGame.preview
|
||||
if (preview?.currentPlayer != null) {
|
||||
val currentTurnStartTime = Instant.ofEpochMilli(preview.currentTurnStartTime)
|
||||
descriptionText.appendLine("Current Turn: [${preview.currentPlayer}] since [${Duration.between(currentTurnStartTime, Instant.now()).formatShort()}] ago".tr())
|
||||
@ -53,7 +53,7 @@ object MultiplayerHelpers {
|
||||
}
|
||||
|
||||
fun showDropboxWarning(screen: BaseScreen) {
|
||||
if (!OnlineMultiplayer.usesDropbox() || UncivGame.Current.settings.multiplayer.hideDropboxWarning) return
|
||||
if (!Multiplayer.usesDropbox() || UncivGame.Current.settings.multiplayer.hideDropboxWarning) return
|
||||
|
||||
val dropboxWarning = Popup(screen)
|
||||
dropboxWarning.addGoodSizedLabel(
|
||||
|
@ -4,7 +4,7 @@ import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.unciv.Constants
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayerGame
|
||||
import com.unciv.logic.multiplayer.MultiplayerGame
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerAuthException
|
||||
import com.unciv.models.translations.tr
|
||||
import com.unciv.ui.components.widgets.UncivTextField
|
||||
@ -27,7 +27,7 @@ import com.unciv.utils.launchOnGLThread
|
||||
import com.unciv.ui.components.widgets.AutoScrollPane as ScrollPane
|
||||
|
||||
class MultiplayerScreen : PickerScreen() {
|
||||
private var selectedGame: OnlineMultiplayerGame? = null
|
||||
private var selectedGame: MultiplayerGame? = null
|
||||
|
||||
private val copyGameIdButton = createCopyGameIdButton()
|
||||
private val resignButton = createResignButton()
|
||||
@ -127,7 +127,7 @@ class MultiplayerScreen : PickerScreen() {
|
||||
* Helper function to decrease indentation
|
||||
* Turns the current playerCiv into an AI civ and uploads the game afterwards.
|
||||
*/
|
||||
private fun resign(onlineMultiplayerGame: OnlineMultiplayerGame) {
|
||||
private fun resign(multiplayerGame: MultiplayerGame) {
|
||||
//Create a popup
|
||||
val popup = Popup(this)
|
||||
popup.addGoodSizedLabel(Constants.working).row()
|
||||
@ -135,7 +135,7 @@ class MultiplayerScreen : PickerScreen() {
|
||||
|
||||
Concurrency.runOnNonDaemonThreadPool("Resign") {
|
||||
try {
|
||||
val resignSuccess = game.onlineMultiplayer.resign(onlineMultiplayerGame)
|
||||
val resignSuccess = game.onlineMultiplayer.resign(multiplayerGame)
|
||||
|
||||
launchOnGLThread {
|
||||
if (resignSuccess) {
|
||||
@ -151,7 +151,7 @@ class MultiplayerScreen : PickerScreen() {
|
||||
if (ex is MultiplayerAuthException) {
|
||||
launchOnGLThread {
|
||||
AuthPopup(this@MultiplayerScreen) { success ->
|
||||
if (success) resign(onlineMultiplayerGame)
|
||||
if (success) resign(multiplayerGame)
|
||||
}.open(true)
|
||||
}
|
||||
return@runOnNonDaemonThreadPool
|
||||
|
@ -12,7 +12,7 @@ import com.unciv.logic.UncivShowableException
|
||||
import com.unciv.logic.civilization.PlayerType
|
||||
import com.unciv.logic.files.MapSaver
|
||||
import com.unciv.logic.map.MapGeneratedMainType
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayer
|
||||
import com.unciv.logic.multiplayer.Multiplayer
|
||||
import com.unciv.logic.multiplayer.storage.FileStorageRateLimitReached
|
||||
import com.unciv.models.metadata.BaseRuleset
|
||||
import com.unciv.models.metadata.GameSetupInfo
|
||||
@ -115,7 +115,7 @@ class NewGameScreen(
|
||||
if (gameSetupInfo.gameParameters.isOnlineMultiplayer) {
|
||||
if (!checkConnectionToMultiplayerServer()) {
|
||||
val noInternetConnectionPopup = Popup(this)
|
||||
val label = if (OnlineMultiplayer.usesCustomServer()) "Couldn't connect to Multiplayer Server!" else "Couldn't connect to Dropbox!"
|
||||
val label = if (Multiplayer.usesCustomServer()) "Couldn't connect to Multiplayer Server!" else "Couldn't connect to Dropbox!"
|
||||
noInternetConnectionPopup.addGoodSizedLabel(label.tr()).row()
|
||||
noInternetConnectionPopup.addCloseButton()
|
||||
noInternetConnectionPopup.open()
|
||||
@ -279,7 +279,7 @@ class NewGameScreen(
|
||||
private fun checkConnectionToMultiplayerServer(): Boolean {
|
||||
return try {
|
||||
val multiplayerServer = UncivGame.Current.settings.multiplayer.server
|
||||
val u = URL(if (OnlineMultiplayer.usesDropbox()) "https://content.dropboxapi.com" else multiplayerServer)
|
||||
val u = URL(if (Multiplayer.usesDropbox()) "https://content.dropboxapi.com" else multiplayerServer)
|
||||
val con = u.openConnection()
|
||||
con.connectTimeout = 3000
|
||||
con.connect()
|
||||
|
@ -15,7 +15,7 @@ import com.unciv.logic.multiplayer.MultiplayerGameNameChanged
|
||||
import com.unciv.logic.multiplayer.MultiplayerGameUpdateEnded
|
||||
import com.unciv.logic.multiplayer.MultiplayerGameUpdateStarted
|
||||
import com.unciv.logic.multiplayer.MultiplayerGameUpdated
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayerGame
|
||||
import com.unciv.logic.multiplayer.MultiplayerGame
|
||||
import com.unciv.logic.multiplayer.isUsersTurn
|
||||
import com.unciv.models.translations.tr
|
||||
import com.unciv.ui.components.extensions.setSize
|
||||
@ -30,7 +30,7 @@ import kotlinx.coroutines.delay
|
||||
|
||||
class MultiplayerStatusButton(
|
||||
screen: BaseScreen,
|
||||
curGame: OnlineMultiplayerGame?
|
||||
curGame: MultiplayerGame?
|
||||
) : Button(BaseScreen.skin), Disposable {
|
||||
private var curGameName = curGame?.name
|
||||
private val loadingImage = LoadingImage(style = LoadingImage.Style(
|
||||
@ -87,7 +87,7 @@ class MultiplayerStatusButton(
|
||||
}
|
||||
|
||||
/** @return set of gameIds */
|
||||
private fun findGamesToBeNotifiedAbout(games: Iterable<OnlineMultiplayerGame>): MutableSet<String> {
|
||||
private fun findGamesToBeNotifiedAbout(games: Iterable<MultiplayerGame>): MutableSet<String> {
|
||||
return games
|
||||
.filter { it.name != curGameName }
|
||||
.filter { it.preview?.isUsersTurn() == true }
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.unciv.ui.screens.worldscreen.status
|
||||
|
||||
import com.unciv.UncivGame
|
||||
import com.unciv.logic.multiplayer.OnlineMultiplayerGame
|
||||
import com.unciv.logic.multiplayer.MultiplayerGame
|
||||
import com.unciv.models.translations.tr
|
||||
import com.unciv.ui.screens.multiplayerscreens.GameList
|
||||
import com.unciv.ui.screens.multiplayerscreens.MultiplayerHelpers
|
||||
@ -15,7 +15,7 @@ class MultiplayerStatusPopup(
|
||||
) : Popup(screen) {
|
||||
|
||||
val pickerPane = PickerPane()
|
||||
var selectedGame: OnlineMultiplayerGame? = null
|
||||
var selectedGame: MultiplayerGame? = null
|
||||
|
||||
init {
|
||||
val pickerCell = add()
|
||||
|
Loading…
Reference in New Issue
Block a user