bevy-playground/src/main_menu.rs

72 lines
2.2 KiB
Rust
Raw Normal View History

2024-02-03 21:15:30 -06:00
use bevy::prelude::*;
use crate::View;
2024-02-03 21:15:30 -06:00
#[derive(Component, Debug)]
pub struct MainMenu;
2024-07-31 15:37:11 -05:00
pub fn startup(mut commands: Commands) {
2024-02-03 21:15:30 -06:00
commands
2024-07-29 16:29:39 -05:00
.spawn((
MainMenu,
StateScoped(View::MainMenu),
Name::new("MenuRoot"),
2024-07-29 16:29:39 -05:00
NodeBundle {
style: Style {
width: Val::Percent(100.0),
height: Val::Percent(100.0),
justify_content: JustifyContent::SpaceBetween,
..default()
},
2024-02-03 21:15:30 -06:00
..default()
},
2024-07-29 16:29:39 -05:00
))
2024-02-03 21:15:30 -06:00
.with_children(|parent| {
// text
parent.spawn((
Name::new("Text"),
2024-02-03 21:15:30 -06:00
TextBundle::from_section(
2024-07-29 16:36:16 -05:00
"Text Example\nPress ENTER to play",
2024-02-03 21:15:30 -06:00
TextStyle {
2024-07-31 16:39:53 -05:00
font_size: 64.0,
2024-02-03 21:15:30 -06:00
..default()
},
)
.with_style(Style {
margin: UiRect::all(Val::Px(12.)),
..default()
}),
// Because this is a distinct label widget and
// not button/list item text, this is necessary
// for accessibility to treat the text accordingly.
Label,
));
parent.spawn((
Name::new("SomeFreakin'Square"),
NodeBundle {
style: Style {
width: Val::Px(200.0),
height: Val::Px(200.0),
position_type: PositionType::Absolute,
left: Val::Px(210.),
bottom: Val::Px(10.),
border: UiRect::all(Val::Px(20.)),
..default()
},
border_color: Color::srgb(0., 1., 0.).into(),
background_color: Color::srgb(0.4, 0.4, 1.).into(),
2024-02-03 21:15:30 -06:00
..default()
},
));
2024-02-03 21:15:30 -06:00
});
}
2024-07-29 16:29:39 -05:00
pub fn exit(mut commands: Commands, q: Query<Entity, With<MainMenu>>) {
for id in q.iter() {
commands.entity(id).despawn_recursive();
}
}
2024-07-31 15:37:11 -05:00
pub fn update() {}