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