// توابع کمکیِ خالصِ کدِ کوتاهِ کارت‌ها (مثل "AS", "10H", "KD").
// بدون وابستگی به Flame/Flutter تا قابل‌تست و بازاستفاده باشد.

/// نسبت ابعاد تصویرِ کارت (۵۰۰×۷۲۶ منبع).
const double kCardRatio = 726 / 500;

/// نام کاملِ خال از روی آخرین حرفِ کد: S/H/D/C.
String suitName(String code) {
  switch (code[code.length - 1]) {
    case 'H':
      return 'hearts';
    case 'D':
      return 'diamonds';
    case 'C':
      return 'clubs';
    default:
      return 'spades';
  }
}

/// رتبه‌ی عددی کارت (۲..۱۰ معمولی، J=11، Q=12، K=13، A=14).
int rankValue(String code) {
  switch (code.substring(0, code.length - 1)) {
    case 'A':
      return 14;
    case 'K':
      return 13;
    case 'Q':
      return 12;
    case 'J':
      return 11;
    default:
      return int.tryParse(code.substring(0, code.length - 1)) ?? 0;
  }
}

// ترتیب خال‌ها برای چیدنِ دست (سیاه/قرمز متناوب تا تفکیک بصری راحت‌تر باشد).
const _suitOrder = {'S': 0, 'H': 1, 'C': 2, 'D': 3};

/// مقایسه برای مرتب‌سازی کارت‌های دست: ابتدا خال، سپس رتبه.
int compareCards(String a, String b) {
  final sa = _suitOrder[a[a.length - 1]] ?? 0;
  final sb = _suitOrder[b[b.length - 1]] ?? 0;
  if (sa != sb) return sa - sb;
  return rankValue(a) - rankValue(b);
}
