Update player points when game ends
This commit is contained in:
@ -7,7 +7,7 @@ class Player {
|
||||
|
||||
let name: PlayerName
|
||||
|
||||
let totalPoints: Int
|
||||
var totalPoints: Int
|
||||
|
||||
var socket: WebSocket?
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
import Foundation
|
||||
import Fluent
|
||||
|
||||
final class FinishedTable: AbstractTable<FinishedPlayer> {
|
||||
|
||||
@ -137,4 +138,22 @@ final class FinishedTable: AbstractTable<FinishedPlayer> {
|
||||
override func cardStackPosition(ofPlayerAt index: Int) -> Int {
|
||||
(4 + index - indexOfTrickStarter) % 4
|
||||
}
|
||||
|
||||
func updatePlayerPoints(in database: Database) async throws {
|
||||
let points = cost
|
||||
let winnerNames = winners.map { $0.name }
|
||||
for player in allPlayers {
|
||||
guard let user = try await User.query(on: database).filter(\.$name == player.name).first() else {
|
||||
continue
|
||||
}
|
||||
if winnerNames.contains(player.name) {
|
||||
user.points += points
|
||||
player.totalPoints += points
|
||||
} else {
|
||||
user.points -= points
|
||||
player.totalPoints -= points
|
||||
}
|
||||
try await user.save(on: database)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user