This commit is contained in:
dawnDus 2022-03-31 13:34:35 -04:00
parent a48a59125f
commit af9827ccab
No known key found for this signature in database
GPG Key ID: 972AABDE81848F21
3 changed files with 34 additions and 8 deletions

View File

@ -86,7 +86,7 @@ impl MapSystem {
ctx: &mut Context,
stage: &Stage,
players: [&Player; 2],
) -> GameResult {
) -> GameResult<bool> {
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(

View File

@ -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;
}
}
_ => (),
},

View File

@ -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 => {