docs: план DeckBuilder по референсу (TASK-2026-024)
CI / test (push) Successful in 1m52s
Details
CI / test (push) Successful in 1m52s
Details
- Решения: топбар Lobby с неактивными Rating/Community и «В лобби» в меню; без вкладок; крупные карты со скроллом; просмотр только ПКМ, добавление — только в режиме колоды; количество «есть / в колоде»; всё фильтры в оверлее, включая редкость C/R/RR/RRR/SP и поиск. - Чек-лист C1-C10: PlayerTopBar, сетка, режимы, список колод с эмблемами и кебаб-меню, фильтры, тесты и проверки.
This commit is contained in:
parent
ecb7314bb6
commit
f22a24e5ad
|
|
@ -44,6 +44,7 @@
|
|||
| TASK-2026-021 | `[!]` | Login по референсу: 2D-арт и неоновый UI | DeepSeek: C1–C9, Tab/Enter/Esc; ждёт приёмки | EditMode 60/60; `SCENE_SMOKE success=True`; standalone собран; ручная — пользователь |
|
||||
| TASK-2026-022 | `[!]` | Lobby по референсу: дашборд, заглушки, сцена Community | DeepSeek: C1–C11 реализованы; ждёт ручной приёмки | EditMode 62/62; `SCENE_SMOKE`, `PLAYMAT_SMOKE`, standalone; ручная — пользователь |
|
||||
| TASK-2026-023 | `[!]` | DeckBuilder: один экран, мультифильтры и список колоды | DeepSeek: C1–C11 реализованы; ждёт ручной приёмки | EditMode 67/67; `SCENE_SMOKE`, `PLAYMAT_SMOKE`; ручная — пользователь |
|
||||
| TASK-2026-024 | `[ ]` | DeckBuilder по референсу: топбар Lobby, крупные карты, фильтры | DeepSeek: анализ и план готовы; реализация ожидает | не выполнена |
|
||||
|
||||
Новые задачи добавляются в конец файла отдельными разделами. Не используй один
|
||||
раздел для нескольких независимых задач.
|
||||
|
|
@ -2563,8 +2564,233 @@ HUD с номером хода и фазовой шкалой, компактн
|
|||
- **Замечания:** граница иллюстрации 0.59 подобрана по BT01/TD01
|
||||
(350×511); при другом макете карты константу нужно проверить. Правка
|
||||
имени колоды помечает колоду как несохранённую.
|
||||
- **Продолжение:** визуальная компоновка переработана по референсу в
|
||||
`TASK-2026-024` (топбар Lobby, крупные карты, фильтры в оверлее).
|
||||
Логика фильтров, группировки и валидации переиспользуется.
|
||||
- **Skill обновлён:** не требуется.
|
||||
- **Git:** не коммитилось.
|
||||
- **Git:** `ecb7314`.
|
||||
|
||||
---
|
||||
|
||||
### TASK-2026-024 — DeckBuilder по референсу: топбар Lobby, крупные карты, фильтры
|
||||
|
||||
- **Статус:** `[ ]`
|
||||
- **Создано:** 2026-11-01
|
||||
- **Анализ:** DeepSeek выполнен (референс DeckBuilder от 2026-11-01)
|
||||
- **Реализация:** не начата
|
||||
- **Проверка:** не выполнена
|
||||
- **Затронутые системы:** `LobbyView`, новый `PlayerTopBar`,
|
||||
`HamburgerMenu`, `DeckBuilderView`, `DeckBuilderSceneController`,
|
||||
`CardImageService`, `DeckListFilter`, `Localization`, EditMode-тесты.
|
||||
Сервер, правила и контент не меняются.
|
||||
|
||||
#### A. Цель и требования
|
||||
|
||||
Привести DeckBuilder к композиции референса, сохранив логику
|
||||
`TASK-2026-023` (фильтры, группировка, live-валидация):
|
||||
|
||||
1. **Топбар как в Lobby**: аватар, ник, MMR, сезон, `Rating` и `Community`
|
||||
неактивны, `Menu` — язык, версия, адрес сервера, история, «В лобби»,
|
||||
«Выйти».
|
||||
2. **Без вкладок** Collection/Deck Builder — это элемент референса, не
|
||||
функция.
|
||||
3. **Коллекция — крупные карты со скроллом** (6 в ряд): номер грейда,
|
||||
иллюстрация, плашка имени поверх, строка количества, камень редкости.
|
||||
Пагинации нет.
|
||||
4. **Режим просмотра:** карты коллекции только смотрят, крафтят и
|
||||
разбирают; ЛКМ по карте ничего не делает, ПКМ открывает карточку.
|
||||
В этом режиме под картой — «есть ×N».
|
||||
5. **Режим колоды:** при выборе колоды справа появляется её состав,
|
||||
добавление/удаление включается; ЛКМ по карте коллекции добавляет
|
||||
копию, ПКМ — карточка. Под картой — «в колоде ×N · есть ×M».
|
||||
6. **Список колод**: кнопка `+ Новый набор`, строки с эмблемой клана,
|
||||
именем, `N/50` и `T N/16`, кебаб-меню (открыть/удалить), подсветка
|
||||
выбранной.
|
||||
7. **Фильтры — в модальном оверлее:** мультивыбор клана, грейда,
|
||||
триггера и **редкости (C/R/RR/RRR/SP)**, плюс поиск по названию;
|
||||
«Сбросить», «Отмена», «Применить», сводка в шапке.
|
||||
8. Визуальный язык — неоновые панели/свечение/фаски из `NeonUi`, как в
|
||||
Login и Lobby.
|
||||
|
||||
Ограничения:
|
||||
|
||||
- сервер, правила, протокол и контент не меняются;
|
||||
- 3D-окружение сцены DeckBuilder не трогаем;
|
||||
- сохранение/создание/удаление/крафт/разбор сохраняют поведение;
|
||||
- Lobby не должен визуально измениться после выноса топбара;
|
||||
- ручная приёмка — пользователь.
|
||||
|
||||
Критерии готовности:
|
||||
|
||||
- DeckBuilder открывается с топбаром Lobby и меню, «В лобби» работает;
|
||||
- в режиме просмотра клик по карте не добавляет её в колоду;
|
||||
- после выбора колоды справа состав, ЛКМ добавляет, клик по строке
|
||||
состава убирает;
|
||||
- крупные карты не растянуты, имя и количество читаются, скролл плавный;
|
||||
- мультифильтры + редкость + поиск реально фильтруют и отражаются в
|
||||
сводке;
|
||||
- EditMode и смоуки проходят.
|
||||
|
||||
#### B. Текущее состояние
|
||||
|
||||
- `DeckBuilderView` (`ecb7314`) — один экран со своим топбаром (назад,
|
||||
заголовок, сводка, фильтры, сброс), коллекция 174×238 с
|
||||
`ApplyIllustration`, правая панель 380 px со списком колод и составом.
|
||||
- Клик по карте коллекции всегда добавляет копию (в обоих режимах).
|
||||
- Фильтры — модальный оверлей без редкости и поиска.
|
||||
- Топбар Lobby реализован внутри `LobbyView` (`TopBar`, `AddTopAction`),
|
||||
меню — `HamburgerMenu`.
|
||||
- `LobbyView` показывает аватар-инициалы, ник, MMR, сезон, Rating,
|
||||
Community и гамбургер.
|
||||
- `DeckBuilderSceneController` резолвит только `MetaService`/`AuthService`.
|
||||
|
||||
Что сохранить:
|
||||
|
||||
- `DeckListModel`/`DeckFilter`/`DeckValidation` и тесты;
|
||||
- `CardImageService.ApplyIllustration`;
|
||||
- правую панель со списком колод/составом и live-валидацию;
|
||||
- крафт/разбор и ПКМ-карточку;
|
||||
- Lobby: расположение и поведение элементов после выноса топбара.
|
||||
|
||||
#### C. Чек-лист изменений
|
||||
|
||||
- [ ] **C1. `CREATE` `Runtime/UI/PlayerTopBar.cs`; `MODIFY`
|
||||
`LobbyView.cs`.**
|
||||
- Вынести из `LobbyView` топбар: аватар, ник, MMR, сезон, две кнопки,
|
||||
гамбургер; подписка на `PlayerState`; меню `HamburgerMenu`.
|
||||
- Конструктор принимает `onRating`, `onCommunity`, `onHistory`,
|
||||
`onLobby`, `onLogout`; `null` для действия = кнопка disabled.
|
||||
- `LobbyView` использует компонент без визуальных изменений.
|
||||
- `HamburgerMenu`: пункт «В лобби» при `onLobby != null`.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: нет.
|
||||
|
||||
- [ ] **C2. `MODIFY` `Runtime/App/DeckBuilderSceneController.cs`.**
|
||||
- Резолвить `PlayerState`/`AppConfig`; создать `PlayerTopBar` с
|
||||
`onRating: null`, `onCommunity: null`, «В лобби» → Lobby.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C1.
|
||||
|
||||
- [ ] **C3. `MODIFY` `DeckBuilderView` — каркас.**
|
||||
- Убрать собственный топбар; тело начинается под `PlayerTopBar`.
|
||||
- Сохранить панели `DeckListPanel`/`DeckPanel`, статус под коллекцией.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C1, C2.
|
||||
|
||||
- [ ] **C4. `MODIFY` сетка коллекции.**
|
||||
- `GridLayoutGroup` 6 колонок, ячейка ≈216×286, вертикальный скролл без
|
||||
пагинации.
|
||||
- Ячейка: иллюстрация `ApplyIllustration` (216×182), номер грейда в
|
||||
углу, плашка имени поверх низа иллюстрации, строка количества,
|
||||
камень редкости.
|
||||
- ЛКМ в просмотре ничего не делает; ПКМ — карточка; в режиме колоды
|
||||
ЛКМ добавляет, ПКМ — карточка.
|
||||
- Количество: «есть ×N» / «в колоде ×N · есть ×M».
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C3, C5.
|
||||
|
||||
- [ ] **C5. `MODIFY` режимы просмотра и колоды.**
|
||||
- `_editing == null` — просмотр: панель колод, добавление выключено;
|
||||
нажатие на колоду открывает состав и включает добавление.
|
||||
- «К списку колод» возвращает просмотр (несохранённые изменения
|
||||
отбрасываются; предупреждение — отдельный пункт при необходимости).
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C3.
|
||||
|
||||
- [ ] **C6. `MODIFY` список колод по референсу.**
|
||||
- Кнопка `+ Новый набор` (полная ширина).
|
||||
- Строка: эмблема клана (процедурная, цвет клана), имя, `N/50 ·
|
||||
T N/16`, бейдж валидности точкой/цветом; кебаб-меню «Открыть /
|
||||
Удалить».
|
||||
- Подсветка открытой колоды.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C3.
|
||||
|
||||
- [ ] **C7. `MODIFY` фильтры.**
|
||||
- `DeckFilter`: добавить `Rarities` (C/R/RR/RRR/SP) и `Search`.
|
||||
- Оверлей: поиск, чипы редкости, клан/грейд/триггер; «Сбросить»,
|
||||
«Отмена», «Применить»; сводка включает редкость и поиск.
|
||||
- `DeckListModel`/`DeckFilter` остаются чистыми и тестируемыми.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C3.
|
||||
|
||||
- [ ] **C8. `MODIFY` `Localization.cs`** — «В лобби», «Новый набор»,
|
||||
«Поиск по названию», «Редкость», «есть», «в колоде», «Открыть»,
|
||||
«Ещё», названия редкостей.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C4–C7.
|
||||
|
||||
- [ ] **C9. `TEST` EditMode.**
|
||||
- `DeckFilter`: редкость и поиск (регистр, локализованное имя).
|
||||
- `PlayerTopBar`: создаётся, ник/MMR обновляются, disabled-кнопки при
|
||||
`null`-действиях.
|
||||
- UI: `DeckBuilderScreen`, панели, отсутствие добавления в просмотре
|
||||
(seam), переключение в режим колоды.
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C1–C8.
|
||||
|
||||
- [ ] **C10. `VERIFY` EditMode, smoke, standalone.**
|
||||
- Копия без `Library`; EditMode; `SCENE_SMOKE`; `PLAYMAT_SMOKE`;
|
||||
standalone.
|
||||
- Ручная проверка: топбар и меню, крупные карты, скролл, фильтры и
|
||||
поиск, режимы, добавление/удаление, сохранение, «В бой»/«С ботом».
|
||||
- Реализация: не выполнена. Проверка: не выполнена.
|
||||
- Зависит: C9.
|
||||
|
||||
#### D. Последовательность выполнения
|
||||
|
||||
1. C1: `PlayerTopBar` и меню; проверить, что Lobby не изменился.
|
||||
2. C2–C3: DeckBuilder с топбаром Lobby.
|
||||
3. C4–C5: крупная сетка и режимы просмотра/колоды.
|
||||
4. C6: список колод по референсу.
|
||||
5. C7–C8: фильтры, поиск, локализация.
|
||||
6. C9–C10: тесты, смоуки, standalone, ручная приёмка.
|
||||
|
||||
#### E. Проверки
|
||||
|
||||
- EditMode в копии без `Library`.
|
||||
- `SceneSmoke.Run`, `RunPlaymat`, standalone.
|
||||
- Проверка Lobby после выноса топбара (визуально и смоуком).
|
||||
- `git diff --check`; нет изменений в `server/`, `content/`,
|
||||
`Vanguard.Rules`.
|
||||
- Ручная приёмка — пользователь.
|
||||
|
||||
#### F. Решения и риски
|
||||
|
||||
**Зафиксировано пользователем (2026-11-01):**
|
||||
|
||||
1. Топбар как в Lobby; `Rating`/`Community` неактивны; «В лобби» — в меню.
|
||||
2. Вкладки Collection/Deck Builder не реализуем.
|
||||
3. Коллекция — крупные карты, вертикальный скролл, без пагинации.
|
||||
4. Просмотр: ЛКМ не добавляет, ПКМ открывает карточку.
|
||||
5. В режиме колоды справа состав, ЛКМ добавляет, клик по строке убирает.
|
||||
6. Количество: «есть ×N» / «в колоде ×N · есть ×M».
|
||||
7. Фильтры — всё в оверлее, включая редкость C/R/RR/RRR/SP и поиск.
|
||||
|
||||
**Риски:**
|
||||
|
||||
- **Вынос топбара** затрагивает принятый Lobby: менять аккуратно,
|
||||
проверять смоук и раскладку.
|
||||
- **ПКМ-only в просмотре** может быть неочевидным: нужна подсказка
|
||||
«ПКМ — подробности» в статусе/шапке коллекции.
|
||||
- **Несохранённые изменения** при возврате к списку теряются; при
|
||||
необходимости добавить подтверждение отдельным пунктом.
|
||||
- **Крупные ячейки** уменьшают число видимых карт: скролл должен быть
|
||||
плавным, без пересоздания пула на каждый кадр.
|
||||
- **Кебаб-меню** требует отдельного маленького оверлея; не дублировать
|
||||
существующие меню.
|
||||
- **Редкости SP** в каталоге есть; если у принтов встретится другая
|
||||
строка, чип не совпадёт — показывать как есть.
|
||||
|
||||
**Открытых вопросов, блокирующих старт, нет.**
|
||||
|
||||
#### G. Результат
|
||||
|
||||
- **Реализовано:** —
|
||||
- **Проверки:** —
|
||||
- **Не завершено/заблокировано:** —
|
||||
- **Skill обновлён:** —
|
||||
- **Git:** —
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -378,8 +378,10 @@ client/Assets/Plugins/Vanguard.Shared + MessagePack
|
|||
собраны и запущены. **TASK-2026-023 — DeckBuilder (один экран,
|
||||
мультифильтры, список колоды): реализован C1–C11, ждёт ручной
|
||||
приёмки.** EditMode 67/67, `SCENE_SMOKE`, `PLAYMAT_SMOKE`; standalone.
|
||||
После приёмки — **TASK-2026-019** (загрузочная сцена, fade, кадр без
|
||||
покадровых аллокаций).
|
||||
**TASK-2026-024 — DeckBuilder по референсу (топбар Lobby, крупные
|
||||
карты, фильтры в оверлее): план готов**, реализация — следующим
|
||||
проходом. После приёмки — **TASK-2026-019** (загрузочная сцена, fade,
|
||||
кадр без покадровых аллокаций).
|
||||
2. **TASK-2026-001 — ручная проверка пользователем** (C10): draw, call, ride,
|
||||
move/swap, guard, trigger, drive/damage, retire, search, открытие скрытого
|
||||
урона, рука противника, повторные клики UI во время/после анимации.
|
||||
|
|
|
|||
Loading…
Reference in New Issue