diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 09597e2..0000000 --- a/TODO.md +++ /dev/null @@ -1,77 +0,0 @@ -# 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. diff --git a/TODO/GAL-1.md b/TODO/GAL-1.md new file mode 100644 index 0000000..3362b90 --- /dev/null +++ b/TODO/GAL-1.md @@ -0,0 +1,17 @@ +--- +id: GAL-1 +title: Player Lives +status: Done +parent: null +labels: [gameplay, core-loop] +--- + +# GAL-1: Player Lives + +Player lives system: lives counter, decrement on hit, destruction and respawn flow. + +## Sub-issues + +- [x] [GAL-2](GAL-2.md) — Add a `PlayerLives` resource. +- [x] [GAL-3](GAL-3.md) — Decrement lives on collision. +- [x] [GAL-4](GAL-4.md) — Implement player destruction and respawn with temporary invincibility. diff --git a/TODO/GAL-10.md b/TODO/GAL-10.md new file mode 100644 index 0000000..379ab97 --- /dev/null +++ b/TODO/GAL-10.md @@ -0,0 +1,11 @@ +--- +id: GAL-10 +title: Add a Score resource +status: Done +parent: GAL-9 +labels: [gameplay, core-loop] +--- + +# GAL-10: Add a `Score` resource + +Add a `Score` resource. diff --git a/TODO/GAL-11.md b/TODO/GAL-11.md new file mode 100644 index 0000000..086ad5c --- /dev/null +++ b/TODO/GAL-11.md @@ -0,0 +1,11 @@ +--- +id: GAL-11 +title: Increment score when an enemy is hit +status: Done +parent: GAL-9 +labels: [gameplay, core-loop] +--- + +# GAL-11: Increment score when an enemy is hit + +Increment score when an enemy is hit. diff --git a/TODO/GAL-12.md b/TODO/GAL-12.md new file mode 100644 index 0000000..2f5adf8 --- /dev/null +++ b/TODO/GAL-12.md @@ -0,0 +1,17 @@ +--- +id: GAL-12 +title: Levels/Stages +status: Done +parent: null +labels: [gameplay, core-loop] +--- + +# GAL-12: Levels/Stages + +Stage progression with increasing difficulty driven by configuration resources. + +## Sub-issues + +- [x] [GAL-13](GAL-13.md) — Add `CurrentStage` and `StageConfigurations` resources. +- [x] [GAL-14](GAL-14.md) — Define criteria for clearing a stage. +- [x] [GAL-15](GAL-15.md) — Advance to the next stage with increasing difficulty. diff --git a/TODO/GAL-13.md b/TODO/GAL-13.md new file mode 100644 index 0000000..f94e191 --- /dev/null +++ b/TODO/GAL-13.md @@ -0,0 +1,11 @@ +--- +id: GAL-13 +title: Add CurrentStage and StageConfigurations resources +status: Done +parent: GAL-12 +labels: [gameplay, core-loop] +--- + +# GAL-13: Add `CurrentStage` and `StageConfigurations` resources + +Add `CurrentStage` and `StageConfigurations` resources. diff --git a/TODO/GAL-14.md b/TODO/GAL-14.md new file mode 100644 index 0000000..823ed55 --- /dev/null +++ b/TODO/GAL-14.md @@ -0,0 +1,11 @@ +--- +id: GAL-14 +title: Define criteria for clearing a stage +status: Done +parent: GAL-12 +labels: [gameplay, core-loop] +--- + +# GAL-14: Define criteria for clearing a stage + +Define criteria for clearing a stage. diff --git a/TODO/GAL-15.md b/TODO/GAL-15.md new file mode 100644 index 0000000..9c3b2ec --- /dev/null +++ b/TODO/GAL-15.md @@ -0,0 +1,11 @@ +--- +id: GAL-15 +title: Advance to the next stage with increasing difficulty +status: Done +parent: GAL-12 +labels: [gameplay, core-loop] +--- + +# GAL-15: Advance to the next stage with increasing difficulty + +Advance to the next stage with increasing difficulty. diff --git a/TODO/GAL-16.md b/TODO/GAL-16.md new file mode 100644 index 0000000..fb7b806 --- /dev/null +++ b/TODO/GAL-16.md @@ -0,0 +1,17 @@ +--- +id: GAL-16 +title: Enemy Formations +status: Done +parent: null +labels: [enemy, gameplay] +--- + +# GAL-16: Enemy Formations + +Enemies fly into target positions and hold formation. + +## Sub-issues + +- [x] [GAL-17](GAL-17.md) — Define target positions for formations (`FormationLayout`). +- [x] [GAL-18](GAL-18.md) — Enemies have an `Entering` state to fly to their position. +- [x] [GAL-19](GAL-19.md) — Enemies have an `InFormation` state. diff --git a/TODO/GAL-17.md b/TODO/GAL-17.md new file mode 100644 index 0000000..763fb9c --- /dev/null +++ b/TODO/GAL-17.md @@ -0,0 +1,11 @@ +--- +id: GAL-17 +title: Define target positions for formations (FormationLayout) +status: Done +parent: GAL-16 +labels: [enemy, gameplay] +--- + +# GAL-17: Define target positions for formations (`FormationLayout`) + +Define target positions for formations (`FormationLayout`). diff --git a/TODO/GAL-18.md b/TODO/GAL-18.md new file mode 100644 index 0000000..9e48837 --- /dev/null +++ b/TODO/GAL-18.md @@ -0,0 +1,11 @@ +--- +id: GAL-18 +title: Enemies have an Entering state to fly to their position +status: Done +parent: GAL-16 +labels: [enemy, gameplay] +--- + +# GAL-18: Enemies have an `Entering` state to fly to their position + +Enemies have an `Entering` state to fly to their position. diff --git a/TODO/GAL-19.md b/TODO/GAL-19.md new file mode 100644 index 0000000..27d6f05 --- /dev/null +++ b/TODO/GAL-19.md @@ -0,0 +1,11 @@ +--- +id: GAL-19 +title: Enemies have an InFormation state +status: Done +parent: GAL-16 +labels: [enemy, gameplay] +--- + +# GAL-19: Enemies have an `InFormation` state + +Enemies have an `InFormation` state. diff --git a/TODO/GAL-2.md b/TODO/GAL-2.md new file mode 100644 index 0000000..01671b3 --- /dev/null +++ b/TODO/GAL-2.md @@ -0,0 +1,11 @@ +--- +id: GAL-2 +title: Add a PlayerLives resource +status: Done +parent: GAL-1 +labels: [gameplay, core-loop] +--- + +# GAL-2: Add a `PlayerLives` resource + +Add a `PlayerLives` resource. diff --git a/TODO/GAL-20.md b/TODO/GAL-20.md new file mode 100644 index 0000000..64df870 --- /dev/null +++ b/TODO/GAL-20.md @@ -0,0 +1,18 @@ +--- +id: GAL-20 +title: Enemy Attack Dives +status: Done +parent: null +labels: [enemy, gameplay] +--- + +# GAL-20: Enemy Attack Dives + +Enemies leave formation to dive at the player along varied attack patterns. + +## Sub-issues + +- [x] [GAL-21](GAL-21.md) — Enemies have an `Attacking` state with different `AttackPattern`s (Swoop, Direct, Kamikaze). +- [x] [GAL-22](GAL-22.md) — Periodically trigger random enemies to start an attack dive. +- [x] [GAL-23](GAL-23.md) — Enemies fire bullets during their dives. +- [x] [GAL-24](GAL-24.md) — Enemies are despawned when they fly off-screen after an attack. diff --git a/TODO/GAL-21.md b/TODO/GAL-21.md new file mode 100644 index 0000000..8650ee7 --- /dev/null +++ b/TODO/GAL-21.md @@ -0,0 +1,11 @@ +--- +id: GAL-21 +title: Attacking state with different AttackPatterns +status: Done +parent: GAL-20 +labels: [enemy, gameplay] +--- + +# GAL-21: Enemies have an `Attacking` state with different `AttackPattern`s + +Enemies have an `Attacking` state with different `AttackPattern`s (Swoop, Direct, Kamikaze). diff --git a/TODO/GAL-22.md b/TODO/GAL-22.md new file mode 100644 index 0000000..4b916ff --- /dev/null +++ b/TODO/GAL-22.md @@ -0,0 +1,11 @@ +--- +id: GAL-22 +title: Periodically trigger random enemies to start an attack dive +status: Done +parent: GAL-20 +labels: [enemy, gameplay] +--- + +# GAL-22: Periodically trigger random enemies to start an attack dive + +Periodically trigger random enemies to start an attack dive. diff --git a/TODO/GAL-23.md b/TODO/GAL-23.md new file mode 100644 index 0000000..7515aee --- /dev/null +++ b/TODO/GAL-23.md @@ -0,0 +1,11 @@ +--- +id: GAL-23 +title: Enemies fire bullets during their dives +status: Done +parent: GAL-20 +labels: [enemy, gameplay] +--- + +# GAL-23: Enemies fire bullets during their dives + +Enemies fire bullets during their dives. diff --git a/TODO/GAL-24.md b/TODO/GAL-24.md new file mode 100644 index 0000000..dab9738 --- /dev/null +++ b/TODO/GAL-24.md @@ -0,0 +1,11 @@ +--- +id: GAL-24 +title: Despawn enemies when they fly off-screen after an attack +status: Done +parent: GAL-20 +labels: [enemy, gameplay] +--- + +# GAL-24: Enemies are despawned when they fly off-screen after an attack + +Enemies are despawned when they fly off-screen after an attack. diff --git a/TODO/GAL-25.md b/TODO/GAL-25.md new file mode 100644 index 0000000..142a45d --- /dev/null +++ b/TODO/GAL-25.md @@ -0,0 +1,16 @@ +--- +id: GAL-25 +title: Enemy Variety +status: In Progress +parent: null +labels: [enemy, gameplay] +--- + +# GAL-25: Enemy Variety + +Different enemy types with distinct visuals, behaviors, and point values. + +## Sub-issues + +- [x] [GAL-26](GAL-26.md) — `EnemyType` enum (`Grunt`, `Boss`). +- [x] [GAL-27](GAL-27.md) — Different behaviors, points, and colors based on type. diff --git a/TODO/GAL-26.md b/TODO/GAL-26.md new file mode 100644 index 0000000..e665d17 --- /dev/null +++ b/TODO/GAL-26.md @@ -0,0 +1,11 @@ +--- +id: GAL-26 +title: EnemyType enum (Grunt, Boss) +status: Done +parent: GAL-25 +labels: [enemy, gameplay] +--- + +# GAL-26: `EnemyType` enum (`Grunt`, `Boss`) + +`EnemyType` enum (`Grunt`, `Boss`). diff --git a/TODO/GAL-27.md b/TODO/GAL-27.md new file mode 100644 index 0000000..8d489de --- /dev/null +++ b/TODO/GAL-27.md @@ -0,0 +1,21 @@ +--- +id: GAL-27 +title: Different behaviors, points, and colors based on type +status: Done +parent: GAL-25 +labels: [enemy, gameplay] +--- + +# GAL-27: Different behaviors, points, and colors based on type + +Bosses are visually, behaviorally, and economically distinct from Grunts. + +## Acceptance criteria + +- [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` + +## Comments + +- Completed on branch GAL-27, commit 98b74a7. diff --git a/TODO/GAL-28.md b/TODO/GAL-28.md new file mode 100644 index 0000000..43967a9 --- /dev/null +++ b/TODO/GAL-28.md @@ -0,0 +1,19 @@ +--- +id: GAL-28 +title: Boss Galaga & Capture Beam +status: In Progress +parent: null +labels: [enemy, advanced-mechanics] +--- + +# GAL-28: Boss Galaga & Capture Beam + +Boss enemy with tractor beam capture mechanic and return-to-formation behavior. + +## Sub-issues + +- [x] [GAL-29](GAL-29.md) — Create a "Boss" enemy type. +- [x] [GAL-30](GAL-30.md) — Implement the tractor beam attack logic (`boss_capture_attack` system). +- [x] [GAL-31](GAL-31.md) — Player has a `Captured` component when hit by the beam. +- [x] [GAL-32](GAL-32.md) — Boss has a `ReturningWithCaptive` state to go back to the formation. +- [x] [GAL-33](GAL-33.md) — Improve the tractor beam visual effect (currently a simple rectangle). diff --git a/TODO/GAL-29.md b/TODO/GAL-29.md new file mode 100644 index 0000000..2fd3011 --- /dev/null +++ b/TODO/GAL-29.md @@ -0,0 +1,11 @@ +--- +id: GAL-29 +title: Create a Boss enemy type +status: Done +parent: GAL-28 +labels: [enemy, advanced-mechanics] +--- + +# GAL-29: Create a "Boss" enemy type + +Create a "Boss" enemy type. diff --git a/TODO/GAL-3.md b/TODO/GAL-3.md new file mode 100644 index 0000000..71bb9a1 --- /dev/null +++ b/TODO/GAL-3.md @@ -0,0 +1,11 @@ +--- +id: GAL-3 +title: Decrement lives on collision +status: Done +parent: GAL-1 +labels: [gameplay, core-loop] +--- + +# GAL-3: Decrement lives on collision + +Decrement lives on collision. diff --git a/TODO/GAL-30.md b/TODO/GAL-30.md new file mode 100644 index 0000000..8ae16e0 --- /dev/null +++ b/TODO/GAL-30.md @@ -0,0 +1,11 @@ +--- +id: GAL-30 +title: Implement the tractor beam attack logic +status: Done +parent: GAL-28 +labels: [enemy, advanced-mechanics] +--- + +# GAL-30: Implement the tractor beam attack logic (`boss_capture_attack` system) + +Implement the tractor beam attack logic (`boss_capture_attack` system). diff --git a/TODO/GAL-31.md b/TODO/GAL-31.md new file mode 100644 index 0000000..e41fd68 --- /dev/null +++ b/TODO/GAL-31.md @@ -0,0 +1,11 @@ +--- +id: GAL-31 +title: Player has a Captured component when hit by the beam +status: Done +parent: GAL-28 +labels: [enemy, advanced-mechanics] +--- + +# GAL-31: Player has a `Captured` component when hit by the beam + +Player has a `Captured` component when hit by the beam. diff --git a/TODO/GAL-32.md b/TODO/GAL-32.md new file mode 100644 index 0000000..3fb69db --- /dev/null +++ b/TODO/GAL-32.md @@ -0,0 +1,11 @@ +--- +id: GAL-32 +title: Boss has a ReturningWithCaptive state +status: Done +parent: GAL-28 +labels: [enemy, advanced-mechanics] +--- + +# GAL-32: Boss has a `ReturningWithCaptive` state to go back to the formation + +Boss has a `ReturningWithCaptive` state to go back to the formation. diff --git a/TODO/GAL-33.md b/TODO/GAL-33.md new file mode 100644 index 0000000..76f4f74 --- /dev/null +++ b/TODO/GAL-33.md @@ -0,0 +1,15 @@ +--- +id: GAL-33 +title: Improve the tractor beam visual effect +status: Done +parent: GAL-28 +labels: [enemy, advanced-mechanics, visuals] +--- + +# GAL-33: Improve the tractor beam visual effect + +Improve the tractor beam visual effect (currently a simple rectangle). + +## Comments + +- Completed on branch `gal-33-improve-tractor-beam-visual`, commit 52b0919 — 2-layer glow beam with pulse animation, 8 unit tests. diff --git a/TODO/GAL-34.md b/TODO/GAL-34.md new file mode 100644 index 0000000..9f9a6c1 --- /dev/null +++ b/TODO/GAL-34.md @@ -0,0 +1,17 @@ +--- +id: GAL-34 +title: Dual Fighter (Rescuing Captured Ship) +status: Todo +parent: null +labels: [gameplay, advanced-mechanics] +--- + +# GAL-34: Dual Fighter (Rescuing Captured Ship) + +Allow the player to rescue a captured ship and operate in dual-fighter mode. + +## Sub-issues + +- [ ] [GAL-35](GAL-35.md) — Allow the player to shoot a Boss that is holding a captured ship. +- [ ] [GAL-36](GAL-36.md) — Implement the logic to free the captured ship upon shooting the Boss. +- [ ] [GAL-37](GAL-37.md) — Implement the dual fighter mode (controlling two ships, firing two bullets). diff --git a/TODO/GAL-35.md b/TODO/GAL-35.md new file mode 100644 index 0000000..9323e40 --- /dev/null +++ b/TODO/GAL-35.md @@ -0,0 +1,11 @@ +--- +id: GAL-35 +title: Allow the player to shoot a Boss holding a captured ship +status: Todo +parent: GAL-34 +labels: [gameplay, advanced-mechanics] +--- + +# GAL-35: Allow the player to shoot a Boss that is holding a captured ship + +Allow the player to shoot a Boss that is holding a captured ship. diff --git a/TODO/GAL-36.md b/TODO/GAL-36.md new file mode 100644 index 0000000..af50d2e --- /dev/null +++ b/TODO/GAL-36.md @@ -0,0 +1,11 @@ +--- +id: GAL-36 +title: Free the captured ship upon shooting the Boss +status: Todo +parent: GAL-34 +labels: [gameplay, advanced-mechanics] +--- + +# GAL-36: Implement the logic to free the captured ship upon shooting the Boss + +Implement the logic to free the captured ship upon shooting the Boss. diff --git a/TODO/GAL-37.md b/TODO/GAL-37.md new file mode 100644 index 0000000..c972530 --- /dev/null +++ b/TODO/GAL-37.md @@ -0,0 +1,11 @@ +--- +id: GAL-37 +title: Implement the dual fighter mode +status: Todo +parent: GAL-34 +labels: [gameplay, advanced-mechanics] +--- + +# GAL-37: Implement the dual fighter mode (controlling two ships, firing two bullets) + +Implement the dual fighter mode (controlling two ships, firing two bullets). diff --git a/TODO/GAL-38.md b/TODO/GAL-38.md new file mode 100644 index 0000000..6c999c8 --- /dev/null +++ b/TODO/GAL-38.md @@ -0,0 +1,17 @@ +--- +id: GAL-38 +title: Challenging Stages +status: In Progress +parent: null +labels: [gameplay, advanced-mechanics] +--- + +# GAL-38: Challenging Stages + +Special stages every few levels with intricate non-shooting flight patterns and bonus rewards. + +## Sub-issues + +- [x] [GAL-39](GAL-39.md) — Implement a special stage type (e.g., every 3-4 levels). +- [ ] [GAL-40](GAL-40.md) — Design and implement intricate flight patterns for enemies that do not shoot. +- [ ] [GAL-41](GAL-41.md) — Award bonus points for destroying all enemies in the stage. diff --git a/TODO/GAL-39.md b/TODO/GAL-39.md new file mode 100644 index 0000000..19255ab --- /dev/null +++ b/TODO/GAL-39.md @@ -0,0 +1,16 @@ +--- +id: GAL-39 +title: Implement a special stage type +status: Done +parent: GAL-38 +labels: [gameplay, advanced-mechanics] +--- + +# GAL-39: Implement a special stage type (e.g., every 3-4 levels) + +Implement a special stage type (e.g., every 3-4 levels). + +## Comments + +- 2026-05-06 — Status set to In Progress. +- 2026-05-06 — Branch `GAL-39`, commit 9e6d538 — every 3rd level has no enemy attacks. diff --git a/TODO/GAL-4.md b/TODO/GAL-4.md new file mode 100644 index 0000000..26ac7a7 --- /dev/null +++ b/TODO/GAL-4.md @@ -0,0 +1,11 @@ +--- +id: GAL-4 +title: Player destruction and respawn with temporary invincibility +status: Done +parent: GAL-1 +labels: [gameplay, core-loop] +--- + +# GAL-4: Implement player destruction and respawn with temporary invincibility + +Implement player destruction and respawn with temporary invincibility. diff --git a/TODO/GAL-40.md b/TODO/GAL-40.md new file mode 100644 index 0000000..f820d05 --- /dev/null +++ b/TODO/GAL-40.md @@ -0,0 +1,11 @@ +--- +id: GAL-40 +title: Design intricate flight patterns for non-shooting enemies +status: Todo +parent: GAL-38 +labels: [gameplay, advanced-mechanics] +--- + +# GAL-40: Design and implement intricate flight patterns for enemies that do not shoot + +Design and implement intricate flight patterns for enemies that do not shoot. diff --git a/TODO/GAL-41.md b/TODO/GAL-41.md new file mode 100644 index 0000000..3ee559b --- /dev/null +++ b/TODO/GAL-41.md @@ -0,0 +1,11 @@ +--- +id: GAL-41 +title: Award bonus points for clearing the special stage +status: Todo +parent: GAL-38 +labels: [gameplay, advanced-mechanics] +--- + +# GAL-41: Award bonus points for destroying all enemies in the stage + +Award bonus points for destroying all enemies in the stage. diff --git a/TODO/GAL-42.md b/TODO/GAL-42.md new file mode 100644 index 0000000..0523c9f --- /dev/null +++ b/TODO/GAL-42.md @@ -0,0 +1,17 @@ +--- +id: GAL-42 +title: Visuals +status: In Progress +parent: null +labels: [polish, visuals] +--- + +# GAL-42: Visuals + +Replace placeholder geometry with sprites, add explosions, and add a starfield background. + +## Sub-issues + +- [ ] [GAL-43](GAL-43.md) — Replace placeholder geometric shapes with actual sprites. +- [x] [GAL-44](GAL-44.md) — Add explosion animations/effects. +- [x] [GAL-45](GAL-45.md) — Implement a scrolling starfield background. diff --git a/TODO/GAL-43.md b/TODO/GAL-43.md new file mode 100644 index 0000000..07e7a9a --- /dev/null +++ b/TODO/GAL-43.md @@ -0,0 +1,11 @@ +--- +id: GAL-43 +title: Replace placeholder geometric shapes with actual sprites +status: Todo +parent: GAL-42 +labels: [polish, visuals] +--- + +# GAL-43: Replace placeholder geometric shapes with actual sprites + +Replace placeholder geometric shapes with actual sprites. diff --git a/TODO/GAL-44.md b/TODO/GAL-44.md new file mode 100644 index 0000000..53ed2c5 --- /dev/null +++ b/TODO/GAL-44.md @@ -0,0 +1,16 @@ +--- +id: GAL-44 +title: Add explosion animations/effects +status: Done +parent: GAL-42 +labels: [polish, visuals] +--- + +# GAL-44: Add explosion animations/effects + +Add explosion animations/effects. + +## Comments + +- Branch: `gal-44-add-explosion-effects`. +- 2026-05-06 — Implementation complete with commit `2ff561e`. diff --git a/TODO/GAL-45.md b/TODO/GAL-45.md new file mode 100644 index 0000000..61e8c38 --- /dev/null +++ b/TODO/GAL-45.md @@ -0,0 +1,11 @@ +--- +id: GAL-45 +title: Implement a scrolling starfield background +status: Done +parent: GAL-42 +labels: [polish, visuals] +--- + +# GAL-45: Implement a scrolling starfield background + +Implement a scrolling starfield background. diff --git a/TODO/GAL-46.md b/TODO/GAL-46.md new file mode 100644 index 0000000..a4c46a6 --- /dev/null +++ b/TODO/GAL-46.md @@ -0,0 +1,17 @@ +--- +id: GAL-46 +title: Audio +status: Todo +parent: null +labels: [polish, audio] +--- + +# GAL-46: Audio + +Wire up audio plugin, sound effects, and background music. + +## Sub-issues + +- [ ] [GAL-47](GAL-47.md) — Integrate `bevy_audio`. +- [ ] [GAL-48](GAL-48.md) — Add sound effects (shooting, explosions, player death, tractor beam, etc.). +- [ ] [GAL-49](GAL-49.md) — Add background music. diff --git a/TODO/GAL-47.md b/TODO/GAL-47.md new file mode 100644 index 0000000..9f1c0c6 --- /dev/null +++ b/TODO/GAL-47.md @@ -0,0 +1,11 @@ +--- +id: GAL-47 +title: Integrate bevy_audio +status: Todo +parent: GAL-46 +labels: [polish, audio] +--- + +# GAL-47: Integrate `bevy_audio` + +Integrate `bevy_audio`. diff --git a/TODO/GAL-48.md b/TODO/GAL-48.md new file mode 100644 index 0000000..3a62353 --- /dev/null +++ b/TODO/GAL-48.md @@ -0,0 +1,11 @@ +--- +id: GAL-48 +title: Add sound effects +status: Todo +parent: GAL-46 +labels: [polish, audio] +--- + +# GAL-48: Add sound effects (shooting, explosions, player death, tractor beam, etc.) + +Add sound effects (shooting, explosions, player death, tractor beam, etc.). diff --git a/TODO/GAL-49.md b/TODO/GAL-49.md new file mode 100644 index 0000000..d6b4534 --- /dev/null +++ b/TODO/GAL-49.md @@ -0,0 +1,11 @@ +--- +id: GAL-49 +title: Add background music +status: Todo +parent: GAL-46 +labels: [polish, audio] +--- + +# GAL-49: Add background music + +Add background music. diff --git a/TODO/GAL-5.md b/TODO/GAL-5.md new file mode 100644 index 0000000..27c618e --- /dev/null +++ b/TODO/GAL-5.md @@ -0,0 +1,17 @@ +--- +id: GAL-5 +title: Game Over State +status: Done +parent: null +labels: [gameplay, core-loop] +--- + +# GAL-5: Game Over State + +State machine covering `Playing` and `GameOver`, with a transition trigger and on-screen message. + +## Sub-issues + +- [x] [GAL-6](GAL-6.md) — Use Bevy's `States` (`Playing`, `GameOver`). +- [x] [GAL-7](GAL-7.md) — Transition to `GameOver` when lives reach zero. +- [x] [GAL-8](GAL-8.md) — Display a "Game Over" message. diff --git a/TODO/GAL-50.md b/TODO/GAL-50.md new file mode 100644 index 0000000..f021ee8 --- /dev/null +++ b/TODO/GAL-50.md @@ -0,0 +1,19 @@ +--- +id: GAL-50 +title: UI +status: In Progress +parent: null +labels: [polish, ui] +--- + +# GAL-50: UI + +Score, lives, stage, high-score, start menu, and restart UI. + +## Sub-issues + +- [x] [GAL-51](GAL-51.md) — Display Score, Lives, and Stage in the window title. +- [ ] [GAL-52](GAL-52.md) — Display Score, Lives, and Stage on the screen using `bevy_ui`. +- [ ] [GAL-53](GAL-53.md) — Implement a High Score system (saving/loading). +- [x] [GAL-54](GAL-54.md) — Create a Start Menu state with a "Start Game" button. +- [ ] [GAL-55](GAL-55.md) — Add a "Press R to Restart" message to the `GameOver` screen and implement restart logic. diff --git a/TODO/GAL-51.md b/TODO/GAL-51.md new file mode 100644 index 0000000..8a600ee --- /dev/null +++ b/TODO/GAL-51.md @@ -0,0 +1,11 @@ +--- +id: GAL-51 +title: Display Score, Lives, and Stage in the window title +status: Done +parent: GAL-50 +labels: [polish, ui] +--- + +# GAL-51: Display Score, Lives, and Stage in the window title + +Display Score, Lives, and Stage in the window title. diff --git a/TODO/GAL-52.md b/TODO/GAL-52.md new file mode 100644 index 0000000..34d3350 --- /dev/null +++ b/TODO/GAL-52.md @@ -0,0 +1,11 @@ +--- +id: GAL-52 +title: Display Score, Lives, and Stage on screen using bevy_ui +status: Todo +parent: GAL-50 +labels: [polish, ui] +--- + +# GAL-52: Display Score, Lives, and Stage on the screen using `bevy_ui` + +Display Score, Lives, and Stage on the screen using `bevy_ui`. diff --git a/TODO/GAL-53.md b/TODO/GAL-53.md new file mode 100644 index 0000000..e72f729 --- /dev/null +++ b/TODO/GAL-53.md @@ -0,0 +1,11 @@ +--- +id: GAL-53 +title: Implement a High Score system (saving/loading) +status: Todo +parent: GAL-50 +labels: [polish, ui] +--- + +# GAL-53: Implement a High Score system (saving/loading) + +Implement a High Score system (saving/loading). diff --git a/TODO/GAL-54.md b/TODO/GAL-54.md new file mode 100644 index 0000000..13ba55b --- /dev/null +++ b/TODO/GAL-54.md @@ -0,0 +1,11 @@ +--- +id: GAL-54 +title: Create a Start Menu state with a Start Game button +status: Done +parent: GAL-50 +labels: [polish, ui] +--- + +# GAL-54: Create a Start Menu state with a "Start Game" button + +Create a Start Menu state with a "Start Game" button. diff --git a/TODO/GAL-55.md b/TODO/GAL-55.md new file mode 100644 index 0000000..12e197e --- /dev/null +++ b/TODO/GAL-55.md @@ -0,0 +1,11 @@ +--- +id: GAL-55 +title: Add Press R to Restart message and restart logic +status: Todo +parent: GAL-50 +labels: [polish, ui] +--- + +# GAL-55: Add a "Press R to Restart" message to the `GameOver` screen and implement restart logic + +Add a "Press R to Restart" message to the `GameOver` screen and implement restart logic. diff --git a/TODO/GAL-6.md b/TODO/GAL-6.md new file mode 100644 index 0000000..248bce3 --- /dev/null +++ b/TODO/GAL-6.md @@ -0,0 +1,11 @@ +--- +id: GAL-6 +title: Use Bevy's States (Playing, GameOver) +status: Done +parent: GAL-5 +labels: [gameplay, core-loop] +--- + +# GAL-6: Use Bevy's `States` (`Playing`, `GameOver`) + +Use Bevy's `States` (`Playing`, `GameOver`). diff --git a/TODO/GAL-7.md b/TODO/GAL-7.md new file mode 100644 index 0000000..77d1f79 --- /dev/null +++ b/TODO/GAL-7.md @@ -0,0 +1,11 @@ +--- +id: GAL-7 +title: Transition to GameOver when lives reach zero +status: Done +parent: GAL-5 +labels: [gameplay, core-loop] +--- + +# GAL-7: Transition to `GameOver` when lives reach zero + +Transition to `GameOver` when lives reach zero. diff --git a/TODO/GAL-8.md b/TODO/GAL-8.md new file mode 100644 index 0000000..c0cae44 --- /dev/null +++ b/TODO/GAL-8.md @@ -0,0 +1,11 @@ +--- +id: GAL-8 +title: Display a Game Over message +status: Done +parent: GAL-5 +labels: [gameplay, core-loop] +--- + +# GAL-8: Display a "Game Over" message + +Display a "Game Over" message. diff --git a/TODO/GAL-9.md b/TODO/GAL-9.md new file mode 100644 index 0000000..cb27db0 --- /dev/null +++ b/TODO/GAL-9.md @@ -0,0 +1,16 @@ +--- +id: GAL-9 +title: Scoring +status: Done +parent: null +labels: [gameplay, core-loop] +--- + +# GAL-9: Scoring + +Add a score resource and increment when an enemy is destroyed. + +## Sub-issues + +- [x] [GAL-10](GAL-10.md) — Add a `Score` resource. +- [x] [GAL-11](GAL-11.md) — Increment score when an enemy is hit. diff --git a/TODO/README.md b/TODO/README.md new file mode 100644 index 0000000..854bcbc --- /dev/null +++ b/TODO/README.md @@ -0,0 +1,30 @@ +# Project Issues + +Linear-style issue tracker for bglga. Each issue lives in its own `GAL-N.md` file in this folder. + +Statuses: `Todo`, `In Progress`, `Done`. + +## 1. Core Gameplay Loop & State Management + +- [x] [GAL-1](GAL-1.md) — Player Lives +- [x] [GAL-5](GAL-5.md) — Game Over State +- [x] [GAL-9](GAL-9.md) — Scoring +- [x] [GAL-12](GAL-12.md) — Levels/Stages + +## 2. Enemy Behavior — Formations & Attack Patterns + +- [x] [GAL-16](GAL-16.md) — Enemy Formations +- [x] [GAL-20](GAL-20.md) — Enemy Attack Dives +- [ ] [GAL-25](GAL-25.md) — Enemy Variety + +## 3. Advanced Galaga Mechanics + +- [ ] [GAL-28](GAL-28.md) — Boss Galaga & Capture Beam +- [ ] [GAL-34](GAL-34.md) — Dual Fighter (Rescuing Captured Ship) +- [ ] [GAL-38](GAL-38.md) — Challenging Stages + +## 4. Polish and User Interface + +- [ ] [GAL-42](GAL-42.md) — Visuals +- [ ] [GAL-46](GAL-46.md) — Audio +- [ ] [GAL-50](GAL-50.md) — UI