Что это: неизменяемая структура данных одной карты (readonly struct): Suit, Rank, IsJoker, IsRedJoker. Поддержка сравнения и проверки на козырь. Пространство имён/файл в модуле Cards.
Как использовать: создавать через конструктор или из DeckConfig; передавать в ICardView.SetData(CardData, faceUp). См. «Свойства» и «Создание» ниже.
CardData — readonly struct, представляющий одну карту. Поддерживает сравнение, проверку на козырь и работу с джокерами.
| Свойство | Тип | Описание |
|---|---|---|
Suit |
Suit |
Масть карты |
Rank |
Rank |
Ранг (достоинство) карты |
IsJoker |
bool |
Является ли картой джокером |
IsRedJoker |
bool |
Красный джокер (true) или чёрный (false) |
// Обычная карта
var aceOfSpades = new CardData(Suit.Spades, Rank.Ace);
// Джокер
var redJoker = CardData.CreateJoker(isRed: true);
var blackJoker = CardData.CreateJoker(isRed: false);int result = card1.CompareTo(card2);
// > 0 — card1 старше
// < 0 — card1 младше
// = 0 — равныbool beats = defendCard.Beats(attackCard, trump: Suit.Hearts);Логика:
- Козырь бьёт не-козырь
- Не-козырь не бьёт козырь
- Одинаковая масть — сравнение по рангу
- Разные масти без козыря — false
Алиас для Beats():
bool canCover = card.CanCover(attackCard, trump);// Для подкидывания в «Дураке»
if (card.HasSameRank(tableCard))
Debug.Log("Можно подкинуть");// Сравнение по рангу
if (card1 > card2) { }
if (card1 >= card2) { }
if (card1 < card2) { }
if (card1 <= card2) { }
// Равенство
if (card1 == card2) { }
if (card1 != card2) { }var card = new CardData(Suit.Hearts, Rank.Queen);
card.ToString(); // "Q♥"
card.ToLongEnglishString(); // "Queen of Hearts"