mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-19 20:28:56 +07:00
EventHub removal - 'add multiplayer game' no longer works through EventHub
This commit is contained in:
@ -18,7 +18,7 @@ import com.unciv.utils.Concurrency
|
|||||||
import com.unciv.utils.launchOnGLThread
|
import com.unciv.utils.launchOnGLThread
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
class AddMultiplayerGameScreen : PickerScreen() {
|
class AddMultiplayerGameScreen(multiplayerScreen: MultiplayerScreen) : PickerScreen() {
|
||||||
init {
|
init {
|
||||||
val gameNameTextField = UncivTextField.create("Game name")
|
val gameNameTextField = UncivTextField.create("Game name")
|
||||||
val gameIDTextField = UncivTextField.create("GameID")
|
val gameIDTextField = UncivTextField.create("GameID")
|
||||||
@ -63,6 +63,7 @@ class AddMultiplayerGameScreen : PickerScreen() {
|
|||||||
launchOnGLThread {
|
launchOnGLThread {
|
||||||
popup.close()
|
popup.close()
|
||||||
game.popScreen()
|
game.popScreen()
|
||||||
|
multiplayerScreen.gameList.update()
|
||||||
}
|
}
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
val (message) = LoadGameScreen.getLoadExceptionMessage(ex)
|
val (message) = LoadGameScreen.getLoadExceptionMessage(ex)
|
||||||
|
@ -10,7 +10,6 @@ import com.unciv.UncivGame
|
|||||||
import com.unciv.logic.GameInfoPreview
|
import com.unciv.logic.GameInfoPreview
|
||||||
import com.unciv.logic.event.EventBus
|
import com.unciv.logic.event.EventBus
|
||||||
import com.unciv.logic.multiplayer.HasMultiplayerGameName
|
import com.unciv.logic.multiplayer.HasMultiplayerGameName
|
||||||
import com.unciv.logic.multiplayer.MultiplayerGameAdded
|
|
||||||
import com.unciv.logic.multiplayer.MultiplayerGameDeleted
|
import com.unciv.logic.multiplayer.MultiplayerGameDeleted
|
||||||
import com.unciv.logic.multiplayer.MultiplayerGameNameChanged
|
import com.unciv.logic.multiplayer.MultiplayerGameNameChanged
|
||||||
import com.unciv.logic.multiplayer.MultiplayerGameUpdateEnded
|
import com.unciv.logic.multiplayer.MultiplayerGameUpdateEnded
|
||||||
@ -25,7 +24,7 @@ import com.unciv.ui.components.input.onClick
|
|||||||
import com.unciv.ui.components.extensions.setSize
|
import com.unciv.ui.components.extensions.setSize
|
||||||
|
|
||||||
class GameList(
|
class GameList(
|
||||||
onSelected: (String) -> Unit
|
val onSelected: (String) -> Unit
|
||||||
) : VerticalGroup() {
|
) : VerticalGroup() {
|
||||||
|
|
||||||
private val gameDisplays = mutableMapOf<String, GameDisplay>()
|
private val gameDisplays = mutableMapOf<String, GameDisplay>()
|
||||||
@ -36,33 +35,24 @@ class GameList(
|
|||||||
padTop(10f)
|
padTop(10f)
|
||||||
padBottom(10f)
|
padBottom(10f)
|
||||||
|
|
||||||
events.receive(MultiplayerGameAdded::class) {
|
|
||||||
val multiplayerGame = UncivGame.Current.onlineMultiplayer.getGameByName(it.name)
|
|
||||||
if (multiplayerGame == null) return@receive
|
|
||||||
addGame(it.name, multiplayerGame.preview, multiplayerGame.error, onSelected)
|
|
||||||
}
|
|
||||||
events.receive(MultiplayerGameNameChanged::class) {
|
events.receive(MultiplayerGameNameChanged::class) {
|
||||||
val gameDisplay = gameDisplays.remove(it.name)
|
update()
|
||||||
if (gameDisplay == null) return@receive
|
|
||||||
gameDisplay.changeName(it.newName)
|
|
||||||
gameDisplays[it.newName] = gameDisplay
|
|
||||||
children.sort()
|
|
||||||
}
|
}
|
||||||
events.receive(MultiplayerGameDeleted::class) {
|
events.receive(MultiplayerGameDeleted::class) {
|
||||||
val gameDisplay = gameDisplays.remove(it.name)
|
update()
|
||||||
if (gameDisplay == null) return@receive
|
|
||||||
gameDisplay.remove()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (game in UncivGame.Current.onlineMultiplayer.games) {
|
update()
|
||||||
addGame(game.name, game.preview, game.error, onSelected)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addGame(name: String, preview: GameInfoPreview?, error: Exception?, onSelected: (String) -> Unit) {
|
fun update(){
|
||||||
val gameDisplay = GameDisplay(name, preview, error, onSelected)
|
clearChildren()
|
||||||
gameDisplays[name] = gameDisplay
|
gameDisplays.clear()
|
||||||
addActor(gameDisplay)
|
for (game in UncivGame.Current.onlineMultiplayer.games) {
|
||||||
|
val gameDisplay = GameDisplay(game.name, game.preview, game.error, onSelected)
|
||||||
|
gameDisplays[game.name] = gameDisplay
|
||||||
|
addActor(gameDisplay)
|
||||||
|
}
|
||||||
children.sort()
|
children.sort()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ class MultiplayerScreen : PickerScreen() {
|
|||||||
private val refreshButton = createRefreshButton()
|
private val refreshButton = createRefreshButton()
|
||||||
|
|
||||||
private val rightSideTable = createRightSideTable()
|
private val rightSideTable = createRightSideTable()
|
||||||
private val leftSideTable = GameList(::selectGame)
|
val gameList = GameList(::selectGame)
|
||||||
|
|
||||||
private val events = EventBus.EventReceiver()
|
private val events = EventBus.EventReceiver()
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ class MultiplayerScreen : PickerScreen() {
|
|||||||
fun createAddGameButton(): TextButton {
|
fun createAddGameButton(): TextButton {
|
||||||
val btn = addGameText.toTextButton()
|
val btn = addGameText.toTextButton()
|
||||||
btn.onClick {
|
btn.onClick {
|
||||||
game.pushScreen(AddMultiplayerGameScreen())
|
game.pushScreen(AddMultiplayerGameScreen(this))
|
||||||
}
|
}
|
||||||
return btn
|
return btn
|
||||||
}
|
}
|
||||||
@ -135,7 +135,7 @@ class MultiplayerScreen : PickerScreen() {
|
|||||||
|
|
||||||
private fun createMainContent(): Table {
|
private fun createMainContent(): Table {
|
||||||
val mainTable = Table()
|
val mainTable = Table()
|
||||||
mainTable.add(ScrollPane(leftSideTable).apply { setScrollingDisabled(true, false) }).center()
|
mainTable.add(ScrollPane(gameList).apply { setScrollingDisabled(true, false) }).center()
|
||||||
mainTable.add(rightSideTable)
|
mainTable.add(rightSideTable)
|
||||||
return mainTable
|
return mainTable
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user