Add final statistics when game ends

This commit is contained in:
Christoph Hagen
2021-12-21 09:53:42 +01:00
parent fa1be9485e
commit 941b25346d
5 changed files with 43 additions and 4 deletions

View File

@ -0,0 +1,32 @@
import Foundation
struct GameStatistics: Codable, Equatable {
let leader: PlayerName
let coPlayers: [PlayerName]
let didWin: Bool
let game: GameId
let leaderPoints: Int
let cost: Int
var text: String = ""
init(table: FinishedTable, language: SupportedLanguage) {
let leader = table.players.first { $0.selectedGame }!
self.coPlayers = table.players
.filter { $0 != leader && $0.leadsGame == leader.leadsGame }
.map { $0.name }
self.leader = leader.name
self.game = table.game.id
self.leaderPoints = table.leadingPoints
self.didWin = table.winners.contains(player: leader.name)
self.cost = table.game.basicCost
// TODO: Calculate cost correctly
}
}

View File

@ -22,8 +22,6 @@ struct PlayerInfo: Codable, Equatable {
var leadsGame = false
var points: Int? = nil
var state: [PlayerStateId] = []
init(name: PlayerName) {
@ -39,6 +37,5 @@ struct PlayerInfo: Codable, Equatable {
case positionInTrick = "position"
case numberOfDoubles = "doubles"
case leadsGame = "leads"
case points = "points"
}
}

View File

@ -25,6 +25,8 @@ struct TableInfo: Codable {
var playerSelectsGame = false
var game: GameId? = nil
var gameStats: GameStatistics?
init(id: TableId, name: TableName) {
self.id = id