use derive_builder::Builder;
#[cfg_attr(feature = "serde", derive(serde::Deserialize, serde::Serialize))]
#[derive(Builder, Clone, Debug)]
#[builder(build_fn(private, name = "fallible_build"))]
pub struct LaunchOptions {
#[builder(setter(into), default = "String::from(env!(\"CARGO_PKG_NAME\"))")]
pub(crate) launcher_name: String,
#[builder(setter(into), default = "String::from(env!(\"CARGO_PKG_VERSION\"))")]
pub(crate) launcher_version: String,
#[builder(setter(into), default = "String::from(\"Steve\")")]
pub(crate) player_name: String,
#[builder(setter(strip_option), default)]
pub(crate) profile_id: Option<String>,
#[builder(setter(strip_option), default)]
pub(crate) token: Option<String>,
#[builder(default)]
pub(crate) fullscreen: bool,
#[builder(default)]
pub(crate) enable_custom_window_size: bool,
#[builder(default = "1280")]
pub(crate) custom_width: u32,
#[builder(default = "720")]
pub(crate) custom_height: u32,
#[builder(default)]
pub(crate) enable_custom_memory: bool,
#[builder(default = "1024")]
pub(crate) custom_min_memory: u32,
#[builder(default = "2048")]
pub(crate) custom_max_memory: u32,
#[builder(setter(into), default = "String::from(\"java\")")]
pub(crate) java_executable: String,
#[builder(setter(into, strip_option), default)]
pub(crate) custom_jvm_arguments: Option<String>,
#[builder(default)]
pub(crate) environment_variables: Vec<(String, Option<String>)>,
}
impl Default for LaunchOptions {
fn default() -> Self {
LaunchOptionsBuilder::default().build()
}
}
impl LaunchOptionsBuilder {
pub fn build(&self) -> LaunchOptions {
self.fallible_build().unwrap()
}
}