feat(websocket)!: Implement WebSocket connection and event handling
This commit is contained in:
@@ -16,15 +16,15 @@ object PodManager {
|
||||
val TTL: Long = System.currentTimeMillis() + 86400000L // 24 hours in milliseconds
|
||||
val podIp: String = System.getenv("POD_IP")
|
||||
val podName: String = System.getenv("POD_NAME")
|
||||
|
||||
|
||||
private val sessions: mutable.Map[String, GameLobby] = mutable.Map()
|
||||
private val userSession: mutable.Map[User, String] = mutable.Map()
|
||||
private val injector: Injector = Guice.createInjector(KnockOutWebConfigurationModule())
|
||||
|
||||
|
||||
def createGame(
|
||||
host: User,
|
||||
name: String,
|
||||
maxPlayers: Int
|
||||
host: User,
|
||||
name: String,
|
||||
maxPlayers: Int
|
||||
): GameLobby = {
|
||||
val gameLobby = GameLobby(
|
||||
logic = BaseGameLogic(injector.getInstance(classOf[Configuration])),
|
||||
@@ -42,13 +42,7 @@ object PodManager {
|
||||
def getGame(gameId: String): Option[GameLobby] = {
|
||||
sessions.get(gameId)
|
||||
}
|
||||
|
||||
private[logic] def removeGame(gameId: String): Unit = {
|
||||
sessions.remove(gameId)
|
||||
// Also remove all user sessions associated with this game
|
||||
userSession.filterInPlace((_, v) => v != gameId)
|
||||
}
|
||||
|
||||
|
||||
def registerUserToGame(user: User, gameId: String): Boolean = {
|
||||
if (sessions.contains(gameId)) {
|
||||
userSession += (user -> gameId)
|
||||
@@ -57,18 +51,23 @@ object PodManager {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def unregisterUserFromGame(user: User): Unit = {
|
||||
userSession.remove(user)
|
||||
}
|
||||
|
||||
|
||||
def identifyGameOfUser(user: User): Option[GameLobby] = {
|
||||
userSession.get(user) match {
|
||||
case Some(gameId) => sessions.get(gameId)
|
||||
case None => None
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private[logic] def removeGame(gameId: String): Unit = {
|
||||
sessions.remove(gameId)
|
||||
// Also remove all user sessions associated with this game
|
||||
userSession.filterInPlace((_, v) => v != gameId)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user