From ca95bf46ec5e686626199b684850aabb2b649a4a Mon Sep 17 00:00:00 2001 From: "Elijah C. Voigt" Date: Thu, 29 Feb 2024 19:54:38 -0800 Subject: [PATCH] escape is handled gracefully in most situations --- src/credits.rs | 2 +- src/game.rs | 4 ++-- src/menu.rs | 26 +++++++++++++++----------- src/tutorial.rs | 4 ++-- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/credits.rs b/src/credits.rs index 87168aa..bd17177 100644 --- a/src/credits.rs +++ b/src/credits.rs @@ -60,7 +60,7 @@ fn init_credits_ui(mut commands: Commands) { parent .spawn(( menu::ButtonAction(GameState::Play), - menu::ButtonAction(menu::MenuState::Play), + menu::ButtonAction(menu::MenuState::On), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), diff --git a/src/game.rs b/src/game.rs index 80b8982..0f4dc57 100644 --- a/src/game.rs +++ b/src/game.rs @@ -652,7 +652,7 @@ fn set_endgame(score: Res, mut commands: Commands) { parent .spawn(( menu::ButtonAction(GameState::Restart), - menu::ButtonAction(menu::MenuState::None), + menu::ButtonAction(menu::MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), @@ -677,7 +677,7 @@ fn set_endgame(score: Res, mut commands: Commands) { // Quit button parent .spawn(( - menu::ButtonAction(menu::MenuState::None), + menu::ButtonAction(menu::MenuState::Off), menu::ButtonAction(GameState::Quit), ButtonBundle { style: Style { diff --git a/src/menu.rs b/src/menu.rs index 09327ec..9f2f5f9 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -34,10 +34,8 @@ impl Plugin for MenuPlugin { #[derive(Debug, States, Hash, Default, PartialEq, Eq, Clone, Component)] pub(crate) enum MenuState { #[default] - None, - Play, - Tutorial, - Endgame, + Off, + On, } #[derive(Debug, Component)] @@ -48,7 +46,7 @@ fn init_play_menu(mut commands: Commands) { commands .spawn(( - MenuState::Play, + MenuState::On, NodeBundle { style: Style { width: Val::Percent(100.0), @@ -79,7 +77,7 @@ fn init_play_menu(mut commands: Commands) { parent .spawn(( ButtonAction(GameState::Play), - ButtonAction(MenuState::None), + ButtonAction(MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), @@ -105,7 +103,7 @@ fn init_play_menu(mut commands: Commands) { parent .spawn(( ButtonAction(tutorial::TutorialState::Intro), - ButtonAction(MenuState::None), + ButtonAction(MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), @@ -131,7 +129,7 @@ fn init_play_menu(mut commands: Commands) { parent .spawn(( ButtonAction(GameState::Credits), - ButtonAction(MenuState::None), + ButtonAction(MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), @@ -157,7 +155,7 @@ fn init_play_menu(mut commands: Commands) { parent .spawn(( ButtonAction(GameState::Quit), - ButtonAction(MenuState::None), + ButtonAction(MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), @@ -184,6 +182,7 @@ fn init_play_menu(mut commands: Commands) { fn handle_escape( game_state: Res>, tutorial_state: Res>, + menu_state: Res>, mut next_game_state: ResMut>, mut next_menu_state: ResMut>, mut next_tutorial_state: ResMut>, @@ -195,7 +194,12 @@ fn handle_escape( match tutorial_state.get() { // State(Tutorial::None): Escape -> Play Menu 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 _ => { @@ -210,7 +214,7 @@ fn handle_escape( // State(Credits): Escape -> Play + Menu GameState::Credits => { next_game_state.set(GameState::Play); - next_menu_state.set(MenuState::Play); + next_menu_state.set(MenuState::On); } // State(Intro): Escape -> Play GameState::Intro => { diff --git a/src/tutorial.rs b/src/tutorial.rs index eb45fb2..99df26e 100644 --- a/src/tutorial.rs +++ b/src/tutorial.rs @@ -225,7 +225,7 @@ fn initialize_tutorial( .spawn(( menu::ButtonAction(tutorial::TutorialState::None), menu::ButtonAction(GameState::Restart), - menu::ButtonAction(menu::MenuState::None), + menu::ButtonAction(menu::MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)), @@ -251,7 +251,7 @@ fn initialize_tutorial( .spawn(( menu::ButtonAction(tutorial::TutorialState::None), menu::ButtonAction(GameState::Play), - menu::ButtonAction(menu::MenuState::None), + menu::ButtonAction(menu::MenuState::Off), ButtonBundle { style: Style { padding: UiRect::all(Val::Px(5.0)),