76 lines
2.2 KiB
Swift
76 lines
2.2 KiB
Swift
//
|
|
// GameResult.swift
|
|
// Blackjack
|
|
//
|
|
// Possible outcomes for a Blackjack hand.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
/// Result of a single Blackjack hand.
|
|
enum HandResult: Equatable {
|
|
case blackjack // Natural 21
|
|
case win // Beat dealer
|
|
case lose // Lost to dealer or bust
|
|
case push // Tie
|
|
case bust // Over 21
|
|
case surrender // Gave up half bet
|
|
case insuranceWin // Dealer had blackjack
|
|
case insuranceLose // Dealer didn't have blackjack
|
|
|
|
/// String identifier for persistence.
|
|
var saveName: String {
|
|
switch self {
|
|
case .blackjack: return "blackjack"
|
|
case .win: return "win"
|
|
case .lose: return "lose"
|
|
case .push: return "push"
|
|
case .bust: return "bust"
|
|
case .surrender: return "surrender"
|
|
case .insuranceWin: return "insuranceWin"
|
|
case .insuranceLose: return "insuranceLose"
|
|
}
|
|
}
|
|
|
|
var displayText: String {
|
|
switch self {
|
|
case .blackjack: return String(localized: "BLACKJACK!")
|
|
case .win: return String(localized: "WIN!")
|
|
case .lose: return String(localized: "LOSE")
|
|
case .push: return String(localized: "PUSH")
|
|
case .bust: return String(localized: "BUST!")
|
|
case .surrender: return String(localized: "SURRENDER")
|
|
case .insuranceWin: return String(localized: "INSURANCE WINS")
|
|
case .insuranceLose: return String(localized: "INSURANCE LOSES")
|
|
}
|
|
}
|
|
|
|
var color: Color {
|
|
switch self {
|
|
case .blackjack: return .yellow
|
|
case .win: return .green
|
|
case .lose, .bust, .insuranceLose: return .red
|
|
case .push: return .blue
|
|
case .surrender: return .orange
|
|
case .insuranceWin: return .green
|
|
}
|
|
}
|
|
|
|
var isWin: Bool {
|
|
switch self {
|
|
case .blackjack, .win, .insuranceWin: return true
|
|
default: return false
|
|
}
|
|
}
|
|
}
|
|
|
|
/// Overall game result for the round.
|
|
struct RoundResult: Equatable {
|
|
let mainHandResult: HandResult
|
|
let splitHandResult: HandResult?
|
|
let insuranceResult: HandResult?
|
|
let totalWinnings: Int
|
|
let wasBlackjack: Bool
|
|
}
|
|
|