- updated `wincompatlib` version
- made `LauncherState::get_from_config` use proper prefix path
This commit is contained in:
Observer KRypt0n_ 2023-03-15 23:04:58 +02:00
parent 977ba14056
commit c5ca8d533c
No known key found for this signature in database
GPG key ID: 844DA47BA25FE1E2
3 changed files with 32 additions and 9 deletions

View file

@ -1,6 +1,6 @@
[package]
name = "anime-launcher-sdk"
version = "0.5.1"
version = "0.5.2"
authors = ["Nikita Podvirnyy <suimin.tu.mu.ga.mi@gmail.com>"]
license = "GPL-3.0"
readme = "README.md"
@ -18,7 +18,7 @@ serde = { version = "1.0", features = ["derive"], optional = true }
serde_json = { version = "1.0", optional = true }
enum-ordinalize = { version = "3.1", optional = true }
wincompatlib = { version = "0.3", features = ["all"], optional = true }
wincompatlib = { version = "0.4", features = ["all"], optional = true }
lazy_static = { version = "1.4", optional = true }
md-5 = { version = "0.10", features = ["asm"], optional = true }
discord-rich-presence = { version = "0.2.3", optional = true }

View file

@ -1,5 +1,7 @@
use std::path::PathBuf;
use std::collections::HashMap;
use std::process::Output;
use std::io::Result;
use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
@ -327,35 +329,35 @@ impl WineBootExt for WincompatlibWine {
}
}
fn update_prefix<T: Into<PathBuf>>(&self, path: T) -> std::io::Result<std::process::Output> {
fn update_prefix<T: Into<PathBuf>>(&self, path: Option<T>) -> Result<Output> {
match self {
Self::Default(wine) => wine.update_prefix(path),
Self::Proton(proton) => proton.update_prefix(path)
}
}
fn stop_processes(&self, force: bool) -> std::io::Result<std::process::Output> {
fn stop_processes(&self, force: bool) -> Result<Output> {
match self {
Self::Default(wine) => wine.stop_processes(force),
Self::Proton(proton) => proton.stop_processes(force)
}
}
fn restart(&self) -> std::io::Result<std::process::Output> {
fn restart(&self) -> Result<Output> {
match self {
Self::Default(wine) => wine.restart(),
Self::Proton(proton) => proton.restart()
}
}
fn shutdown(&self) -> std::io::Result<std::process::Output> {
fn shutdown(&self) -> Result<Output> {
match self {
Self::Default(wine) => wine.shutdown(),
Self::Proton(proton) => proton.shutdown()
}
}
fn end_session(&self) -> std::io::Result<std::process::Output> {
fn end_session(&self) -> Result<Output> {
match self {
Self::Default(wine) => wine.end_session(),
Self::Proton(proton) => proton.end_session()

View file

@ -3,9 +3,12 @@ use std::path::PathBuf;
use anime_game_core::prelude::*;
use anime_game_core::genshin::prelude::*;
use wincompatlib::prelude::*;
use serde::{Serialize, Deserialize};
use crate::consts;
use super::components::wine::WincompatlibWine;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum LauncherState {
@ -145,10 +148,28 @@ impl LauncherState {
let config = crate::config::get()?;
let mut wine_prefix = config.game.wine.prefix.clone();
// Check wine existence
#[cfg(feature = "components")]
{
if config.get_selected_wine()?.is_none() {
if let Some(wine) = config.get_selected_wine()? {
let wine = wine
.to_wine(&config.components.path, Some(&config.game.wine.builds.join(&wine.name)))
.with_prefix(&config.game.wine.prefix);
match wine {
WincompatlibWine::Default(wine) => if let Some(prefix) = wine.prefix {
wine_prefix = prefix;
}
WincompatlibWine::Proton(proton) => if let Some(prefix) = proton.wine().prefix.clone() {
wine_prefix = prefix;
}
}
}
else {
return Ok(Self::WineNotInstalled);
}
}
@ -162,6 +183,6 @@ impl LauncherState {
});
}
Self::get(config.game.wine.prefix, config.game.path, voices, config.patch.servers, status)
Self::get(wine_prefix, config.game.path, voices, config.patch.servers, status)
}
}