P11.2: escalating combo emphasis tied to cascade depth (sx / iOS)
Scale the combo FX with cascade depth (mv.rounds.len) — the same depth the cascade SFX (play_cascade) steps up on — so deeper cascades read as more exciting and land in lockstep with the audio escalation. Purely visual and self-pruning: no board / score / move state changes, and input stays gated by BoardAnim.active alone. - board_fx.sx: add fx_combo_level (mirrors audio's cascade_cue_index clamp: depth<=1 -> floor, depth>=5 -> ceiling). The +points popup now carries the cascade depth and grows one font step + lerps gold -> hot-gold per level (fx_popup_font / fx_popup_color). Every burst of a deep cascade gets a whole-move depth boost (FX_BURST_DEPTH) on top of the existing per-round bump. - board_view.sx: render_fx_popups derives styling from depth and tops a combo with a "COMBO xN" label naming the true cascade depth. - tests/fx_combo.sx: headless snapshot locking the depth->level/font table and asserting fx_combo_level matches the cascade-cue index column entry-for-entry. - goldens/p11_combo_deep.png + README: deterministic depth-5 capture (M3TE_FX=11) vs the depth-1 single clear (M3TE_FX=3); FX gone after settle at a later phase.
This commit is contained in:
30
README.md
30
README.md
@@ -134,7 +134,8 @@ deterministically — combine it with `M3TE_ANIM_TIME` to freeze the phase:
|
||||
|
||||
The legal-swap order is the fixed enumeration in `tests/expected/swap_legality.stdout`
|
||||
(row-major, right-before-down). For seed 1337, `M3TE_FX=3` is the vertical red
|
||||
3-match used by the golden.
|
||||
3-match used by the golden, and `M3TE_FX=11` is a **depth-5 cascade** (the deepest
|
||||
on this seed) used to capture the escalated combo emphasis (next section).
|
||||
|
||||
```bash
|
||||
# Punchy match burst + "+30" popup, pinned mid-clear: goldens/p6_fx_match.png
|
||||
@@ -144,3 +145,30 @@ env SIMCTL_CHILD_M3TE_FX=3 SIMCTL_CHILD_M3TE_ANIM_TIME=0.22 \
|
||||
env SIMCTL_CHILD_M3TE_FX=3 SIMCTL_CHILD_M3TE_ANIM_TIME=2.0 \
|
||||
xcrun simctl launch booted co.swipelab.m3te
|
||||
```
|
||||
|
||||
### Escalating combo emphasis (P11.2)
|
||||
|
||||
The combo FX escalates with cascade depth (`mv.rounds.len`), the SAME depth the
|
||||
cascade SFX (`play_cascade`) steps up on: a deeper cascade gets a bigger, hotter-
|
||||
gold `+points` popup topped by a `COMBO xN` label, and bursts that grow from the
|
||||
first round. The depth→emphasis clamp (`fx_combo_level`) mirrors the cascade cue's
|
||||
`cascade_cue_index` exactly (depth ≤ 1 → floor, depth ≥ 5 → ceiling); the
|
||||
equivalence is locked headlessly by `tests/fx_combo.sx`.
|
||||
|
||||
Capture it with the same `M3TE_FX` hook — `M3TE_FX=11` is a depth-5 cascade on
|
||||
seed 1337, contrasted against the depth-1 single clear `M3TE_FX=3`:
|
||||
|
||||
```bash
|
||||
# Escalated COMBO x5 + gold "+1050" + bigger burst: goldens/p11_combo_deep.png
|
||||
env SIMCTL_CHILD_M3TE_FX=11 SIMCTL_CHILD_M3TE_ANIM_TIME=0.22 \
|
||||
xcrun simctl launch booted co.swipelab.m3te
|
||||
# Single clear for contrast — plain white "+30", no COMBO label (goldens/p6_fx_match.png):
|
||||
env SIMCTL_CHILD_M3TE_FX=3 SIMCTL_CHILD_M3TE_ANIM_TIME=0.22 \
|
||||
xcrun simctl launch booted co.swipelab.m3te
|
||||
# Deep cascade at a later phase — all combo FX gone over the settled board (no golden):
|
||||
env SIMCTL_CHILD_M3TE_FX=11 SIMCTL_CHILD_M3TE_ANIM_TIME=3.0 \
|
||||
xcrun simctl launch booted co.swipelab.m3te
|
||||
```
|
||||
|
||||
The combo emphasis is purely visual and self-pruning: it never gates input
|
||||
(`BoardAnim.active` owns gating) and never touches board / score / move state.
|
||||
|
||||
Reference in New Issue
Block a user