Add leave table server API

This commit is contained in:
Christoph Hagen
2021-11-30 11:56:51 +01:00
parent f81b8e4119
commit 775ac91cc8
3 changed files with 39 additions and 8 deletions

View File

@ -90,7 +90,18 @@ final class Database {
tables.getPublicTableInfos()
}
func join(tableId: TableId, player: PlayerName) -> TableManagement.JoinTableResult {
tables.join(tableId: tableId, player: player)
func join(tableId: TableId, playerToken: SessionToken) -> JoinTableResult {
guard let player = players.registeredPlayerExists(withSessionToken: playerToken) else {
return .invalidToken
}
return tables.join(tableId: tableId, player: player)
}
func leaveTable(playerToken: SessionToken) -> Bool {
guard let player = players.registeredPlayerExists(withSessionToken: playerToken) else {
return false
}
tables.remove(player: player)
return true
}
}

View File

@ -79,8 +79,6 @@ final class TableManagement {
players.append(player)
if let oldTable = playerTables[tableId] {
remove(player: player, fromTable: oldTable)
// TODO: End game if needed
//
}
tablePlayers[tableId] = players
playerTables[tableId] = tableId
@ -89,10 +87,15 @@ final class TableManagement {
func remove(player: PlayerName, fromTable tableId: TableId) {
tablePlayers[tableId] = tablePlayers[tableId]?.filter { $0 != player }
// TODO: End connection for removed user
// TODO: End game if needed, send info to remaining players
}
func remove(player: PlayerName) {
fatalError()
guard let tableId = playerTables[player] else {
return
}
remove(player: player, fromTable: tableId)
}
func connect(player: PlayerName, using socket: WebSocket) -> Bool {