P11.1: juicier match pops & brighter bursts (sx / iOS)
Visual-juice vibe-pass, FX-only — no logic/state changes, input gating still owned by BoardAnim.active. - board_fx.sx: bigger, punchier match bursts — peak size 1.95->2.50 cells, combo bonus 0.55->0.72, and the per-gem fx tints saturated a touch (low channel trimmed, dominant/mid lifted) so every burst pops as a brighter, more vivid candy colour. The hot per-pixel tint loop's hoisted locals are preserved (issue 0001). - gem_anim.sx: snappier clear pop — faster rise (0.30->0.18 of the window) to a bigger overshoot (CLEAR_POP_A 0.22->0.34) so the matched-gem clear reads as a candy snap. gem_pose's clear-pop invariants still hold. - main.sx: M3TE_FX=<n> deterministic match-FX capture hook, mirroring the M3TE_SELECT pattern. Commits the n-th currently-legal swap at startup via the normal plan_and_commit path and begins the move timeline + burst/popup FX; M3TE_ANIM_TIME pins the phase and the frame loop holds the move/FX frozen while pinned, so the burst + "+points" screenshot identically every run. A larger M3TE_ANIM_TIME captures the settled, FX-gone board. Startup- only and guarded, so normal play is untouched. - README.md: document the new M3TE_FX pin alongside the other capture hooks. - goldens/p6_fx_match.png: updated deterministic golden (iOS 26 sim, SIMCTL_CHILD_M3TE_FX=3 SIMCTL_CHILD_M3TE_ANIM_TIME=0.22) — the vertical red 3-match, burst region +1.4% mean luminance / 3.2:1 brighter:dimmer vs the same scene on the pre-juice constants. Gate: ios-sim build links, 19/19 logic tests green (incl. gem_pose t=0 rest).
This commit is contained in:
22
board_fx.sx
22
board_fx.sx
@@ -25,8 +25,8 @@
|
||||
// lingers a touch into the fall; combos (cascade rounds past the first) burst
|
||||
// bigger. Sizes are in CELL units (1.0 == one grid cell).
|
||||
FX_BURST_LIFE :f32: 0.70;
|
||||
FX_BURST_BASE :f32: 1.95;
|
||||
FX_BURST_COMBO :f32: 0.55; // extra peak size per cascade depth (capped)
|
||||
FX_BURST_BASE :f32: 2.50;
|
||||
FX_BURST_COMBO :f32: 0.72; // extra peak size per cascade depth (capped)
|
||||
|
||||
// Popup timing/motion. Rises ~1.2 cells over its life and fades out; a combo
|
||||
// (depth > 1) popup is larger and gold.
|
||||
@@ -35,15 +35,17 @@ FX_POPUP_RISE :f32: 1.2;
|
||||
FX_POPUP_FONT :f32: 34.0;
|
||||
FX_POPUP_COMBO_FONT :f32: 48.0;
|
||||
|
||||
// Bright, slightly pastel tints so a soft glow reads over the dark board, in gem
|
||||
// order (red, orange, yellow, green, blue, purple).
|
||||
// Vivid candy tints so a soft glow reads brightly over the dark board, in gem
|
||||
// order (red, orange, yellow, green, blue, purple). Saturated a touch past the
|
||||
// pastel — the low channel is trimmed while the dominant/mid channel is lifted —
|
||||
// so every burst pops as a punchier colour without losing luminance.
|
||||
fx_tint :: (i: s64) -> Color {
|
||||
if i == 0 { return Color.{ r = 255, g = 86, b = 86, a = 255 }; }
|
||||
if i == 1 { return Color.{ r = 255, g = 158, b = 64, a = 255 }; }
|
||||
if i == 2 { return Color.{ r = 255, g = 234, b = 96, a = 255 }; }
|
||||
if i == 3 { return Color.{ r = 120, g = 240, b = 120, a = 255 }; }
|
||||
if i == 4 { return Color.{ r = 110, g = 184, b = 255, a = 255 }; }
|
||||
Color.{ r = 206, g = 132, b = 255, a = 255 }
|
||||
if i == 0 { return Color.{ r = 255, g = 92, b = 62, a = 255 }; }
|
||||
if i == 1 { return Color.{ r = 255, g = 164, b = 44, a = 255 }; }
|
||||
if i == 2 { return Color.{ r = 255, g = 240, b = 72, a = 255 }; }
|
||||
if i == 3 { return Color.{ r = 112, g = 250, b = 112, a = 255 }; }
|
||||
if i == 4 { return Color.{ r = 96, g = 192, b = 255, a = 255 }; }
|
||||
Color.{ r = 224, g = 124, b = 255, a = 255 }
|
||||
}
|
||||
|
||||
FX_POPUP_COLOR :: Color.{ r = 255, g = 255, b = 255, a = 255 };
|
||||
|
||||
Reference in New Issue
Block a user