From 46547a886f51ba8c58918c0903273c3d3c63d5fa Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Fri, 7 Apr 2023 21:24:15 +0200 Subject: [PATCH] 0.5.11 --- Cargo.toml | 2 +- src/components/dxvk.rs | 35 ++++++++++++++++++++++++++++++++++- src/components/loader.rs | 7 +------ src/game.rs | 10 +--------- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0098fe0..7adbd64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "anime-launcher-sdk" -version = "0.5.10" +version = "0.5.11" authors = ["Nikita Podvirnyy "] license = "GPL-3.0" readme = "README.md" diff --git a/src/components/dxvk.rs b/src/components/dxvk.rs index 6a00d0d..cb1b800 100644 --- a/src/components/dxvk.rs +++ b/src/components/dxvk.rs @@ -11,7 +11,7 @@ use super::loader::ComponentsLoader; pub struct Group { pub name: String, pub title: String, - pub features: Features, + pub features: Option, pub versions: Vec } @@ -129,6 +129,39 @@ impl Version { Ok(None) } + #[inline] + /// Return this version's features + pub fn version_features(&self) -> Option { + self.features.clone() + } + + /// Return this version's features if they persist, or + /// return group's features otherwise + pub fn features_in(&self, group: &Group) -> Option { + if self.features.is_some() { + self.features.clone() + } + + else { + group.features.clone() + } + } + + /// Return this version's features if they persist, or + /// try to return group's features otherwise + pub fn features>(&self, components: T) -> anyhow::Result> { + if self.features.is_some() { + Ok(self.features.clone()) + } + + else { + match self.find_group(components)? { + Some(group) => Ok(group.features), + None => Ok(None) + } + } + } + #[inline] /// Check is current dxvk downloaded in specified folder pub fn is_downloaded_in>(&self, folder: T) -> bool { diff --git a/src/components/loader.rs b/src/components/loader.rs index 475995e..09e1f15 100644 --- a/src/components/loader.rs +++ b/src/components/loader.rs @@ -127,15 +127,10 @@ pub fn get_dxvk_versions(index: &Path) -> anyhow::Result> { None => anyhow::bail!("Wrong components index structure: wine versions must be a list") } - let features = match group.get("features") { - Some(features) => features.into(), - None => dxvk::Features::default() - }; - dxvk_groups.push(dxvk::Group { name, title, - features, + features: group.get("features").map(|v| v.into()), versions: dxvk_versions }); } diff --git a/src/game.rs b/src/game.rs index bdc1ea7..9249a2d 100644 --- a/src/game.rs +++ b/src/game.rs @@ -176,21 +176,13 @@ pub fn run() -> anyhow::Result<()> { // Add environment flags for selected dxvk if let Ok(Some(dxvk )) = config.get_selected_dxvk() { - if let Some(features) = &dxvk.features { + if let Ok(Some(features)) = dxvk.features(&config.components.path) { for (key, value) in features.env.iter() { command.env(key, replace_keywords(value, &config)); } } - - else if let Ok(Some(group)) = dxvk.find_group(&config.components.path) { - for (key, value) in group.features.env.into_iter() { - command.env(key, replace_keywords(value, &config)); - } - } } - // TODO: fix mangohud - command.envs(config.game.wine.sync.get_env_vars()); command.envs(config.game.enhancements.hud.get_env_vars(&config)); command.envs(config.game.enhancements.fsr.get_env_vars());