2021-12-03 18:03:29 +01:00
|
|
|
import Foundation
|
|
|
|
|
|
|
|
struct PlayerInfo: Codable, Equatable {
|
2021-12-09 11:11:17 +01:00
|
|
|
|
|
|
|
/// The name of the player
|
2021-12-03 18:03:29 +01:00
|
|
|
let name: PlayerName
|
2021-12-06 18:28:35 +01:00
|
|
|
|
2021-12-09 11:11:17 +01:00
|
|
|
/// Indicates that the player is active, i.e. a session is established
|
2021-12-20 20:18:19 +01:00
|
|
|
var isConnected = false
|
2021-12-03 18:03:29 +01:00
|
|
|
|
2021-12-09 11:11:17 +01:00
|
|
|
/// The player is the next one to perform an action
|
2021-12-20 20:18:19 +01:00
|
|
|
var isNextActor = false
|
2021-12-06 18:28:35 +01:00
|
|
|
|
2021-12-09 11:11:17 +01:00
|
|
|
/// The card which the player added to the current trick
|
2021-12-20 20:18:19 +01:00
|
|
|
var playedCard: CardId? = nil
|
2021-12-06 18:28:35 +01:00
|
|
|
|
|
|
|
/// The height of the player card on the table stack
|
2021-12-20 20:18:19 +01:00
|
|
|
var positionInTrick = 0
|
2021-12-09 11:11:17 +01:00
|
|
|
|
2021-12-18 15:08:43 +01:00
|
|
|
/// The number of times the player doubled the game cost (initial double and raises)
|
2021-12-20 20:18:19 +01:00
|
|
|
var numberOfDoubles = 0
|
2021-12-18 15:08:43 +01:00
|
|
|
|
2021-12-20 20:18:19 +01:00
|
|
|
var leadsGame = false
|
2021-12-18 15:08:43 +01:00
|
|
|
|
2021-12-20 20:18:19 +01:00
|
|
|
var state: [PlayerStateId] = []
|
|
|
|
|
|
|
|
init(name: PlayerName) {
|
|
|
|
self.name = name
|
2021-12-09 11:11:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/// Convert the property names into shorter strings for JSON encoding
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
|
|
case name = "name"
|
|
|
|
case isConnected = "connected"
|
|
|
|
case isNextActor = "active"
|
|
|
|
case playedCard = "card"
|
|
|
|
case positionInTrick = "position"
|
2021-12-18 15:08:43 +01:00
|
|
|
case numberOfDoubles = "doubles"
|
|
|
|
case leadsGame = "leads"
|
2021-12-03 18:03:29 +01:00
|
|
|
}
|
|
|
|
}
|