collectables per wave
This commit is contained in:
parent
002ad4a162
commit
69fe717b22
3 changed files with 31 additions and 19 deletions
|
|
@ -6,7 +6,8 @@ use rand::distr::slice::Empty;
|
|||
use crate::{
|
||||
core::{
|
||||
bubble::{Bubble, bubble_spawn_wave},
|
||||
game_state::Resetable,
|
||||
collectible::{CollectableType, collectable_spawn},
|
||||
game_state::{EndGameEvent, EndGameReason, Resetable},
|
||||
kirby::Kirby,
|
||||
life::Life,
|
||||
},
|
||||
|
|
@ -56,11 +57,12 @@ const GREEN_BUBBLE: BubbleType = BubbleType {
|
|||
#[derive(Resource)]
|
||||
pub struct BubbleWaves {
|
||||
waves: Vec<Vec<BubbleSplash>>,
|
||||
collectables: Vec<Vec<(CollectableType, Vec2)>>,
|
||||
pub current_wave: usize,
|
||||
}
|
||||
|
||||
fn get_bubble_waves() -> BubbleWaves {
|
||||
BubbleWaves {
|
||||
let return_thing = BubbleWaves {
|
||||
waves: vec![
|
||||
vec![BubbleSplash::new(NORMAL_BUBBLE, RIGHT, 10.0, 10)],
|
||||
vec![BubbleSplash::new(NORMAL_BUBBLE, RIGHT, 10.0, 10), BubbleSplash::new(NORMAL_BUBBLE, TOP, 10.0, 10)],
|
||||
|
|
@ -76,8 +78,17 @@ fn get_bubble_waves() -> BubbleWaves {
|
|||
BubbleSplash::new(RED_BUBBLE, LEFT, 10.0, 100),
|
||||
],
|
||||
],
|
||||
collectables: vec![
|
||||
vec![],
|
||||
vec![(CollectableType::NewKirby, LEFT)],
|
||||
vec![(CollectableType::SpeedBoost, BOTTOM)],
|
||||
vec![(CollectableType::ShieldBoost, BOTTOM)],
|
||||
vec![],
|
||||
],
|
||||
current_wave: 0,
|
||||
}
|
||||
};
|
||||
assert!(return_thing.waves.len() == return_thing.collectables.len());
|
||||
return return_thing;
|
||||
}
|
||||
|
||||
impl Resetable for BubbleWaves {
|
||||
|
|
@ -92,11 +103,20 @@ fn no_ennemy_left(bubble_query: Query<(), With<Bubble>>) -> bool {
|
|||
|
||||
fn change_wave(mut bubble_wave: ResMut<BubbleWaves>, mut commands: Commands, asset_server: Res<AssetServer>) {
|
||||
let max_bubble_wave = bubble_wave.waves.len();
|
||||
bubble_wave.current_wave += 1;
|
||||
if bubble_wave.current_wave >= max_bubble_wave {
|
||||
panic!("GG you win");
|
||||
commands.trigger(EndGameEvent { reason: EndGameReason::Victory });
|
||||
return;
|
||||
}
|
||||
bubble_spawn_wave(&mut commands, &asset_server, bubble_wave.waves[bubble_wave.current_wave].as_slice());
|
||||
|
||||
let wave = &bubble_wave.waves[bubble_wave.current_wave];
|
||||
let collectables = &bubble_wave.collectables[bubble_wave.current_wave];
|
||||
|
||||
bubble_spawn_wave(&mut commands, &asset_server, wave.as_slice());
|
||||
for (collectable_type, collectable_pos) in collectables {
|
||||
collectable_spawn(&mut commands, &asset_server, *collectable_type, *collectable_pos);
|
||||
}
|
||||
|
||||
bubble_wave.current_wave += 1;
|
||||
}
|
||||
|
||||
fn heal_kirby(query: Query<&mut Life, With<Kirby>>) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue