feat(gameplay): add scripted flight paths for special stage enemies

Add Lissajous and cubic Bezier path types for enemies on special stages
(every 3rd level). Path-following enemies spawn with ScriptedPath marker
and FollowingPath state, move along parametric curves, and despawn when
their path ends off-screen.

Key changes:
- New flight_paths module with pure path evaluation (Lissajous + Bezier)
- ScriptedPath marker component and FollowingPath EnemyState variant
- flight_patterns field on StageConfigurations for composable path data
- Special stage spawn branch in spawn_enemies() with stagger delays
- Path-following movement in move_enemies() with delay gating and despawn
- Formation complete early return for special stages
- Without<ScriptedPath> filter on attacking_query to prevent double-processing
- 13 new unit tests for path evaluation and data contracts

Refs: GAL-40
This commit is contained in:
Harald Hoyer 2026-05-07 19:54:18 +02:00
parent 459e8a2353
commit a0863b290c
9 changed files with 526 additions and 16 deletions

View file

@ -1,6 +1,8 @@
use bevy::prelude::*;
use crate::components::{Bullet, Enemy, EnemyBullet, GameOverUI, RestartMessage, StartButton, StartMenuUI};
use crate::components::{
Bullet, Enemy, EnemyBullet, GameOverUI, RestartMessage, StartButton, StartMenuUI,
};
use crate::resources::RestartPressed;
#[derive(Clone, Eq, PartialEq, Debug, Hash, Default, States)]