Commit Graph

5 Commits

Author SHA1 Message Date
swipelab
c2548aa854 P6.2: score popups & match FX (sx, iOS sim)
Add a purely-visual, transient juice layer over a committed move — score
popups + a tinted particle/flash burst at the clears — with no change to the
model, score, moves, or settled board.

- assets/fx/particle.png: key the painted transparency checkerboard out of the
  provided particle art to real alpha (8-connected border flood fill +
  smooth luminance falloff that preserves the soft glow), downscaled to a
  256x256 RGBA white sparkle. tools/key_particle.sx is the reproducible tool.
- board_fx.sx: BoardFx (live particle bursts + one "+points" popup) and
  BoardFxAssets. The engine image path samples texture*white (no draw-time
  tint), so the white sprite is tinted per gem colour at LOAD time into one
  texture per colour; a burst animates by scale (grow -> shrink) and the soft
  texture edges carry the fade. Combos (cascade depth > 1) burst bigger and the
  popup is larger + gold. All driven by delta_time and self-pruning.
- board_anim.sx: AnimMove carries the model's cascade.awarded so the popup
  shows the real payout without re-deriving any scoring in the view.
- board_view.sx / main.sx: wire BoardFx + the tinted assets, tick each frame,
  spawn on a legal commit, and render bursts (clipped to the grid) under the
  popups (drawn on top). Input-lock (BoardAnim.active) is untouched; FX never
  gate input and may outlast the move slightly before vanishing.

Goldens (iPhone-17-class sim, iOS 26): p6_fx.png (combo: gold "+480" + bursts
mid-cascade), p6_fx_match.png (single match: "+30" + red burst), p6_fx_after.png
(settled board, FX fully gone). Gate: ios-sim build links, 15/15 logic tests
green (scoring/cascade goldens unchanged).
2026-06-05 02:18:55 +03:00
swipelab
0f71baa21a P4.2: fix font asset file modes to 0644 (non-executable) 2026-06-04 23:00:41 +03:00
swipelab
e13b3d3c61 P4.2: integrate board background, cell tile, and HUD font
- assets/board/background.png: full-screen 863x1822 RGB gradient (opaque,
  exact 9:19), re-encoded from the provided source.
- assets/board/cell.png: 128x128 RGBA rounded glass tile. The painted
  gray/white transparency checkerboard is keyed to real alpha via an
  8-connected flood fill from the border, using a low-saturation predicate
  (checker spread<=12, panel is bluish spread>=20) so the rounded panel is
  preserved; the clean RGBA is then downscaled 1254->128 with LANCZOS.
- assets/fonts/default.ttf: Lato Regular, SIL Open Font License 1.1
  (tyPoland Lukasz Dziedzic, Reserved Font Name "Lato"); OFL.txt shipped
  alongside per the license.

All three bundle into the ios-sim M3te.app build and decode cleanly.
2026-06-04 22:47:36 +03:00
swipelab
8e5781fabe P4.1: integrate gem sprite sheet (768x128 RGBA, index order R,O,Y,G,B,P)
Key the painted checkerboard out of the provided gem art via an
edge-connected flood fill (8-conn, light+desaturated predicate) so the
gems' interior specular highlights are preserved, then slice the 6 gems
by alpha bbox, premultiply-resize each to fit 108x108, and center one
per 128x128 transparent cell in index order (red, orange, yellow,
green, blue, purple).
2026-06-04 22:21:54 +03:00
swipelab
05fae4d78f P0.1: scaffold m3te sx project from the proven game structure
Stand up build.sx (macos + ios/ios-sim targets, bundle id
co.swipelab.m3te, output sx-out/ios/M3te.app, assets dir) and a minimal
main.sx that brings up the platform (UIKit+Metal on iOS, SDL3+GL on
macOS) and renders a solid-clear frame. Add assets/ and goldens/
directories and a .gitignore for build artifacts.

Modeled on game/build.sx and game/main.sx; modules resolve from the
compiler binary with no -L flag.
2026-06-04 18:08:54 +03:00