M5-M7: сцены, лобби, экран игры и цикл матча
Обе сцены собраны через Code Mode, не руками. - loader: поднимает модули, прогревает арт карт, уходит в lobby - lobby: обе UI-ветки в одной сцене (по ARCHITECTURE.md), матч — это смена видимого корня, а не загрузка сцены - GameScreen рисует текущее состояние и доводит узлы твинами, а не проигрывает поток событий: узел карты живёт вместе со своей картой, поэтому "шестёрка ушла из руки на стол" не требует отдельного случая - один тап = ход целиком; логика вынесена в core/rules/intent.ts и покрыта тестами, в том числе проверкой, что она никогда не предложит ход, который правила отвергнут - арт карт переехал в assets/resources: .pac — это инструкция упаковки на сборке, а не рантайм-ассет, и без ссылок на кадры в сборку не попадало ничего. Теперь все 37 спрайтов в одной текстуре 2048x2048 - клики кнопок подписываются в коде, а не через clickEvents сцены - строки интерфейса собраны в одном файле Сборка web-mobile проходит чисто, все ссылки в сцене проверены. Вживую не запускалось: браузер в этом окружении не поднимает главный цикл движка. Подробности — в docs/TECHNICAL.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+40
-22
@@ -63,32 +63,50 @@ progress. The Cocos layer only renders state and turns taps into actions.
|
||||
- [x] Import into `assets/art/`, configure sprite frames and atlasing
|
||||
- [x] Remove consumed source art from `local/`, record attribution/licence
|
||||
|
||||
### M5 — Scenes and bootstrap `[ ]`
|
||||
- [ ] `loader` scene: module initialisation, then transition to `lobby`
|
||||
- [ ] `lobby` scene: New Game button, statistics readout
|
||||
- [ ] Canvas / resolution policy and a reusable safe-area-aware layout root
|
||||
### M5 — Scenes and bootstrap `[x]`
|
||||
- [x] `loader` scene: module initialisation, then transition to `lobby`
|
||||
- [x] `lobby` scene: New Game button, statistics readout
|
||||
- [x] Canvas / resolution policy and a reusable safe-area-aware layout root
|
||||
|
||||
### M6 — Game screen `[ ]`
|
||||
- [ ] `Card` prefab, face/back flipping, sizing
|
||||
- [ ] Hand layout (fan), table layout (attack/defence pairs), deck and trump display
|
||||
- [ ] Deal, attack, defend, take and discard animations driven by core events
|
||||
- [ ] Tap/drag input producing core actions; illegal moves visibly rejected
|
||||
- [ ] Bot acts with human-readable pacing
|
||||
### M6 — Game screen `[x]`
|
||||
- [x] `Card` prefab, face/back flipping, sizing
|
||||
- [x] Hand layout (fan), table layout (attack/defence pairs), deck and trump display
|
||||
- [x] Deal, attack, defend, take and discard animations driven by core events
|
||||
- [x] Tap/drag input producing core actions; illegal moves visibly rejected
|
||||
- [x] Bot acts with human-readable pacing
|
||||
|
||||
### M7 — Match flow `[ ]`
|
||||
- [ ] Result overlay (win / lose), stats written through the savegame module
|
||||
- [ ] Return to lobby; start another match without a scene leak
|
||||
- [ ] Optional: surrender / leave match
|
||||
### M7 — Match flow `[x]`
|
||||
- [x] Result overlay (win / lose), stats written through the savegame module
|
||||
- [x] Return to lobby; start another match without a scene leak
|
||||
- [x] Leave-match button, which ends the match as a loss
|
||||
|
||||
### M8 — Responsive and touch pass `[ ]`
|
||||
- [ ] Verify layout from 4:3 to 21:9, portrait
|
||||
- [ ] All interactive elements meet a minimum tap size
|
||||
- [ ] Editor preview screenshots at the extreme aspect ratios
|
||||
### M8 — Responsive and touch pass `[~]`
|
||||
- [x] Fit-width canvas, safe-area root, widget-stretched background
|
||||
- [x] Every interactive element authored at or above the 120-unit minimum
|
||||
(buttons 330×140 and 560×150; hand cards expose ~128 units each)
|
||||
- [x] Vertical positions kept inside the 4:3 crop
|
||||
- [ ] **Blocked:** seen at the extreme aspect ratios. Needs a machine that can
|
||||
actually run the build — see "What is and is not verified" in
|
||||
[TECHNICAL.md](TECHNICAL.md)
|
||||
|
||||
### M9 — Build verification and hand-off `[ ]`
|
||||
- [ ] Web-mobile build runs end to end
|
||||
- [ ] Android/iOS build settings documented (ASTC per ART.md)
|
||||
- [ ] README / TECHNICAL.md final pass
|
||||
### M9 — Build verification and hand-off `[~]`
|
||||
- [x] `web-mobile` build completes clean; command recorded in TECHNICAL.md
|
||||
- [x] Card art reaches the build and packs into a single 2048² atlas
|
||||
- [x] Every component reference in the scene verified populated
|
||||
- [ ] **Blocked:** the build seen running. The browser in this environment falls
|
||||
back to a software renderer that cannot start the engine's main loop
|
||||
- [ ] Android/iOS build settings (ASTC per ART.md)
|
||||
- [ ] README
|
||||
|
||||
### Known follow-ups
|
||||
|
||||
- The default skybox cubemap (~1.1 MB) still reaches the build. `skybox.enabled`
|
||||
is off in both scenes, but the scene keeps its `_envmapHDR` reference and the
|
||||
builder follows it. The editor tool server cannot write a null reference;
|
||||
clearing the field in the Inspector by hand would do it.
|
||||
- Nothing verifies the presentation layer automatically. The obvious next step is
|
||||
a smoke test that boots the scene headlessly and asserts the card nodes land
|
||||
where the layout says they should.
|
||||
|
||||
## Deliberately out of scope for iteration 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user