import Foundation enum GameVariant: String, CaseIterable, Codable, Identifiable, Sendable { case klondike case spider case freeCell var id: String { rawValue } var displayName: String { switch self { case .klondike: "Klondike" case .spider: "Spider" case .freeCell: "FreeCell" } } var tableauCount: Int { switch self { case .klondike: 7 case .spider: 10 case .freeCell: 8 } } var foundationCount: Int { switch self { case .klondike: 4 case .spider: 8 case .freeCell: 4 } } var deckCount: Int { switch self { case .klondike, .freeCell: 1 case .spider: 2 } } var hasWaste: Bool { switch self { case .klondike, .spider: true case .freeCell: false } } var hasFreeCells: Bool { self == .freeCell } var freeCellCount: Int { switch self { case .freeCell: 4 case .klondike, .spider: 0 } } var hasStock: Bool { switch self { case .klondike, .spider: true case .freeCell: false } } }