feat(game): add special stage type every 3rd level
Every 3rd stage (3, 6, 9, ...) is now a special stage with no enemy dive attacks and no enemy shooting. Enemies still spawn in the default grid formation (32 enemies) but remain in formation without attacking. Changes: - Add SPECIAL_STAGE_INTERVAL constant and is_special_stage() function - Add special_stage config to StageConfigurations with empty attack_patterns - Modify for_stage() to route special stages to special config - Guard enemy_shoot system to skip shooting during special stages - Show '*' suffix in window title for special stages Refs: GAL-39
This commit is contained in:
parent
eaff717054
commit
9e6d53867a
5 changed files with 182 additions and 6 deletions
|
|
@ -12,6 +12,7 @@ use crate::constants::{
|
|||
};
|
||||
use crate::resources::{
|
||||
AttackDiveTimer, CurrentStage, EnemySpawnTimer, FormationState, StageConfigurations,
|
||||
is_special_stage,
|
||||
};
|
||||
|
||||
const BOSS_BASE_CHANCE: f32 = 0.30;
|
||||
|
|
@ -341,7 +342,11 @@ pub fn enemy_shoot(
|
|||
mut commands: Commands,
|
||||
time: Res<Time>,
|
||||
mut enemy_query: Query<(&Transform, &mut Enemy, &EnemyState), Without<FormationTarget>>,
|
||||
stage: Res<CurrentStage>,
|
||||
) {
|
||||
if is_special_stage(stage.number) {
|
||||
return;
|
||||
}
|
||||
for (transform, mut enemy, state) in enemy_query.iter_mut() {
|
||||
if !matches!(state, EnemyState::Attacking(_)) {
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue