Level management & win

This commit is contained in:
Pascal Engélibert 2022-08-23 12:02:58 +02:00
commit 214e55d7ac
Signed by: tuxmain
GPG key ID: 3504BC6D362F7DCA
7 changed files with 355 additions and 151 deletions

36
src/levels/game_over.rs Normal file
View file

@ -0,0 +1,36 @@
use crate::game::*;
use bevy::prelude::*;
pub fn setup(commands: &mut Commands, asset_server: &Res<AssetServer>) {
let font = asset_server.get_handle("Cantarell-VF.otf");
commands
.spawn_bundle(Text2dBundle {
text: Text::from_section(
"GAME OVER",
TextStyle {
font: font.clone(),
font_size: 48.0,
color: Color::WHITE,
},
)
.with_alignment(TextAlignment::CENTER),
transform: Transform::from_xyz(0., -128.0, 0.),
..Default::default()
})
.insert(Level);
commands
.spawn_bundle(Text2dBundle {
text: Text::from_section(
"There is no more light to combine.",
TextStyle {
font,
font_size: 32.0,
color: Color::WHITE,
},
)
.with_alignment(TextAlignment::CENTER),
..Default::default()
})
.insert(Level);
}

50
src/levels/level0.rs Normal file
View file

@ -0,0 +1,50 @@
use crate::game::*;
use bevy::prelude::*;
use bevy_hanabi::*;
use bevy_rapier2d::prelude::*;
pub fn setup(
commands: &mut Commands,
character_meshes: &Res<CharacterMeshes>,
effects: &mut ResMut<Assets<EffectAsset>>,
materials: &mut ResMut<Assets<ColorMaterial>>,
selected_character_id: &mut Mut<SelectedCharacterId>,
character_id_list: &mut Mut<CharacterIdList>,
) {
commands
.spawn_bundle(TransformBundle::from(Transform::from_xyz(0.0, -256.0, 0.0)))
.insert(Collider::cuboid(400., 10.))
.insert(Level);
spawn_character(
commands,
character_meshes,
effects,
materials,
selected_character_id,
character_id_list,
Transform::from_xyz(-128., -64., 0.),
Color::RED,
);
spawn_character(
commands,
character_meshes,
effects,
materials,
selected_character_id,
character_id_list,
Transform::from_xyz(0., -64., 0.),
Color::GREEN,
);
spawn_character(
commands,
character_meshes,
effects,
materials,
selected_character_id,
character_id_list,
Transform::from_xyz(128., -64., 0.),
Color::BLUE,
);
}

56
src/levels/level1.rs Normal file
View file

@ -0,0 +1,56 @@
use crate::game::*;
use bevy::prelude::*;
use bevy_hanabi::*;
use bevy_rapier2d::prelude::*;
pub fn setup(
commands: &mut Commands,
character_meshes: &Res<CharacterMeshes>,
effects: &mut ResMut<Assets<EffectAsset>>,
materials: &mut ResMut<Assets<ColorMaterial>>,
selected_character_id: &mut Mut<SelectedCharacterId>,
character_id_list: &mut Mut<CharacterIdList>,
) {
commands
.spawn_bundle(TransformBundle::from(Transform::from_xyz(0.0, -256.0, 0.0)))
.insert(Collider::cuboid(400., 10.))
.insert(Level);
commands
.spawn_bundle(TransformBundle::from(Transform::from_xyz(
256.0, -128.0, 0.0,
)))
.insert(Collider::cuboid(200., 10.))
.insert(Level);
spawn_character(
commands,
character_meshes,
effects,
materials,
selected_character_id,
character_id_list,
Transform::from_xyz(128., 64., 0.),
Color::BLUE,
);
spawn_character(
commands,
character_meshes,
effects,
materials,
selected_character_id,
character_id_list,
Transform::from_xyz(-128., -128., 0.),
Color::RED,
);
spawn_character(
commands,
character_meshes,
effects,
materials,
selected_character_id,
character_id_list,
Transform::from_xyz(0., -128., 0.),
Color::GREEN,
);
}