From af9827ccabbc3512d412d00a0b28161bb7baab6a Mon Sep 17 00:00:00 2001 From: dawnDus <96957561+dawndus@users.noreply.github.com> Date: Thu, 31 Mar 2022 13:34:35 -0400 Subject: [PATCH] v2 --- src/components/map_system.rs | 24 +++++++++++++++++++----- src/menu/pause_menu.rs | 14 ++++++++++++-- src/scene/game_scene.rs | 4 +++- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/src/components/map_system.rs b/src/components/map_system.rs index b68e597..ef8ff27 100644 --- a/src/components/map_system.rs +++ b/src/components/map_system.rs @@ -86,7 +86,7 @@ impl MapSystem { ctx: &mut Context, stage: &Stage, players: [&Player; 2], - ) -> GameResult { + ) -> GameResult { if state.textscript_vm.state == TextScriptExecutionState::MapSystem { if self.state == MapSystemState::Hidden { self.state = MapSystemState::FadeInBox(0); @@ -98,7 +98,7 @@ impl MapSystem { if self.state == MapSystemState::Hidden { self.tick = 0; *self.has_map_data.borrow_mut() = false; - return Ok(()); + return Ok(false); } self.tick = self.tick.wrapping_add(1); @@ -112,6 +112,8 @@ impl MapSystem { *self.has_map_data.borrow_mut() = false; } + let mut if_quit = false; + match self.state { MapSystemState::FadeInBox(tick) => { if tick >= 8 { @@ -136,7 +138,13 @@ impl MapSystem { } for player in &players { - if player.controller.trigger_jump() || player.controller.trigger_shoot() { + if player.controller.trigger_shoot() { + state.textscript_vm.state = TextScriptExecutionState::Ended; + self.state = MapSystemState::Hidden; + if_quit = true; + break; + } + if player.controller.trigger_jump() { self.state = MapSystemState::FadeOutBox(8); break; } @@ -144,7 +152,13 @@ impl MapSystem { } MapSystemState::Visible => { for player in &players { - if player.controller.trigger_jump() || player.controller.trigger_shoot() { + if player.controller.trigger_shoot() { + state.textscript_vm.state = TextScriptExecutionState::Ended; + self.state = MapSystemState::Hidden; + if_quit = true; + break; + } + if player.controller.trigger_jump() { self.state = MapSystemState::FadeOutBox(8); break; } @@ -153,7 +167,7 @@ impl MapSystem { _ => (), } - Ok(()) + Ok(if_quit) } pub fn draw( diff --git a/src/menu/pause_menu.rs b/src/menu/pause_menu.rs index ceb1527..8335e22 100644 --- a/src/menu/pause_menu.rs +++ b/src/menu/pause_menu.rs @@ -13,7 +13,7 @@ use super::settings_menu::SettingsMenu; #[derive(PartialEq, Eq, Copy, Clone)] #[repr(u8)] #[allow(unused)] -enum CurrentMenu { +pub enum CurrentMenu { PauseMenu, OptionsMenu, ConfirmMenu, @@ -93,6 +93,13 @@ impl PauseMenu { self.is_paused } + pub fn gog(&mut self, state: &mut SharedGameState) { + self.is_paused = true; + self.current_menu = CurrentMenu::ConfirmMenu; + self.confirm_menu.entries[0] = MenuEntry::Disabled(state.t("menus.pause_menu.title_confirm")); + self.pause_menu.selected = 3; + } + pub fn tick(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult { self.update_sizes(state); @@ -160,7 +167,10 @@ impl PauseMenu { _ => (), }, MenuSelectionResult::Selected(2, _) | MenuSelectionResult::Canceled => { - self.current_menu = CurrentMenu::PauseMenu; + if self.tick >= 3 { + self.tick = 0; + self.current_menu = CurrentMenu::PauseMenu; + } } _ => (), }, diff --git a/src/scene/game_scene.rs b/src/scene/game_scene.rs index 42d523b..9c927bf 100644 --- a/src/scene/game_scene.rs +++ b/src/scene/game_scene.rs @@ -1753,7 +1753,9 @@ impl Scene for GameScene { } } - self.map_system.tick(state, ctx, &self.stage, [&self.player1, &self.player2])?; + if self.map_system.tick(state, ctx, &self.stage, [&self.player1, &self.player2])? { + self.pause_menu.gog(state); + } match state.textscript_vm.mode { ScriptMode::Map => {