- battleStateSelectionAiDecide: AI-controlled fighters now actually
queue a basic attack against the first living enemy instead of doing
nothing every round.
- battleStateEndingInit: disposes the battle and switches back to
SCENE_TYPE_OVERWORLD instead of leaving the game stuck in the battle
scene forever.
- cutsceneSystemNext now pops each finished item off the front of the
running cutscene (cutsceneRemoveFront) instead of leaving it in place
forever, so a long-running cutscene (many battle rounds splicing
items in repeatedly) no longer grows scene->items unboundedly.
- cutsceneGoTo reworked to match: since consumed items are evicted, a
marker behind the current position can't be found in the live queue
anymore, so it now re-parses the cutscene fresh from its source file
(cutsceneLoadParse, into a persistent scratch buffer, not the stack)
and replaces the live queue with marker-onward from that fresh parse.
Only supported when the running cutscene is the one
cutsceneSystemLoad/cutsceneCutsceneResolve populated.
- Fixed a real bug this surfaced: cutsceneSystemPrepare unconditionally
cleared loadedFile, which ran *after* cutsceneCutsceneResolve had
just stamped it but *before* the cutscene started - wiping it out
immediately and breaking cutsceneGoTo for any cutscene entered via a
CUTSCENE item or cutsceneCutsceneResolve (e.g. the main menu's
NEW_GAME/OPTIONS/QUIT navigation). Now only cleared when switching
away from loadedScene entirely.
- Added cutsceneLoadParse, the shared "lock asset, require loaded,
parse items, unlock" sequence, replacing four near-identical copies
across cutsceneSystemLoad/cutsceneCutsceneResolve/
cutsceneInsertResolveAndSplice/battleStateExecutingInit. Each call
site handles its own fatal-error display; cutsceneLoadParse itself
just propagates.
- Added test_cutscene.c (cutsceneRemoveFront) and a regression test for
the loadedFile bug. Writing the zero-count RemoveFront test caught a
real self-move bug (count == 0 passed dest == src into memoryMove).
Co-Authored-By: Claude Sonnet 5 <[email protected]>
- keyframeGetValue now returns the last keyframe's value for times at or
beyond it, fixes a missing util/math.h include, and asserts keyframes are
sorted by time; adds test/animation/test_keyframe.c
- Adds mainmenu scene/UI and a battle HUD UI frame
- Adds save autosave-related fields and battle scene tweaks
- Adds headless test coverage for cutscenes, entities, and map areas