chore: update TODO.md

Signed-off-by: Harald Hoyer <harald@hoyer.xyz>
This commit is contained in:
Harald Hoyer 2025-06-27 09:22:36 +02:00
parent efef8df102
commit aee3c9c91b

119
TODO.md
View file

@ -1,69 +1,68 @@
# TODO # TODO
**1. Core Gameplay Loop & State Management:** **1. Core Gameplay Loop & State Management**
* ~~**Player Lives:**~~ **(DONE)** * [x] **Player Lives**
* ~~Add a `PlayerLives` resource (e.g., starting with 3).~~ * [x] Add a `PlayerLives` resource.
* ~~Modify `check_player_enemy_collisions`: Instead of just printing, decrement the lives count.~~ * [x] Decrement lives on collision.
* ~~Implement player destruction (despawn the player sprite) and respawn logic (maybe after a short delay, with temporary invincibility).~~ * [x] Implement player destruction and respawn with temporary invincibility.
* ~~**Game Over State:**~~ **(DONE)** * [x] **Game Over State**
* ~~Use Bevy's `States` (e.g., `Playing`, `GameOver`).~~ * [x] Use Bevy's `States` (`Playing`, `GameOver`).
* ~~Transition to `GameOver` when `PlayerLives` reaches zero.~~ * [x] Transition to `GameOver` when lives reach zero.
* ~~In the `GameOver` state: stop enemy spawning, stop player controls, display a "Game Over" message (using `bevy_ui`), potentially offer a restart option.~~ * [x] Display a "Game Over" message.
* ~~**Scoring:**~~ **(DONE)** * [x] **Scoring**
* ~~Add a `Score` resource.~~ * [x] Add a `Score` resource.
* ~~Increment the score in `check_bullet_collisions` when an enemy is hit.~~ * [x] Increment score when an enemy is hit.
* Consider different point values for different enemy types or hitting enemies during dives later. * [x] **Levels/Stages**
* ~~**Levels/Stages:**~~ **(DONE)** * [x] Add `CurrentStage` and `StageConfigurations` resources.
* ~~Add a `CurrentStage` resource.~~ * [x] Define criteria for clearing a stage.
* ~~Define criteria for clearing a stage (e.g., destroying all enemies in a wave/formation).~~ * [x] Advance to the next stage with increasing difficulty.
* ~~Implement logic to advance to the next stage, potentially increasing difficulty (enemy speed, firing rate, different formations).~~
**2. Enemy Behavior - Formations & Attack Patterns:** **2. Enemy Behavior - Formations & Attack Patterns**
* **Enemy Formations:** This is a core Galaga feature. * [x] **Enemy Formations**
* ~~Define target positions for the enemy formation on screen.~~ **(DONE)** * [x] Define target positions for formations (`FormationLayout`).
* ~~Give enemies an `Entering` state/component: They fly onto the screen following predefined paths (curves, waypoints).~~ **(DONE - Basic linear path implemented)** * [x] Enemies have an `Entering` state to fly to their position.
* Give enemies a `Formation` state/component: Once they reach their target position, they stop and hold formation. **(DONE - Stop implemented by removing FormationTarget)** * [x] Enemies have an `InFormation` state.
* **Enemy Attack Dives:** * [x] **Enemy Attack Dives**
* ~~Give enemies an `Attacking` state/component.~~ **(DONE)** * [x] Enemies have an `Attacking` state with different `AttackPattern`s (Swoop, Direct, Kamikaze).
* ~~Periodically trigger enemies in the formation to switch to the `Attacking` state.~~ **(DONE - Random selection after formation complete)** * [x] Periodically trigger random enemies to start an attack dive.
* ~~Define attack paths (swooping dives towards the player area).~~ **(DONE - Basic swoop towards center implemented)** * [x] Enemies fire bullets during their dives.
* ~~Make enemies fire bullets (downwards or towards the player) during their dives.~~ **(DONE - Downward)** * [x] Enemies are despawned when they fly off-screen after an attack.
* After an attack dive, enemies could return to their formation position or fly off-screen. **(Fly off-screen implemented)** * [x] **Enemy Variety**
* **Enemy Variety:** * [x] `EnemyType` enum (`Grunt`, `Boss`).
* ~~Introduce different types of enemies (e.g., using different components or an enum).~~ **(DONE - Added EnemyType enum and field)** * [x] Different behaviors, points, and colors based on type.
* ~~Assign different behaviors, point values, and maybe sprites to each type.~~ **(DONE - Behaviors, points & color based on type)**
**3. Advanced Galaga Mechanics:** **3. Advanced Galaga Mechanics**
* **Boss Galaga & Capture Beam:** * [ ] **Boss Galaga & Capture Beam**
* ~~Create a "Boss" enemy type.~~ **(DONE - Added to Enum, handled in matches)** * [x] Create a "Boss" enemy type.
* Implement the tractor beam attack (visual effect, player capture logic). * [x] Implement the tractor beam attack logic (`boss_capture_attack` system).
* Player needs a `Captured` state. * [x] Player has a `Captured` component when hit by the beam.
* Logic for the Boss to return captured ships to the formation. * [x] Boss has a `ReturningWithCaptive` state to go back to the formation.
* **Dual Fighter (Rescuing Captured Ship):** * [ ] Improve the tractor beam visual effect (currently a simple rectangle).
* Allow the player to shoot a Boss Galaga attempting to capture or one holding a captured ship. * [ ] **Dual Fighter (Rescuing Captured Ship)**
* Implement the logic to free the captured ship. * [ ] Allow the player to shoot a Boss that is holding a captured ship.
* Implement the dual fighter mode (controlling two ships, firing two bullets). This involves significant changes to player control and shooting systems. * [ ] Implement the logic to free the captured ship upon shooting the Boss.
* **Challenging Stages:** * [ ] Implement the dual fighter mode (controlling two ships, firing two bullets).
* Implement a special stage type (e.g., every few levels). * [ ] **Challenging Stages**
* Enemies fly in intricate patterns without shooting. * [ ] Implement a special stage type (e.g., every 3-4 levels).
* Award bonus points for destroying all enemies in the stage. * [ ] Design and implement intricate flight patterns for enemies that do not shoot.
* [ ] Award bonus points for destroying all enemies in the stage.
**4. Polish and User Interface:** **4. Polish and User Interface**
* **Visuals:** * [ ] **Visuals**
* Replace placeholder shapes with actual sprites using `SpriteBundle` or `SpriteSheetBundle`. Create distinct looks for the player, different enemy types, bullets. * [ ] Replace placeholder geometric shapes with actual sprites.
* Add explosion effects/animations when enemies or the player are destroyed. * [ ] Add explosion animations/effects.
* Implement a scrolling starfield background for a more classic space feel. * [ ] Implement a scrolling starfield background.
* **Audio:** * [ ] **Audio**
* Integrate `bevy_audio`. * [ ] Integrate `bevy_audio`.
* Add sound effects for player shooting, enemy firing, explosions, player death, capturing, etc. * [ ] Add sound effects (shooting, explosions, player death, tractor beam, etc.).
* Add background music that might change per stage or state (e.g., main gameplay vs. challenging stage). * [ ] Add background music.
* **UI:** * [ ] **UI**
* Use `bevy_ui` to display the current Score, Lives remaining, and Stage number on screen during gameplay. * [x] Display Score, Lives, and Stage in the window title.
* Display High Score? * [ ] Display Score, Lives, and Stage on the screen using `bevy_ui`.
* Create a Start Menu state. * [ ] Implement a High Score system (saving/loading).
* [ ] Create a Start Menu state with a "Start Game" button.
Starting with the Core Gameplay Loop (Lives, Game Over, Score, basic Stages) and then moving onto Enemy Formations and Attack Patterns would likely provide the biggest steps towards a Galaga feel. * [ ] Add a "Press R to Restart" message to the `GameOver` screen and implement restart logic.