docs: roadmap session IV + CLAUDE.md current state sync

This commit is contained in:
2026-08-25 17:42:28 -03:00
parent 43f15eb9fe
commit 229111a5ad
2 changed files with 45 additions and 4 deletions
+16 -4
View File
@@ -60,17 +60,29 @@ See `docs/COLLABORATIVE-DESIGN-PRINCIPLE.md` for full protocol and examples.
- **DimBG blocking input** — Full-screen overlay with `m_RaycastTarget:1` blocked all clicks. Fixed: deactivated in `PromotionUI.Awake()`.
- **PauseMenuController** — Used non-existent "Pause" input button. Fixed: use `KeyCode.Escape` only.
- **SceneTransitionManager** — Used `Time.deltaTime` with `timeScale=0`. Fixed: `Time.unscaledDeltaTime` + `WaitForSecondsRealtime`.
- **DefeatUI callback race (Aug 25)** — Fade-out disabled the panel before the continue callback coroutine fired. Fixed: invoke callback synchronously in `OnContinueClick`.
- **Dialogues empty on first run (Aug 25)** — `DialogueUI` subscribed only if `DialogueSystem.Instance` existed during its OnEnable (lost Awake race), never retried. Fixed: `[DefaultExecutionOrder(-100)]` on DialogueSystem + resilient deferred subscription.
- **Memorial typing dead (Aug 25)** — Scene TMP_InputFields hollow (`m_TextViewport/m_TextComponent = 0`) AND `InputSystemUIInputModule` doesn't feed legacy `Input.inputString`. Fixed: deep wiring validation + runtime fallback panel + temporary StandaloneInputModule swap (restored in OnDestroy).
- **Pause menu dead (Aug 25)** — Duplicate controllers per scene (one inactive canvas), unusable scene panel, HUD `PauseButton` with empty onClick. Fixed: runtime-built pause panel (Continuar / Reiniciar capítulo / Opciones / Menú principal) + HUD button wired in code + orphan overlay cleanup.
- **Dialogue text over portrait (Aug 25)** — Text box overlapped speaker portrait geometry. Fixed: idempotent runtime relayout in `DialogueUI.OnEnable` (portrait left, text stretched right).
- **CampaignConfig log spam (Aug 25)** — `CreateInstance` fires OnEnable before `SetJsonSource()`. Fixed: OnEnable silent until a JSON source exists.
### Architecture
- **Purgatory mode** (`Mono/`) is main/production codebase
- **Classic mode** (`Mono/Classic/`) is separate simpler mode
- **Board tile size**: 10.24 units, Camera ortho size 45
- **Campaign flow**: MainMenu → CampaignManager.StartCampaign() → Chapter1 scene → SetupBoard → TransitionToChapterIntro → dialogue → TransitionToPlaying
- **Runtime UI fallback pattern**: scene UI panels are validated deeply in code; broken/hollow ones are hidden and rebuilt at runtime (DefeatUI, DeadKingInputUI, PauseMenuController). All runtime canvases: ScaleWithScreenSize reference 1920×1080.
- **Campaigns**: "Nueva Campaña" = Inspector config on scene CampaignManager (`default`, Línea I, 3 chapters); "Gambito de Sombras" = `Resources/Campaigns/gambito_campaign.json` (30 chapters, 4 acts). Same engine/scenes/rules.
### Git History
- `43f15eb` — chore: scene saves from playtesting session (Ch1-3 UI edits)
- `bcc590f` — feat: runtime pause menu + Mi Memorial in main menu
- `97677fb` — fix: defeat→Memorial chain, first-run dialogues, memorial typing, dialogue layout
- `dc45653` — fix: pick best-wired DeadKingInputUI + runtime fallback inscription panel
- `58fcf0f` — feat: draws trigger Purgatory Duel for the Queen + post-defeat restart menu
- `916acd3` — test: raise EditMode coverage to 98.16% global, all classes >=95%
- `351f9e1` — fix: StackOverflow in King.GetAvailableMoves → IsInCheck recursion
- `801de79` — fix: empty board + state stuck in Dialogue
- `c5915c2` — fix: DimBG, PauseMenu, SceneTransition
- `0725372` — fix: CampaignManager race condition, DialogueUI null safety
- `bf3bec3` — fix: compilation errors (stale csproj, InputSystem, Assembly)
- `b539aa4` — Initial commit (568 files, 41786 insertions)
(Older history: `c5915c2`, `0725372`, `bf3bec3`, `b539aa4` initial commit.)
+29
View File
@@ -152,3 +152,32 @@ Commits `088d70d` y `0f0b3dd`:
0 errores de compilación, EditMode **206/206** (6 tests nuevos en
`DeathPresenceTriggerTests`: inyección completa, skip de eventos manuales,
determinismo de variantes, ids únicos).
---
## Actualizacin 2026-08-25 (IV) - Cadena derrotaMemorial jugable, dilogos y pausa
Sesin de bugfixing guiada por Editor.log tras playtesting del usuario.
Commits 97677fb (fixes), cc590f (features), 43f15eb (escenas).
| tem | Estado |
|------|--------|
| Derrota no abra inscripcin | RESUELTO - carrera en DefeatUI: el fade-out haca SetActive(false) antes de que la coroutina invocara el callback del botn Continuar (la mataba en silencio). Ahora el callback se invoca sncronamente en OnContinueClick; logs incondicionales en Show/clicks |
| Dilogos vacos en primera partida | RESUELTO - DialogueUI solo se suscriba si DialogueSystem.Instance ya exista en su OnEnable (perda la carrera de Awakes) y nunca reintentaba. Fix: [DefaultExecutionOrder(-100)] en DialogueSystem + suscripcin resiliente diferida que sincroniza el nodo activo |
| No se poda escribir en el Memorial | RESUELTO doble: (1) los 18 TMP_InputField de las escenas estn huecos (m_TextViewport/m_TextComponent = {fileID: 0}); (2) el EventSystem usa InputSystemUIInputModule, que no alimenta el pipeline legacy Input.inputString que usa TMP para tipear. Fix: validacin profunda + panel fallback runtime + swap temporal a StandaloneInputModule mientras el panel est abierto (restaurado en OnDestroy) |
| Botn Inscribir muerto | RESUELTO - WaitForSeconds escalado con imeScale=0 congelaba la coroutina para siempre; ahora WaitForSecondsRealtime. Adems Show() activa el GO del componente si qued inactivo (error "Coroutine couldn't be started... 'DeadKingInputPanel' is inactive") |
| Panel de inscripcin gigante / corrido | RESUELTO - CanvasScaler a referencia 19201080 (convencin de todos los canvases del proyecto) + layout centrado: ttulo arriba, nombre, mensaje, botn sin solapes |
| Pausa in-game muerta | RESUELTO - haba 2 PauseMenuController por escena (uno sobre canvas desactivado), panel de escena sin servir y botn HUD PauseButton con onClick: []. Ahora Show() construye panel runtime (orden 420): **Continuar / Reiniciar captulo / Opciones** (OptionsMenuController.Toggle()) / **Salir al men principal**; cablea el botn HUD en Awake y limpia overlays hurfanos acumulados |
| Texto encimado con retrato en dilogos | RESUELTO - re-layout runtime en DialogueUI.OnEnable: retrato 240300 anclado a la izquierda, texto estirado ocupando el resto (TopLeft), nombre alineado con el inicio del texto. Idempotente, aplica en las 3 escenas |
| Error ruido "[CampaignConfig] No se asign archivo JSON" | RESUELTO - CreateInstance<CampaignConfig>() dispara OnEnable antes de que CampaignManager llame SetJsonSource(); OnEnable ahora es silencioso sin fuente (el LogError se mantiene en LoadFromJson() explcito) |
| Feature: Mi Memorial | NUEVO - botn "Mi Memorial" en men principal: lista scrolleable newest-first de partidas perdidas desde DeadKingPool (persistente dead_kings.json) con mensaje en dorado + autor/captulo; estado vaco si no hay registros; toggle por segundo clic |
| Campaas default vs Gambito de Sombras | DOC - "Nueva Campaa" = config del Inspector en el CampaignManager de escena (campaa default, Lnea I, 3 captulos); "Gambito de Sombras" = Resources/Campaigns/gambito_campaign.json (30 captulos, 4 actos). Mismo motor, escenas y reglas |
**Verificacin**: juego manual del usuario (Editor.log como fuente de diagnstico): cadena completa
derrotamemorialmen post-envo, pausa con ESC y botn HUD, los 4 botones de pausa,
dilogos con texto desde primera partida, Mi Memorial funcional.
**Pendientes menores conocidos**: VictoryUI.OnContinueClick tiene la misma carrera latente que
DefeatUI (fix ofrecido, no aplicado an); limpieza opcional de paneles duplicados/huecos en escenas
(9 DeadKingInputPanel por escena, 2 PauseMenuController, 18 input fields vacos) hoy mitigada por
los fallbacks runtime.