import Foundation struct Card: Identifiable, Equatable, Hashable, Codable, Sendable { let id: UUID let suit: Suit let rank: Rank var isFaceUp: Bool init(suit: Suit, rank: Rank, isFaceUp: Bool = false) { self.id = UUID() self.suit = suit self.rank = rank self.isFaceUp = isFaceUp } var color: Suit.Color { suit.color } var accessibilityDescription: String { if isFaceUp { "\(rank.displayName) of \(suit.displayName)" } else { "Card, face down" } } func frontImageName(style: CardFaceStyle) -> String { "\(style.rawValue)_\(suit.rawValue)_\(rank.fileName)" } } enum CardFaceStyle: String, CaseIterable, Codable, Sendable { case classic, modern, extracted } enum CardBackDesign: Int, CaseIterable, Codable, Sendable { case abstractClouds = 1 case abstractScene case abstract case astronaut case blue case blue2 case cars case castle case fish case frog case red case red2 var imageName: String { "back_\(String(format: "%02d", rawValue))" } }