desktop: Made player_version Option
This commit is contained in:
parent
09e5339fab
commit
d3b3119c9d
|
@ -3,8 +3,7 @@ use crate::gui::text;
|
|||
use crate::gui::widgets::PathOrUrlField;
|
||||
use crate::player::LaunchOptions;
|
||||
use egui::{
|
||||
Align2, Button, Checkbox, ComboBox, DragValue, Grid, Layout, Slider, TextEdit, Ui, Widget,
|
||||
Window,
|
||||
emath, Align2, Button, Checkbox, ComboBox, Grid, Layout, Slider, TextEdit, Ui, Widget, Window,
|
||||
};
|
||||
use ruffle_core::backend::navigator::{OpenURLMode, SocketMode};
|
||||
use ruffle_core::config::Letterbox;
|
||||
|
@ -38,6 +37,7 @@ pub struct OpenDialog {
|
|||
scale_mode: OptionalField<FieldWithCheckbox<EnumDropdownField<StageScaleMode>>>,
|
||||
load_behavior: OptionalField<EnumDropdownField<LoadBehavior>>,
|
||||
letterbox: OptionalField<EnumDropdownField<Letterbox>>,
|
||||
player_version: OptionalField<NumberField<u8>>,
|
||||
}
|
||||
|
||||
impl OpenDialog {
|
||||
|
@ -198,6 +198,8 @@ impl OpenDialog {
|
|||
}),
|
||||
),
|
||||
);
|
||||
let player_version =
|
||||
OptionalField::new(defaults.player_version, NumberField::new(1..=32, 32));
|
||||
|
||||
Self {
|
||||
options: defaults,
|
||||
|
@ -215,6 +217,7 @@ impl OpenDialog {
|
|||
scale_mode,
|
||||
load_behavior,
|
||||
letterbox,
|
||||
player_version,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -429,9 +432,8 @@ impl OpenDialog {
|
|||
ui.end_row();
|
||||
|
||||
ui.label(text(locale, "player-version"));
|
||||
DragValue::new(&mut self.options.player_version)
|
||||
.clamp_range(1..=32)
|
||||
.ui(ui);
|
||||
self.player_version
|
||||
.ui(ui, &mut self.options.player_version, locale);
|
||||
ui.end_row();
|
||||
|
||||
ui.label(text(locale, "custom-framerate"));
|
||||
|
@ -580,6 +582,34 @@ impl InnerField for DurationField {
|
|||
}
|
||||
}
|
||||
|
||||
struct NumberField<T: emath::Numeric> {
|
||||
range: RangeInclusive<T>,
|
||||
default: T,
|
||||
}
|
||||
|
||||
impl<T: emath::Numeric> NumberField<T> {
|
||||
pub fn new(range: RangeInclusive<T>, default: T) -> Self {
|
||||
Self { range, default }
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: emath::Numeric> InnerField for NumberField<T> {
|
||||
type Value = T;
|
||||
type Result = T;
|
||||
|
||||
fn value_if_missing(&self) -> Self::Value {
|
||||
self.default
|
||||
}
|
||||
|
||||
fn ui(&self, ui: &mut Ui, value: &mut Self::Value, _error: bool, _locale: &LanguageIdentifier) {
|
||||
Slider::new(value, self.range.clone()).ui(ui);
|
||||
}
|
||||
|
||||
fn value_to_result(&self, value: &Self::Value) -> Result<Self::Result, ()> {
|
||||
Ok(*value)
|
||||
}
|
||||
}
|
||||
|
||||
type ValueToTextFn<T> = dyn Fn(T, &LanguageIdentifier) -> Cow<'static, str>;
|
||||
type CheckboxLabelFn = dyn Fn(&LanguageIdentifier) -> Cow<'static, str>;
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ pub struct LaunchOptions {
|
|||
pub save_directory: PathBuf,
|
||||
pub letterbox: Option<Letterbox>,
|
||||
pub spoof_url: Option<Url>,
|
||||
pub player_version: u8,
|
||||
pub player_version: Option<u8>,
|
||||
pub player_runtime: PlayerRuntime,
|
||||
pub frame_rate: Option<f64>,
|
||||
pub open_url_mode: OpenURLMode,
|
||||
|
@ -89,7 +89,7 @@ impl From<&GlobalPreferences> for LaunchOptions {
|
|||
save_directory: value.cli.save_directory.clone(),
|
||||
letterbox: value.cli.letterbox,
|
||||
spoof_url: value.cli.spoof_url.clone(),
|
||||
player_version: value.cli.player_version.unwrap_or(32),
|
||||
player_version: value.cli.player_version,
|
||||
player_runtime: value.cli.player_runtime,
|
||||
frame_rate: value.cli.frame_rate,
|
||||
open_url_mode: value.cli.open_url_mode,
|
||||
|
@ -239,7 +239,7 @@ impl ActivePlayer {
|
|||
.with_load_behavior(opt.load_behavior.unwrap_or(LoadBehavior::Streaming))
|
||||
.with_spoofed_url(opt.spoof_url.clone().map(|url| url.to_string()))
|
||||
.with_page_url(opt.spoof_url.clone().map(|url| url.to_string()))
|
||||
.with_player_version(Some(opt.player_version))
|
||||
.with_player_version(opt.player_version)
|
||||
.with_player_runtime(opt.player_runtime)
|
||||
.with_frame_rate(opt.frame_rate)
|
||||
.with_avm2_optimizer_enabled(opt.avm2_optimizer_enabled);
|
||||
|
|
Loading…
Reference in New Issue