// // 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 }