From 1668735c04c376286c35ec9383be66b3f418b512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl?= Date: Sun, 3 Mar 2024 01:56:36 +0100 Subject: [PATCH] commit --- crates/border-wars/src/scenes/menu.rs | 57 ++++++++++++++++++--------- crates/border-wars/src/scenes/mod.rs | 5 ++- 2 files changed, 41 insertions(+), 21 deletions(-) diff --git a/crates/border-wars/src/scenes/menu.rs b/crates/border-wars/src/scenes/menu.rs index 9014458..57e2a3a 100644 --- a/crates/border-wars/src/scenes/menu.rs +++ b/crates/border-wars/src/scenes/menu.rs @@ -9,10 +9,11 @@ pub struct MenuPlugin; impl Plugin for MenuPlugin { fn build(&self, app: &mut App) { - app.add_systems(Startup, menu_ui.run_if(in_state(CurrentScene::Menu))); + app.add_systems(OnEnter(CurrentScene::Menu), menu_ui); app.add_systems(Update, change_scaling); app.add_systems(Update, hover_system); app.add_systems(Update, pressed_system); + app.add_systems(OnExit(CurrentScene::Menu), destroy_menu); } } @@ -26,6 +27,10 @@ struct HoveredTexture { hovered_texture: Handle, } +/// TODO +#[derive(Component)] +struct MenuEntity; + /// Display the UI of the menu to host a game or join one. fn menu_ui(mut commands: Commands, asset_server: Res) { commands.spawn(Camera2dBundle::default()); @@ -42,6 +47,7 @@ fn menu_ui(mut commands: Commands, asset_server: Res) { z_index: ZIndex::Local(0), ..default() }) + .insert(MenuEntity) .with_children(|child: &mut ChildBuilder| main_node(child, &asset_server)); create_side_button( @@ -51,7 +57,7 @@ fn menu_ui(mut commands: Commands, asset_server: Res) { top: Val::Px(25.), bottom: Val::Auto, }, - CurrentScene::Lobby, + CurrentScene::Setting, &mut commands, HoveredTexture { texture: asset_server.load("button_settings_icon.png"), @@ -94,7 +100,7 @@ fn create_side_button( image: textures.texture.clone().into(), ..default() }) - .insert((target_scene, textures)); + .insert((target_scene, textures, MenuEntity)); } /// TODO @@ -115,7 +121,7 @@ fn create_button( image: textures.texture.clone().into(), ..default() }) - .insert((target_scene, textures)); + .insert((target_scene, textures, MenuEntity)); } /// TODO @@ -159,21 +165,23 @@ fn default_style() -> Style { /// TODO fn main_node(main_node: &mut ChildBuilder<'_, '_, '_>, asset_server: &Res) { - main_node.spawn(ImageBundle { - style: Style { - height: Val::Px(150.), - width: Val::Px(613.5), - margin: UiRect { - left: Val::Auto, - right: Val::Auto, - top: Val::Px(25.), - bottom: Val::Px(50.), + main_node + .spawn(ImageBundle { + style: Style { + height: Val::Px(150.), + width: Val::Px(613.5), + margin: UiRect { + left: Val::Auto, + right: Val::Auto, + top: Val::Px(25.), + bottom: Val::Px(50.), + }, + ..default() }, + image: asset_server.load("bw.png").into(), ..default() - }, - image: asset_server.load("bw.png").into(), - ..default() - }); + }) + .insert(MenuEntity); main_node .spawn(NodeBundle { @@ -197,12 +205,14 @@ fn main_node(main_node: &mut ChildBuilder<'_, '_, '_>, asset_server: &Res, asset_server: &Res, asset_server: &Res>) { + for entity in query.iter() { + commands.entity(entity).despawn_recursive(); + } +} diff --git a/crates/border-wars/src/scenes/mod.rs b/crates/border-wars/src/scenes/mod.rs index 2a788fd..dce2e1e 100644 --- a/crates/border-wars/src/scenes/mod.rs +++ b/crates/border-wars/src/scenes/mod.rs @@ -3,7 +3,7 @@ use bevy::prelude::*; use bevy_egui::EguiPlugin; -use crate::CurrentScene; +use crate::{change_scaling, CurrentScene}; pub mod lobby; pub mod menu; @@ -16,6 +16,7 @@ impl Plugin for ScenesPlugin { app.add_plugins(EguiPlugin) .add_state::() .add_plugins(menu::MenuPlugin) - .add_plugins(lobby::LobbyPlugin); + .add_plugins(lobby::LobbyPlugin) + .add_systems(Update, change_scaling); } }