diff --git a/src/menus/character_select/mod.rs b/src/menus/character_select/mod.rs index d20b911..cd5dd75 100644 --- a/src/menus/character_select/mod.rs +++ b/src/menus/character_select/mod.rs @@ -241,7 +241,7 @@ pub fn copy_cursor_transform_to_token( character_boxes: Query<(&CharacterBox, &ComputedNode, &UiGlobalTransform)>, match_config: Res, cursors: Query<&UiGlobalTransform, With>, - cam: Single<&Camera, With>, + cam: Single<&Camera>, ui_scale: Res, ) -> Result { let camera = cam.into_inner(); diff --git a/src/menus/cursor.rs b/src/menus/cursor.rs index 5c783a8..40a4845 100644 --- a/src/menus/cursor.rs +++ b/src/menus/cursor.rs @@ -181,7 +181,7 @@ pub fn cursor_input( } pub fn update_cursor_transform( - camera: Single<&Camera, With>, + camera: Single<&Camera>, query: Query<(&mut Node, &PointerLocation), With>, ui_scale: Res, ) { diff --git a/src/menus/mod.rs b/src/menus/mod.rs index 054520b..1512f83 100644 --- a/src/menus/mod.rs +++ b/src/menus/mod.rs @@ -25,6 +25,8 @@ pub mod style; #[derive(Component, Clone, Default)] pub struct MenuMarker {} +#[derive(Component, Clone, Default)] +pub struct MenuCameraMarker {} pub struct MenuPlugin; @@ -38,6 +40,7 @@ pub fn wrap_menu(menu: impl Scene) -> impl Scene { bsn! { #MenuRoot MenuMarker + Transform Node { width: percent(100), height: percent(100), @@ -46,6 +49,11 @@ pub fn wrap_menu(menu: impl Scene) -> impl Scene { flex_direction: FlexDirection::Column, } Children [ + ( + #MenuCamera + Camera + Camera2d + ), ( #MenuContainer Node { @@ -65,15 +73,18 @@ pub fn wrap_menu(menu: impl Scene) -> impl Scene { pub fn despawn_menu( existing_menu: Option>>, + existing_menu_camera: Option>>, mut commands: Commands, ) { if let Some(entity) = existing_menu { commands .entity(entity.into_inner()) - .remove::() - .remove::() .despawn(); } + + if let Some(menu_cam) = existing_menu_camera { + commands.entity(*menu_cam).despawn(); + } } pub fn spawn_menu( @@ -84,8 +95,6 @@ pub fn spawn_menu( if let Some(entity) = existing_menu { commands .entity(entity.into_inner()) - .remove::() - .remove::() .despawn(); } commands.queue_spawn_scene(wrap_menu(menu)); @@ -114,14 +123,6 @@ impl Plugin for MenuPlugin { app.add_systems( OnEnter(AppState::MainMenu), (build_menu::, |mut commands: Commands| { - commands.spawn((Camera2d, IsDefaultUiCamera)); - commands.spawn(( - Camera2d, - Camera { - order: 1, - ..default() - }, - )); }), ) .add_message::() diff --git a/src/stage/manifest.rs b/src/stage/manifest.rs index 42f3401..a39191c 100644 --- a/src/stage/manifest.rs +++ b/src/stage/manifest.rs @@ -7,14 +7,10 @@ use strum::IntoEnumIterator; use strum_macros::EnumIter; use crate::{ - AppState, - game_settings::GameSettings, - math::vec::FGVec2, - stage::{ + AppState, game_settings::GameSettings, math::{int::FGi32, vec::FGVec2}, stage::{ StagePoly, line::{StageCollision, StagePolyLineSegmentType, StagePolyType}, - }, - texture_reference::TextureReference, + }, texture_reference::TextureReference, }; use bevy::prelude::*; @@ -87,6 +83,14 @@ pub struct StageManifest { pub icon: TextureReference, pub camera: StageCameraProfile, pub polygons: Vec, + #[reflect(ignore)] + pub blast_zone_left: FGi32, + #[reflect(ignore)] + pub blast_zone_right: FGi32, + #[reflect(ignore)] + pub blast_zone_top: FGi32, + #[reflect(ignore)] + pub blast_zone_bottom: FGi32, } #[derive(Resource)]