diff --git a/Cargo.lock b/Cargo.lock index 9a16cd1..a11a135 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,8 +86,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "0.5.10" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=0.5.10#186aa204d6a87a26198a00c9fb59e0a313f68227" +version = "0.5.11" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=0.5.11#46547a886f51ba8c58918c0903273c3d3c63d5fa" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 35e28d4..c1cbad7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ glib-build-tools = "0.17" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "0.5.10" +tag = "0.5.11" # path = "../anime-launcher-sdk" # ! for dev purposes only diff --git a/src/ui/components/mod.rs b/src/ui/components/mod.rs index 09c418b..2e81eac 100644 --- a/src/ui/components/mod.rs +++ b/src/ui/components/mod.rs @@ -56,10 +56,14 @@ impl From for ComponentsListVersion { #[inline] fn from(version: wine::Version) -> Self { Self { + recommended: match version.version_features() { + Some(features) => features.recommended, + None => true + }, + name: version.name, title: version.title, - uri: version.uri, - recommended: true + uri: version.uri } } } @@ -68,10 +72,14 @@ impl From for ComponentsListVersion { #[inline] fn from(version: dxvk::Version) -> Self { Self { + recommended: match version.version_features() { + Some(features) => features.recommended, + None => true + }, + name: version.name, title: version.title, - uri: version.uri, - recommended: true + uri: version.uri } } } diff --git a/src/ui/preferences/general.rs b/src/ui/preferences/general.rs index b22976a..278b97f 100644 --- a/src/ui/preferences/general.rs +++ b/src/ui/preferences/general.rs @@ -732,9 +732,14 @@ impl SimpleAsyncComponent for GeneralApp { group.versions = group.versions.into_iter().take(12).collect(); let mut group: ComponentsListGroup = group.into(); + let mut recommended = 6; - if group.versions.len() > 6 { - for i in 6..group.versions.len() { + for i in 0..group.versions.len() { + if recommended > 0 && group.versions[i].recommended { + recommended -= 1; + } + + else { group.versions[i].recommended = false; } } @@ -758,9 +763,14 @@ impl SimpleAsyncComponent for GeneralApp { group.versions = group.versions.into_iter().take(12).collect(); let mut group: ComponentsListGroup = group.into(); + let mut recommended = 6; - if group.versions.len() > 6 { - for i in 6..group.versions.len() { + for i in 0..group.versions.len() { + if recommended > 0 && group.versions[i].recommended { + recommended -= 1; + } + + else { group.versions[i].recommended = false; } } @@ -940,16 +950,13 @@ impl SimpleAsyncComponent for GeneralApp { self.downloaded_wine_versions = wine::get_downloaded(&CONFIG.components.path, &CONFIG.game.wine.builds) .unwrap_or_default() .into_iter() - .flat_map(|group| group.versions - .into_iter() - .map(move |version| ( - version.clone(), - version.features.unwrap_or_else( - || group.features.to_owned().unwrap_or_default() - )) - ) - ) - .collect(); + .flat_map(|group| group.versions.clone().into_iter() + .map(move |version| { + let features = version.features_in(&group).unwrap_or_default(); + + (version, features) + }) + ).collect(); self.selected_wine_version = if let Some(selected) = &CONFIG.game.wine.selected { let mut index = 0;