Commit Graph

12 Commits

Author SHA1 Message Date
Brian Fertig 18412e34f9 feat: enhance Advance Wars replay HP display and terrain rendering, add Tetris Attack host backgrounds
Advance Wars:
- Add HP override system (seed/set/clearHpOverride) so units show correct
  HP during enemy-turn replay until their battle animation plays
- Redesign river/road channel rendering with layered depth: rivers get
  deep channel, light core, and ripple crests; roads get concrete shoulders,
  asphalt, and dashed centre lines phase-locked to tile seams

Tetris Attack:
- Add character sprite sheet and per-host background images (beth, jerry,
  michael, steve, victor, klaxon)
- Declare hero background assets in manifest; scene falls back gracefully
  when art is missing
- Update characterSheet path in tetrisattack-artwork.json
2026-07-20 23:20:58 -06:00
Brian Fertig 07a16f295d fix: preserve unit sprites until their death animation plays in pre-resolved turns
Units doomed to die later in a pre-resolved enemy turn were being removed
from the board prematurely during sync, before their death animation could
play. Now:

- syncUnits only prunes dead views on actual army elimination, not on
  mid-turn CO powers that would kill units later in the same turn
- Added 'loaded'/'joined' event handlers to remove views when units merge
  into transports at the correct animated moment
- setUnitVisibility skips views whose units are already gone from state,
  preserving mid-replay sprites until their event fires
2026-07-20 17:40:53 -06:00
Brian Fertig 8e59c3b1bf feat: add day transition banner animation between turns
Import and play day banner animation when transitioning between turns
in Advance Wars game. The banner displays the current day number and
plays before allowing the next turn to begin, providing visual feedback
for day progression. Added safety check to cancel animation if scene
changes during playback.
2026-07-19 19:05:07 -06:00
Brian Fertig f96f2d491c feat(advancewars): add HP text display to battle animations and procedural cursor
- Add HP text readout to battle animations showing 1-10 scale HP
  (matching Advance Wars' classic HP display), with smooth tweening
- Extract cursor drawing into procedural texture, keeping it independent
  of the UI sheet
- Add advancewars-ui.png sprite sheet and update artwork config
2026-07-19 19:04:14 -06:00
Brian Fertig c0ad354458 feat(advance-wars): add contextual battle and movement sound effects
- Assign battle sounds to each unit type (gunfire, tank, cannon, missile, etc.)
  and play the appropriate sound on attack/counterattack in battle animations
- Add per-unit-type movement sounds (march for infantry/mech, engine-fast,
  engine-heavy) that loop during move animations and stop cleanly on completion
- Play jump sound during capture animation hops and activation sound on capture
- Play explosion sound when units are defeated in combat or crash
- Lighten unit tint relative to buildings so units remain visually distinct
  when standing on captured buildings
- Add new audio assets: battle sounds, march, 8bit-jump, and update battle-tank
2026-07-19 17:44:18 -06:00
Brian Fertig 427aacae6f feat(advancewars): show terrain backdrop in capture cut-in instead of plain rectangle
Replace the solid-color ground rectangle in the capture animation with a
proper terrain backdrop matching the ground the building sits on (plain,
shoal, etc.). Extract battleBgFrame, ensureBattleBgSheet, and add a new
groundBgFrame helper that maps building types to their underlying terrain,
avoiding duplicate building rendering since the building is already the
main squishing prop.
2026-07-19 16:31:33 -06:00
Brian Fertig a02e5a1913 feat(advancewars): add terrain-based battle scene backdrops
Introduce a new battle background spritesheet (advancewars-battlebg) that
displays context-appropriate backdrops behind each fighter during battle
cut-ins. The backdrop is selected based on the terrain/building type the
fighter is standing on (city, base, airport, port, plain, wood, mountain,
sea, reef, shoal, river, bridge, road, hq).

- Add battleBgSheet to artwork.json and asset manifest
- Implement playBattleAnim() backdrop system with terrain lookup
- Provide procedural fallback matching the real sheet's frame map for
  art-free playability
- Mirror defender backdrops to match mirrored defender sprites
- Document the 14-frame sheet spec in sprites.md (256×256 cells, 5 cols)
2026-07-19 16:22:21 -06:00
Brian Fertig 138b078dd2 feat: add pulsing animation to attack target tiles in Advance Wars
Introduce a breathing pulse effect (red fill + white border) for attack
target tiles to draw the player's eye when in "must pick a target" fire
mode. The previous static tint is preserved for the indirect-range preview
shown while a unit is merely selected.

- showAttackTiles now accepts optional { pulse: true } parameter
- Added tween-based animation with Sine.easeInOut breathing effect
- Properly clean up pulse tween in destroy() and clearOverlays()
- Updated AdvanceWarsGame to pass pulse: true when showing targets
2026-07-19 16:21:13 -06:00
Brian Fertig a0b3b5f063 feat(advancewars): add property capture cut-in animation with building squish
Introduce a cinematic capture animation when a unit captures a property:
a small window shows the capturing unit hopping atop the building, which
then squishes down to reflect remaining capture points (or pops back up
in the new owner's color if the capture completes).

- Add AdvanceWarsCaptureAnim.js with the full cut-in animation sequence
- Display remaining capture-points as a strength number on partially-
  captured buildings, tinted toward the owner's color
- Add `before` field to capturing events so the animation knows the
  starting HP
- Support partial unit sync so units are revealed action-by-action
  during turn replay instead of snapping to end-of-turn positions
- Add depth bias so units always render above buildings on the same tile
2026-07-19 13:55:48 -06:00
Brian Fertig fcc74bef28 feat(advancewars): improve battle animations and depth sorting
- Add new unit sprite sheet (advancewars-units.png/psd)
- Slow down all battle animations for better readability:
  - Attack, flash, death, and delay timings increased
  - Unit movement animation duration increased (70→180ms)
  - Explosion animation slowed down
  - Post-turn wait time increased (140→300ms)
- Merge props and units into shared Y-sorted "actors" depth band
  - Buildings and units now sort correctly by screen row
  - Move/attack overlays remain below actors for proper decal rendering
2026-07-19 11:48:30 -06:00
Brian Fertig bf71bfc3c7 feat(advance-wars): add unit progression system with mission-based unlocks
Introduce a unit unlock system that progressively grants access to new
unit types as the player advances through the campaign. Each mission
specifies which units each army can build, starting with basic units
and unlocking MD Tanks, Rockets, Anti-Air, Missiles, Lander, Cruiser,
and eventually the full armory.

- Add unit sprite sheet (advancewars-units.png) and artwork config
- Implement unlock validation in production and build options
- Add tutorial dialogue from Ethel explaining new mechanics and units
- Balance AI difficulty by reducing skill levels and aggression
- Adjust capture weights for more balanced AI behavior
- Add introductory city capture mechanic in first mission
- Update verification tool to support unlockedUnits
2026-07-19 10:55:18 -06:00
Brian Fertig 4a8b78c538 feat: add Advance Wars turn-based tactics game
Implement a full Advance Wars clone with campaign (20 missions) and
War Room skirmish mode. Includes:

- Headless game engine (AdvanceWarsLogic) with complete AW1 rules:
  terrain movement, combat, capture, production, transports, fuel,
  fog of war, CO powers, and multiple objective types
- AI opponent (skill 1-5, aggression/capture tuning) with BFS
  pathfinding, threat evaluation, production counter-tables, and
  fog trap awareness
- Canvas-rendered map view with procedural stand-ins that can be
  replaced by drop-in painted spritesheets (no code changes)
- 11 playable COs with unique day-to-day modifiers and powers
  (Hyper Repair, Lightning Strike, Tsunami, Meteor Strike, etc.)
- Campaign briefings with typewriter text and opponent portraits
- Comprehensive headless verification suite (rules, combat formula,
  pathfinding, economy, capture, fog, CO powers, soak tests)
- New assets: terrain/building sheets, adventure music tracks,
  game icon frame 86
- Refactor SpireClimb and SWDBG to use the shared soundtrack service
2026-07-19 09:43:58 -06:00