CasinoGames/Baccarat/Models/BetType.swift

59 lines
1.3 KiB
Swift

//
// BetType.swift
// Baccarat
//
// Bet types and payout rates for baccarat.
//
import Foundation
import SwiftUI
/// The types of bets available in baccarat.
enum BetType: String, CaseIterable, Identifiable {
case player = "Player"
case banker = "Banker"
case tie = "Tie"
var id: String { rawValue }
/// The payout multiplier for winning this bet type.
/// Player pays 1:1, Banker pays 0.95:1 (5% commission), Tie pays 8:1.
var payoutMultiplier: Double {
switch self {
case .player: return 1.0
case .banker: return 0.95 // 5% commission
case .tie: return 8.0
}
}
/// Display name with payout info.
var displayWithPayout: String {
switch self {
case .player: return "Player (1:1)"
case .banker: return "Banker (0.95:1)"
case .tie: return "Tie (8:1)"
}
}
/// The color associated with this bet type.
var color: Color {
switch self {
case .player: return .blue
case .banker: return .red
case .tie: return .green
}
}
}
/// Represents a bet placed by the user.
struct Bet: Identifiable, Equatable {
let id = UUID()
let type: BetType
let amount: Int
static func == (lhs: Bet, rhs: Bet) -> Bool {
lhs.id == rhs.id
}
}