summaryrefslogtreecommitdiff
path: root/sw-common-model
diff options
context:
space:
mode:
authorjoffrey-bion <joffrey.bion@gmail.com>2020-12-10 23:06:00 +0100
committerjoffrey-bion <joffrey.bion@gmail.com>2020-12-11 02:16:49 +0100
commiteef32bd9307a3a9f1ee3b532db2fb1f7cf37927a (patch)
treef139487db3866a687e699a01f3ed4baa5e44faf2 /sw-common-model
parentDecouple some sagas from routes (diff)
downloadseven-wonders-eef32bd9307a3a9f1ee3b532db2fb1f7cf37927a.tar.gz
seven-wonders-eef32bd9307a3a9f1ee3b532db2fb1f7cf37927a.tar.bz2
seven-wonders-eef32bd9307a3a9f1ee3b532db2fb1f7cf37927a.zip
Allow owner to leave/disband the game
Resolves: https://github.com/joffrey-bion/seven-wonders/issues/51
Diffstat (limited to 'sw-common-model')
-rw-r--r--sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/model/api/Lobby.kt26
1 files changed, 26 insertions, 0 deletions
diff --git a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/model/api/Lobby.kt b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/model/api/Lobby.kt
index e1e978f7..62bac3b1 100644
--- a/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/model/api/Lobby.kt
+++ b/sw-common-model/src/commonMain/kotlin/org/luxons/sevenwonders/model/api/Lobby.kt
@@ -1,10 +1,36 @@
package org.luxons.sevenwonders.model.api
+import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import org.luxons.sevenwonders.model.wonders.PreGameWonder
const val SEVEN_WONDERS_WS_ENDPOINT = "/seven-wonders-websocket"
+// workaround for https://github.com/Kotlin/kotlinx.serialization/issues/1194
+@Serializable
+data class GameListEventWrapper(
+ val event: GameListEvent
+)
+
+fun GameListEvent.wrap(): GameListEventWrapper = GameListEventWrapper(this)
+
+@Serializable
+sealed class GameListEvent {
+
+ @SerialName("ReplaceList")
+ @Serializable
+ data class ReplaceList(val lobbies: List<LobbyDTO>) : GameListEvent()
+
+ @SerialName("CreateOrUpdate")
+ @Serializable
+ data class CreateOrUpdate(val lobby: LobbyDTO) : GameListEvent()
+
+ @SerialName("Delete")
+ @Serializable
+ data class Delete(val lobbyId: Long) : GameListEvent()
+}
+
+@Serializable
enum class State {
LOBBY,
PLAYING,
bgstack15