import Foundation

enum Rank: Int, CaseIterable, Codable, Comparable, Sendable {
    case ace = 1
    case two, three, four, five, six, seven
    case eight, nine, ten, jack, queen, king

    static func < (lhs: Rank, rhs: Rank) -> Bool {
        lhs.rawValue < rhs.rawValue
    }

    var displayName: String {
        switch self {
        case .ace: "Ace"
        case .two: "2"
        case .three: "3"
        case .four: "4"
        case .five: "5"
        case .six: "6"
        case .seven: "7"
        case .eight: "8"
        case .nine: "9"
        case .ten: "10"
        case .jack: "Jack"
        case .queen: "Queen"
        case .king: "King"
        }
    }

    var shortName: String {
        switch self {
        case .ace: "A"
        case .jack: "J"
        case .queen: "Q"
        case .king: "K"
        default: "\(rawValue)"
        }
    }

    /// File name component for asset lookup
    var fileName: String {
        switch self {
        case .ace: "ace"
        case .two: "2"
        case .three: "3"
        case .four: "4"
        case .five: "5"
        case .six: "6"
        case .seven: "7"
        case .eight: "8"
        case .nine: "9"
        case .ten: "10"
        case .jack: "jack"
        case .queen: "queen"
        case .king: "king"
        }
    }
}
