59 lines
1.3 KiB
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
|
|
}
|
|
}
|
|
|