Skip to content

Latest commit

 

History

History
79 lines (48 loc) · 4.53 KB

File metadata and controls

79 lines (48 loc) · 4.53 KB

Интерфейсы карт (MVP, произвольные карточки)

Что это: контракты для визуала карт: ICardView (данные, переворот, перемещение, клики), IHandView, IDeckView; опционально ICardDisplayMode, ICardViewAnimations. Используются CardView, CardViewUniversal, HandView, DeckView и кастомными вью.

Как использовать: реализовать интерфейсы в своих компонентах или использовать готовые вью; см. таблицы по каждому интерфейсу ниже.


ICardView

Базовый интерфейс визуального представления одной карты.

  • Data, IsFaceUp, Transform
  • SetData(CardData, bool faceUp) — установка данных и стороны
  • Flip(), FlipAsync(float duration) — переворот
  • MoveToAsync(Vector3 position, float duration) — перемещение с анимацией
  • SetInteractable(bool)
  • События: OnClicked, OnHovered, OnUnhovered

Реализации: CardView, CardViewUniversal, любая своя вью по гайду.


ICardDisplayMode (опционально)

Режим отображения: переворот по запросу или всегда открыта/закрыта.

  • ModeCardDisplayMode: WithFlip | AlwaysFaceUp | AlwaysFaceDown

Если интерфейс не реализован, считается WithFlip. Реализует CardViewUniversal.


ICardViewAnimations (опционально)

Воспроизведение готовых анимаций (разовые и зацикленные).

  • PlayOneShotAsync(CardViewAnimationType, float?, CancellationToken) — разовая анимация
  • PlayLooped(CardViewAnimationType, float?) — запуск зацикленной
  • StopLooped(CardViewAnimationType), StopAllLooped()

Типы анимаций: CardViewAnimationType (Bounce, Pulse, PulseLooped, Shake, Highlight, FlyIn, Idle). Реализует CardViewUniversal; в своей вью можно вызывать CardViewAnimationTemplates напрямую.


IHandView

Интерфейс контейнера карт (рука, зона).

  • CardViews, Count
  • AddCardAsync(ICardView, bool animate), RemoveCardAsync(ICardView, bool animate)
  • ArrangeCardsAsync(bool animate), Clear()

Реализация: HandView. Для нескольких зон — несколько HandView или своих контейнеров по тому же принципу.


IDeckView

Интерфейс визуала колоды (точка спавна, счётчик, козырь). Привязан к CardData для отображения верхней карты.


Когда какой интерфейс реализовывать

Сценарий Рекомендация
Классические карты (дурак, пьяница), настройка в инспекторе CardComponent + HandComponent/DeckComponent/BoardComponent (без ICardView).
Классические карты с кодом (MVP) ICardView (CardView или CardViewUniversal) + HandView + CardPresenter.
Произвольные карты, свои анимации и режимы CardViewUniversal (ICardView + ICardDisplayMode + ICardViewAnimations).
Своя модель карты (CCG, roguelike) Свой интерфейс вью + свои данные; анимации и раскладки — CardViewAnimationTemplates, CardLayoutCalculator.

См. также