bevyjam/src/levels.rs
2022-08-25 11:31:12 +02:00

60 lines
1.4 KiB
Rust

#![allow(clippy::too_many_arguments)]
mod game_over;
mod level0;
mod level1;
use crate::game::*;
use bevy::prelude::*;
pub fn setup_level(
level_startup_event: &mut EventWriter<LevelStartupEvent>,
camera_query: &mut Query<&mut Transform, With<Camera>>,
) {
camera_query.single_mut().translation = Default::default();
level_startup_event.send(LevelStartupEvent);
}
pub fn despawn_level(mut commands: Commands, level_query: Query<Entity, With<Level>>) {
for entity in level_query.iter() {
commands.entity(entity).despawn_recursive();
}
}
// This is a bad design, to be refactored some days
pub fn post_setup_level(
mut commands: Commands,
character_meshes: Res<CharacterMeshes>,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<ColorMaterial>>,
current_level: Res<CurrentLevel>,
mut level_startup_event: EventReader<LevelStartupEvent>,
asset_server: Res<AssetServer>,
audio: Res<crossbeam_channel::Sender<AudioMsg>>,
) {
for _ in level_startup_event.iter() {
if let Some(level_id) = current_level.0 {
match level_id.0 {
0 => level0::setup(
&mut commands,
&mut meshes,
&character_meshes,
&mut materials,
&audio,
),
1 => level1::setup(
&mut commands,
&mut meshes,
&character_meshes,
&mut materials,
&audio,
&asset_server,
),
_ => game_over::setup(&mut commands, &asset_server),
}
}
}
}