46 lines
1.2 KiB
Swift
46 lines
1.2 KiB
Swift
import Foundation
|
|
|
|
struct PlayerInfo: Codable, Equatable {
|
|
|
|
/// The name of the player
|
|
let name: PlayerName
|
|
|
|
var points = 0
|
|
|
|
/// Indicates that the player is active, i.e. a session is established
|
|
var isConnected = false
|
|
|
|
/// The player is the next one to perform an action
|
|
var isNextActor = false
|
|
|
|
/// The card which the player added to the current trick
|
|
var playedCard: CardId? = nil
|
|
|
|
/// The height of the player card on the table stack
|
|
var positionInTrick = 0
|
|
|
|
/// The number of times the player doubled the game cost (initial double and raises)
|
|
var numberOfDoubles = 0
|
|
|
|
var leadsGame = false
|
|
|
|
var state: [PlayerStateId] = []
|
|
|
|
init(name: PlayerName) {
|
|
self.name = name
|
|
}
|
|
|
|
/// Convert the property names into shorter strings for JSON encoding
|
|
enum CodingKeys: String, CodingKey {
|
|
case name = "name"
|
|
case points = "points"
|
|
case isConnected = "connected"
|
|
case isNextActor = "active"
|
|
case playedCard = "card"
|
|
case positionInTrick = "position"
|
|
case numberOfDoubles = "doubles"
|
|
case leadsGame = "leads"
|
|
case state = "state"
|
|
}
|
|
}
|