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-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-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-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
|
- **Замечания:** граница иллюстрации 0.59 подобрана по BT01/TD01
|
||||||
(350×511); при другом макете карты константу нужно проверить. Правка
|
(350×511); при другом макете карты константу нужно проверить. Правка
|
||||||
имени колоды помечает колоду как несохранённую.
|
имени колоды помечает колоду как несохранённую.
|
||||||
|
- **Продолжение:** визуальная компоновка переработана по референсу в
|
||||||
|
`TASK-2026-024` (топбар Lobby, крупные карты, фильтры в оверлее).
|
||||||
|
Логика фильтров, группировки и валидации переиспользуется.
|
||||||
- **Skill обновлён:** не требуется.
|
- **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 (один экран,
|
собраны и запущены. **TASK-2026-023 — DeckBuilder (один экран,
|
||||||
мультифильтры, список колоды): реализован C1–C11, ждёт ручной
|
мультифильтры, список колоды): реализован C1–C11, ждёт ручной
|
||||||
приёмки.** EditMode 67/67, `SCENE_SMOKE`, `PLAYMAT_SMOKE`; standalone.
|
приёмки.** 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,
|
2. **TASK-2026-001 — ручная проверка пользователем** (C10): draw, call, ride,
|
||||||
move/swap, guard, trigger, drive/damage, retire, search, открытие скрытого
|
move/swap, guard, trigger, drive/damage, retire, search, открытие скрытого
|
||||||
урона, рука противника, повторные клики UI во время/после анимации.
|
урона, рука противника, повторные клики UI во время/после анимации.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue