Added cutscene auto skip option (#249)
This commit is contained in:
parent
c56bd2e8ae
commit
e1fb118910
|
@ -128,7 +128,8 @@
|
||||||
"cutscene_skip_method": {
|
"cutscene_skip_method": {
|
||||||
"entry": "Cutscene Skip:",
|
"entry": "Cutscene Skip:",
|
||||||
"hold": "Hold to Skip",
|
"hold": "Hold to Skip",
|
||||||
"fastforward": "Fast-Forward"
|
"fastforward": "Fast-Forward",
|
||||||
|
"auto": "Auto"
|
||||||
},
|
},
|
||||||
"discord_rpc": "Discord Rich Presence:",
|
"discord_rpc": "Discord Rich Presence:",
|
||||||
"allow_strafe": "Allow strafe:"
|
"allow_strafe": "Allow strafe:"
|
||||||
|
|
|
@ -120,6 +120,7 @@ pub enum PlayerCount {
|
||||||
pub enum CutsceneSkipMode {
|
pub enum CutsceneSkipMode {
|
||||||
Hold,
|
Hold,
|
||||||
FastForward,
|
FastForward,
|
||||||
|
Auto,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl GameDifficulty {
|
impl GameDifficulty {
|
||||||
|
|
|
@ -572,10 +572,11 @@ impl SettingsMenu {
|
||||||
BehaviorMenuEntry::CutsceneSkipMode,
|
BehaviorMenuEntry::CutsceneSkipMode,
|
||||||
MenuEntry::Options(
|
MenuEntry::Options(
|
||||||
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.entry").to_owned(),
|
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.entry").to_owned(),
|
||||||
if state.settings.cutscene_skip_mode == CutsceneSkipMode::Hold { 0 } else { 1 },
|
state.settings.cutscene_skip_mode as usize,
|
||||||
vec![
|
vec![
|
||||||
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.hold").to_owned(),
|
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.hold").to_owned(),
|
||||||
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.fastforward").to_owned(),
|
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.fastforward").to_owned(),
|
||||||
|
state.loc.t("menus.options_menu.behavior_menu.cutscene_skip_method.auto").to_owned(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -986,18 +987,30 @@ impl SettingsMenu {
|
||||||
*value = state.settings.allow_strafe;
|
*value = state.settings.allow_strafe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MenuSelectionResult::Selected(BehaviorMenuEntry::CutsceneSkipMode, toggle) => {
|
MenuSelectionResult::Selected(BehaviorMenuEntry::CutsceneSkipMode, toggle)
|
||||||
|
| MenuSelectionResult::Right(BehaviorMenuEntry::CutsceneSkipMode, toggle, _) => {
|
||||||
if let MenuEntry::Options(_, value, _) = toggle {
|
if let MenuEntry::Options(_, value, _) = toggle {
|
||||||
match state.settings.cutscene_skip_mode {
|
let (new_mode, new_value) = match state.settings.cutscene_skip_mode {
|
||||||
CutsceneSkipMode::Hold => {
|
CutsceneSkipMode::Hold => (CutsceneSkipMode::FastForward, 1),
|
||||||
state.settings.cutscene_skip_mode = CutsceneSkipMode::FastForward;
|
CutsceneSkipMode::FastForward => (CutsceneSkipMode::Auto, 2),
|
||||||
*value = 1;
|
CutsceneSkipMode::Auto => (CutsceneSkipMode::Hold, 0),
|
||||||
}
|
};
|
||||||
CutsceneSkipMode::FastForward => {
|
|
||||||
state.settings.cutscene_skip_mode = CutsceneSkipMode::Hold;
|
state.settings.cutscene_skip_mode = new_mode;
|
||||||
*value = 0;
|
*value = new_value;
|
||||||
}
|
let _ = state.settings.save(ctx);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
MenuSelectionResult::Left(BehaviorMenuEntry::CutsceneSkipMode, toggle, _) => {
|
||||||
|
if let MenuEntry::Options(_, value, _) = toggle {
|
||||||
|
let (new_mode, new_value) = match state.settings.cutscene_skip_mode {
|
||||||
|
CutsceneSkipMode::Hold => (CutsceneSkipMode::Auto, 2),
|
||||||
|
CutsceneSkipMode::FastForward => (CutsceneSkipMode::Hold, 0),
|
||||||
|
CutsceneSkipMode::Auto => (CutsceneSkipMode::FastForward, 1),
|
||||||
|
};
|
||||||
|
|
||||||
|
state.settings.cutscene_skip_mode = new_mode;
|
||||||
|
*value = new_value;
|
||||||
let _ = state.settings.save(ctx);
|
let _ = state.settings.save(ctx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1841,6 +1841,9 @@ impl Scene for GameScene {
|
||||||
state.textscript_vm.flags.set_cutscene_skip(false);
|
state.textscript_vm.flags.set_cutscene_skip(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
CutsceneSkipMode::Auto => {
|
||||||
|
state.textscript_vm.flags.set_cutscene_skip(true);
|
||||||
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2183,7 +2186,7 @@ impl Scene for GameScene {
|
||||||
self.falling_island.draw(state, ctx, &self.frame)?;
|
self.falling_island.draw(state, ctx, &self.frame)?;
|
||||||
self.text_boxes.draw(state, ctx, &self.frame)?;
|
self.text_boxes.draw(state, ctx, &self.frame)?;
|
||||||
|
|
||||||
if self.skip_counter > 1 || state.tutorial_counter > 0 {
|
if (self.skip_counter > 1 || state.tutorial_counter > 0) && (state.settings.cutscene_skip_mode != CutsceneSkipMode::Auto) {
|
||||||
let key = {
|
let key = {
|
||||||
if state.settings.touch_controls {
|
if state.settings.touch_controls {
|
||||||
">>".to_owned()
|
">>".to_owned()
|
||||||
|
|
Loading…
Reference in New Issue