escape is handled gracefully in most situations

main
Elijah C. Voigt 2 years ago
parent 1ffb34b93b
commit ca95bf46ec

@ -60,7 +60,7 @@ fn init_credits_ui(mut commands: Commands) {
parent parent
.spawn(( .spawn((
menu::ButtonAction(GameState::Play), menu::ButtonAction(GameState::Play),
menu::ButtonAction(menu::MenuState::Play), menu::ButtonAction(menu::MenuState::On),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),

@ -652,7 +652,7 @@ fn set_endgame(score: Res<Score>, mut commands: Commands) {
parent parent
.spawn(( .spawn((
menu::ButtonAction(GameState::Restart), menu::ButtonAction(GameState::Restart),
menu::ButtonAction(menu::MenuState::None), menu::ButtonAction(menu::MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),
@ -677,7 +677,7 @@ fn set_endgame(score: Res<Score>, mut commands: Commands) {
// Quit button // Quit button
parent parent
.spawn(( .spawn((
menu::ButtonAction(menu::MenuState::None), menu::ButtonAction(menu::MenuState::Off),
menu::ButtonAction(GameState::Quit), menu::ButtonAction(GameState::Quit),
ButtonBundle { ButtonBundle {
style: Style { style: Style {

@ -34,10 +34,8 @@ impl Plugin for MenuPlugin {
#[derive(Debug, States, Hash, Default, PartialEq, Eq, Clone, Component)] #[derive(Debug, States, Hash, Default, PartialEq, Eq, Clone, Component)]
pub(crate) enum MenuState { pub(crate) enum MenuState {
#[default] #[default]
None, Off,
Play, On,
Tutorial,
Endgame,
} }
#[derive(Debug, Component)] #[derive(Debug, Component)]
@ -48,7 +46,7 @@ fn init_play_menu(mut commands: Commands) {
commands commands
.spawn(( .spawn((
MenuState::Play, MenuState::On,
NodeBundle { NodeBundle {
style: Style { style: Style {
width: Val::Percent(100.0), width: Val::Percent(100.0),
@ -79,7 +77,7 @@ fn init_play_menu(mut commands: Commands) {
parent parent
.spawn(( .spawn((
ButtonAction(GameState::Play), ButtonAction(GameState::Play),
ButtonAction(MenuState::None), ButtonAction(MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),
@ -105,7 +103,7 @@ fn init_play_menu(mut commands: Commands) {
parent parent
.spawn(( .spawn((
ButtonAction(tutorial::TutorialState::Intro), ButtonAction(tutorial::TutorialState::Intro),
ButtonAction(MenuState::None), ButtonAction(MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),
@ -131,7 +129,7 @@ fn init_play_menu(mut commands: Commands) {
parent parent
.spawn(( .spawn((
ButtonAction(GameState::Credits), ButtonAction(GameState::Credits),
ButtonAction(MenuState::None), ButtonAction(MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),
@ -157,7 +155,7 @@ fn init_play_menu(mut commands: Commands) {
parent parent
.spawn(( .spawn((
ButtonAction(GameState::Quit), ButtonAction(GameState::Quit),
ButtonAction(MenuState::None), ButtonAction(MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),
@ -184,6 +182,7 @@ fn init_play_menu(mut commands: Commands) {
fn handle_escape( fn handle_escape(
game_state: Res<State<GameState>>, game_state: Res<State<GameState>>,
tutorial_state: Res<State<TutorialState>>, tutorial_state: Res<State<TutorialState>>,
menu_state: Res<State<MenuState>>,
mut next_game_state: ResMut<NextState<GameState>>, mut next_game_state: ResMut<NextState<GameState>>,
mut next_menu_state: ResMut<NextState<MenuState>>, mut next_menu_state: ResMut<NextState<MenuState>>,
mut next_tutorial_state: ResMut<NextState<TutorialState>>, mut next_tutorial_state: ResMut<NextState<TutorialState>>,
@ -195,7 +194,12 @@ fn handle_escape(
match tutorial_state.get() { match tutorial_state.get() {
// State(Tutorial::None): Escape -> Play Menu // State(Tutorial::None): Escape -> Play Menu
TutorialState::None => { TutorialState::None => {
next_menu_state.set(MenuState::Play); match menu_state.get() {
// State(Menu::None): Escape -> Show Menu
MenuState::Off => next_menu_state.set(MenuState::On),
// State(Menu::Play): Escape -> Hide menu
MenuState::On => next_menu_state.set(MenuState::Off),
}
} }
// State(Tutorial::*): Escape -> Quit Tutorial // State(Tutorial::*): Escape -> Quit Tutorial
_ => { _ => {
@ -210,7 +214,7 @@ fn handle_escape(
// State(Credits): Escape -> Play + Menu // State(Credits): Escape -> Play + Menu
GameState::Credits => { GameState::Credits => {
next_game_state.set(GameState::Play); next_game_state.set(GameState::Play);
next_menu_state.set(MenuState::Play); next_menu_state.set(MenuState::On);
} }
// State(Intro): Escape -> Play // State(Intro): Escape -> Play
GameState::Intro => { GameState::Intro => {

@ -225,7 +225,7 @@ fn initialize_tutorial(
.spawn(( .spawn((
menu::ButtonAction(tutorial::TutorialState::None), menu::ButtonAction(tutorial::TutorialState::None),
menu::ButtonAction(GameState::Restart), menu::ButtonAction(GameState::Restart),
menu::ButtonAction(menu::MenuState::None), menu::ButtonAction(menu::MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),
@ -251,7 +251,7 @@ fn initialize_tutorial(
.spawn(( .spawn((
menu::ButtonAction(tutorial::TutorialState::None), menu::ButtonAction(tutorial::TutorialState::None),
menu::ButtonAction(GameState::Play), menu::ButtonAction(GameState::Play),
menu::ButtonAction(menu::MenuState::None), menu::ButtonAction(menu::MenuState::Off),
ButtonBundle { ButtonBundle {
style: Style { style: Style {
padding: UiRect::all(Val::Px(5.0)), padding: UiRect::all(Val::Px(5.0)),

Loading…
Cancel
Save