feat: improve tractor beam visual with 2-layer glow and pulse animation

Replace the single static rectangle with a 2-layer beam (outer glow +
inner core) and sinusoidal opacity pulse. Add per-frame beam height
tracking to follow boss position. Include 8 unit tests for pure math
functions (beam height calculation, pulse alpha).

Refs: GAL-33
This commit is contained in:
Harald Hoyer 2026-05-06 19:35:16 +02:00
parent db061820b9
commit 52b0919d3f
4 changed files with 375 additions and 162 deletions

View file

@ -29,7 +29,7 @@ use player::{
};
use enemy::{
check_formation_complete, enemy_shoot, is_formation_complete, move_enemies, spawn_enemies,
trigger_attack_dives, boss_capture_attack,
trigger_attack_dives, boss_capture_attack, update_tractor_beam_visual,
};
use bullet::{
check_bullet_collisions, check_enemy_bullet_player_collisions, move_bullets,
@ -103,6 +103,7 @@ fn main() {
move_enemies,
enemy_shoot, // Consider run_if attacking state? (Handled internally for now)
boss_capture_attack, // New system for boss tractor beam
update_tractor_beam_visual,
)
.run_if(in_state(AppState::Playing)),
)