1
0
Fork 0
mirror of https://github.com/doukutsu-rs/doukutsu-rs synced 2025-07-09 22:16:20 +00:00
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, ctx: &mut Context,
stage: &Stage, stage: &Stage,
players: [&Player; 2], players: [&Player; 2],
) -> GameResult { ) -> GameResult<bool> {
if state.textscript_vm.state == TextScriptExecutionState::MapSystem { if state.textscript_vm.state == TextScriptExecutionState::MapSystem {
if self.state == MapSystemState::Hidden { if self.state == MapSystemState::Hidden {
self.state = MapSystemState::FadeInBox(0); self.state = MapSystemState::FadeInBox(0);
@ -98,7 +98,7 @@ impl MapSystem {
if self.state == MapSystemState::Hidden { if self.state == MapSystemState::Hidden {
self.tick = 0; self.tick = 0;
*self.has_map_data.borrow_mut() = false; *self.has_map_data.borrow_mut() = false;
return Ok(()); return Ok(false);
} }
self.tick = self.tick.wrapping_add(1); self.tick = self.tick.wrapping_add(1);
@ -112,6 +112,8 @@ impl MapSystem {
*self.has_map_data.borrow_mut() = false; *self.has_map_data.borrow_mut() = false;
} }
let mut if_quit = false;
match self.state { match self.state {
MapSystemState::FadeInBox(tick) => { MapSystemState::FadeInBox(tick) => {
if tick >= 8 { if tick >= 8 {
@ -136,7 +138,13 @@ impl MapSystem {
} }
for player in &players { 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); self.state = MapSystemState::FadeOutBox(8);
break; break;
} }
@ -144,7 +152,13 @@ impl MapSystem {
} }
MapSystemState::Visible => { MapSystemState::Visible => {
for player in &players { 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); self.state = MapSystemState::FadeOutBox(8);
break; break;
} }
@ -153,7 +167,7 @@ impl MapSystem {
_ => (), _ => (),
} }
Ok(()) Ok(if_quit)
} }
pub fn draw( pub fn draw(

View file

@ -13,7 +13,7 @@ use super::settings_menu::SettingsMenu;
#[derive(PartialEq, Eq, Copy, Clone)] #[derive(PartialEq, Eq, Copy, Clone)]
#[repr(u8)] #[repr(u8)]
#[allow(unused)] #[allow(unused)]
enum CurrentMenu { pub enum CurrentMenu {
PauseMenu, PauseMenu,
OptionsMenu, OptionsMenu,
ConfirmMenu, ConfirmMenu,
@ -93,6 +93,13 @@ impl PauseMenu {
self.is_paused 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 { pub fn tick(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
self.update_sizes(state); self.update_sizes(state);
@ -160,7 +167,10 @@ impl PauseMenu {
_ => (), _ => (),
}, },
MenuSelectionResult::Selected(2, _) | MenuSelectionResult::Canceled => { 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 { match state.textscript_vm.mode {
ScriptMode::Map => { ScriptMode::Map => {