Что это: контракты для визуала карт: ICardView (данные, переворот, перемещение, клики), IHandView, IDeckView; опционально ICardDisplayMode, ICardViewAnimations. Используются CardView, CardViewUniversal, HandView, DeckView и кастомными вью.
Как использовать: реализовать интерфейсы в своих компонентах или использовать готовые вью; см. таблицы по каждому интерфейсу ниже.
Базовый интерфейс визуального представления одной карты.
- Data, IsFaceUp, Transform
- SetData(CardData, bool faceUp) — установка данных и стороны
- Flip(), FlipAsync(float duration) — переворот
- MoveToAsync(Vector3 position, float duration) — перемещение с анимацией
- SetInteractable(bool)
- События: OnClicked, OnHovered, OnUnhovered
Реализации: CardView, CardViewUniversal, любая своя вью по гайду.
Режим отображения: переворот по запросу или всегда открыта/закрыта.
- Mode —
CardDisplayMode:WithFlip|AlwaysFaceUp|AlwaysFaceDown
Если интерфейс не реализован, считается WithFlip. Реализует CardViewUniversal.
Воспроизведение готовых анимаций (разовые и зацикленные).
- PlayOneShotAsync(CardViewAnimationType, float?, CancellationToken) — разовая анимация
- PlayLooped(CardViewAnimationType, float?) — запуск зацикленной
- StopLooped(CardViewAnimationType), StopAllLooped()
Типы анимаций: CardViewAnimationType (Bounce, Pulse, PulseLooped, Shake, Highlight, FlyIn, Idle). Реализует CardViewUniversal; в своей вью можно вызывать CardViewAnimationTemplates напрямую.
Интерфейс контейнера карт (рука, зона).
- CardViews, Count
- AddCardAsync(ICardView, bool animate), RemoveCardAsync(ICardView, bool animate)
- ArrangeCardsAsync(bool animate), Clear()
Реализация: HandView. Для нескольких зон — несколько HandView или своих контейнеров по тому же принципу.
Интерфейс визуала колоды (точка спавна, счётчик, козырь). Привязан к CardData для отображения верхней карты.
| Сценарий | Рекомендация |
|---|---|
| Классические карты (дурак, пьяница), настройка в инспекторе | CardComponent + HandComponent/DeckComponent/BoardComponent (без ICardView). |
| Классические карты с кодом (MVP) | ICardView (CardView или CardViewUniversal) + HandView + CardPresenter. |
| Произвольные карты, свои анимации и режимы | CardViewUniversal (ICardView + ICardDisplayMode + ICardViewAnimations). |
| Своя модель карты (CCG, roguelike) | Свой интерфейс вью + свои данные; анимации и раскладки — CardViewAnimationTemplates, CardLayoutCalculator. |
- Что переиспользовать в разных карточных играх (раздел в README)
- CardViewUniversal — режимы, анимации, переиспользование шаблонов
- CustomCardViewGuide — пошаговая своя реализация карты