Files
Sprimo/issues/issue6.md
2026-02-15 09:40:51 +08:00

2.2 KiB

Title

Adopt row-based 7x8 sprite animation semantics with backward-compatible state aliases.

Severity

P2

Summary

Standardize sprite.png packs so each of the 7 rows maps to semantic animation groups, while keeping runtime compatibility with existing state names (active, success, error). Also retune 8-frame animation tempo to a slower profile for readability.

Scope

  • assets/sprite-packs/{default,ferris,demogorgon}/manifest.json
  • crates/sprimo-runtime-core/src/lib.rs
  • crates/sprimo-app/src/main.rs
  • docs:
    • docs/SPRITE_PACK_SCHEMA.md
    • docs/TAURI_FRONTEND_DESIGN.md

Row Mapping Contract

  • row 1 (0..7): idle
  • row 2 (8..15): happy, love, alias active
  • row 3 (16..23): excited, celebrate, alias success
  • row 4 (24..31): sleepy, snoring
  • row 5 (32..39): working
  • row 6 (40..47): angry, surprised, shy, alias error
  • row 7 (48..55): dragging

One-shot defaults:

  • celebrate and success: one-shot
  • all others: loop

Implementation Notes

  1. Runtime state mapping updated:
  • Dragging now maps to "dragging" instead of "idle" in runtime-core and Bevy frontend.
  1. All bundled sprite-pack manifests now expose row-based names and compatibility aliases.
  2. Added runtime-core unit test to confirm SetState::Dragging selects "dragging".
  3. Updated schema/design docs to formalize the row convention.
  4. Retuned bundled pack fps profile:
  • loops: 1 fps
  • one-shot celebrate and success: 2 fps
  1. Tauri renderer-level pacing adjusted:
  • added global frame interval slowdown factor (x2) in Pixi ticker to further reduce perceived speed without changing manifest schema type (fps remains integer).
  1. Added persisted tauri slowdown factor control:
  • config key: frontend.tauri_animation_slowdown_factor (integer, range 1..20, default 3)
  • new tauri commands/events to read/update factor at runtime
  • settings window slider added for live tuning and persistence.

Verification

Commands Run

  • cargo test -p sprimo-runtime-core
  • cargo check -p sprimo-tauri
  • cargo check -p sprimo-app

Result

  • Status: Fix Implemented
  • Notes: packaged runtime visual verification pending.