# TODO **1. Core Gameplay Loop & State Management** * [x] **GAL-1: Player Lives** * [x] GAL-2: Add a `PlayerLives` resource. * [x] GAL-3: Decrement lives on collision. * [x] GAL-4: Implement player destruction and respawn with temporary invincibility. * [x] **GAL-5: Game Over State** * [x] GAL-6: Use Bevy's `States` (`Playing`, `GameOver`). * [x] GAL-7: Transition to `GameOver` when lives reach zero. * [x] GAL-8: Display a "Game Over" message. * [x] **GAL-9: Scoring** * [x] GAL-10: Add a `Score` resource. * [x] GAL-11: Increment score when an enemy is hit. * [x] **GAL-12: Levels/Stages** * [x] GAL-13: Add `CurrentStage` and `StageConfigurations` resources. * [x] GAL-14: Define criteria for clearing a stage. * [x] GAL-15: Advance to the next stage with increasing difficulty. **2. Enemy Behavior - Formations & Attack Patterns** * [x] **GAL-16: Enemy Formations** * [x] GAL-17: Define target positions for formations (`FormationLayout`). * [x] GAL-18: Enemies have an `Entering` state to fly to their position. * [x] GAL-19: Enemies have an `InFormation` state. * [x] **GAL-20: Enemy Attack Dives** * [x] GAL-21: Enemies have an `Attacking` state with different `AttackPattern`s (Swoop, Direct, Kamikaze). * [x] GAL-22: Periodically trigger random enemies to start an attack dive. * [x] GAL-23: Enemies fire bullets during their dives. * [x] GAL-24: Enemies are despawned when they fly off-screen after an attack. * [ ] **GAL-25: Enemy Variety** * [x] GAL-26: `EnemyType` enum (`Grunt`, `Boss`). * [x] **GAL-27: Different behaviors, points, and colors based on type.** * [x] Colors differ (Grunt red, Boss purple) — `enemy.rs:80-83` * [x] Behaviors differ (Boss has `CaptureBeam`, distinct SwoopDive) — `enemy.rs:254-318` * [x] Points: Boss awards 300 points (3x Grunt) — `bullet.rs:13-14` * Completed on branch GAL-27, commit 98b74a7 **3. Advanced Galaga Mechanics** * [ ] **GAL-28: Boss Galaga & Capture Beam** * [x] GAL-29: Create a "Boss" enemy type. * [x] GAL-30: Implement the tractor beam attack logic (`boss_capture_attack` system). * [x] GAL-31: Player has a `Captured` component when hit by the beam. * [x] GAL-32: Boss has a `ReturningWithCaptive` state to go back to the formation. * [x] GAL-33: Improve the tractor beam visual effect (currently a simple rectangle). * Completed on branch gal-33-improve-tractor-beam-visual, commit 52b0919 — 2-layer glow beam with pulse animation, 8 unit tests * [ ] **GAL-34: Dual Fighter (Rescuing Captured Ship)** * [ ] GAL-35: Allow the player to shoot a Boss that is holding a captured ship. * [ ] GAL-36: Implement the logic to free the captured ship upon shooting the Boss. * [ ] GAL-37: Implement the dual fighter mode (controlling two ships, firing two bullets). * [ ] **GAL-38: Challenging Stages** * [x] GAL-39: Implement a special stage type (e.g., every 3-4 levels). * **Comment:** 2026-05-06 — Status set to In Progress. * **Comment:** 2026-05-06 — Branch: GAL-39, Commit: 9e6d538 — Special stage type implemented: every 3rd level has no enemy attacks. * [ ] GAL-40: Design and implement intricate flight patterns for enemies that do not shoot. * [ ] GAL-41: Award bonus points for destroying all enemies in the stage. **4. Polish and User Interface** * [ ] **GAL-42: Visuals** * [ ] GAL-43: Replace placeholder geometric shapes with actual sprites. * [x] GAL-44: Add explosion animations/effects. * **Branch:** `gal-44-add-explosion-effects` * **Comment:** 2026-05-06 — Implementation complete with commit `2ff561e` * [x] GAL-45: Implement a scrolling starfield background. * [ ] **GAL-46: Audio** * [ ] GAL-47: Integrate `bevy_audio`. * [ ] GAL-48: Add sound effects (shooting, explosions, player death, tractor beam, etc.). * [ ] GAL-49: Add background music. * [ ] **GAL-50: UI** * [x] GAL-51: Display Score, Lives, and Stage in the window title. * [ ] GAL-52: Display Score, Lives, and Stage on the screen using `bevy_ui`. * [ ] GAL-53: Implement a High Score system (saving/loading). * [x] GAL-54: Create a Start Menu state with a "Start Game" button. * [ ] GAL-55: Add a "Press R to Restart" message to the `GameOver` screen and implement restart logic.