diff --git a/.gitignore b/.gitignore index 9b0f76c..8c4fcb7 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ set_github_env.sh + +babylonia-terminal-cli/TDData-data.db + +babylonia-terminal-cli/backtrace.txt diff --git a/babylonia-terminal-cli/Cargo.lock b/babylonia-terminal-cli/Cargo.lock index 9338401..8df03cf 100644 --- a/babylonia-terminal-cli/Cargo.lock +++ b/babylonia-terminal-cli/Cargo.lock @@ -80,6 +80,7 @@ dependencies = [ "dotenv", "downloader", "flate2", + "fs_extra", "log", "reqwest 0.12.2", "serde", @@ -397,6 +398,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.30" diff --git a/babylonia-terminal-cli/TDData-data.db b/babylonia-terminal-cli/TDData-data.db deleted file mode 100644 index b0cbf46..0000000 Binary files a/babylonia-terminal-cli/TDData-data.db and /dev/null differ diff --git a/babylonia-terminal-cli/src/main.rs b/babylonia-terminal-cli/src/main.rs index f5005f9..6ecb708 100644 --- a/babylonia-terminal-cli/src/main.rs +++ b/babylonia-terminal-cli/src/main.rs @@ -75,8 +75,8 @@ async fn main() { GameState::GameNotInstalled => { info!("Game not installed, installing it..."); GameManager::install_game( - GameState::get_config_directory(), - DownloadReporter::create(true), + GameState::get_config_directory().join("PGR"), + DownloadReporter::create(false), ) .await .expect("Failed to install the game"); @@ -90,5 +90,9 @@ async fn main() { } info!("Starting game..."); - GameManager::start_game(&wine.unwrap()).await; + GameManager::start_game( + &wine.unwrap(), + GameState::get_config_directory().join("PGR"), + ) + .await; } diff --git a/babylonia-terminal-sdk/Cargo.lock b/babylonia-terminal-sdk/Cargo.lock index 48e6665..1a31a5b 100644 --- a/babylonia-terminal-sdk/Cargo.lock +++ b/babylonia-terminal-sdk/Cargo.lock @@ -67,6 +67,7 @@ dependencies = [ "dotenv", "downloader", "flate2", + "fs_extra", "log", "reqwest 0.12.2", "serde", @@ -346,6 +347,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fs_extra" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" + [[package]] name = "futures" version = "0.3.30" diff --git a/babylonia-terminal-sdk/Cargo.toml b/babylonia-terminal-sdk/Cargo.toml index e147996..bd6d1ea 100644 --- a/babylonia-terminal-sdk/Cargo.toml +++ b/babylonia-terminal-sdk/Cargo.toml @@ -12,6 +12,7 @@ dirs = "5.0.1" dotenv = "0.15.0" downloader = { git = "https://github.com/ALEZ-DEV/downloader" } # version = "0.2.7", flate2 = "1.0.28" +fs_extra = "1.3.0" log = "0.4.21" reqwest = { version = "0.12.2", features = ["gzip"] } serde = { version = "1.0.197", features = ["derive"] } diff --git a/babylonia-terminal-sdk/src/game_manager.rs b/babylonia-terminal-sdk/src/game_manager.rs index eb74320..5b8e353 100644 --- a/babylonia-terminal-sdk/src/game_manager.rs +++ b/babylonia-terminal-sdk/src/game_manager.rs @@ -7,8 +7,9 @@ use std::{ use downloader::progress::Reporter; use flate2::read::GzDecoder; -use log::info; +use log::{debug, info}; use tar::Archive; +use tokio::fs::create_dir_all; use tokio::time::sleep; use wincompatlib::{prelude::*, wine::bundle::proton}; use xz::read::XzDecoder; @@ -126,11 +127,13 @@ impl GameManager { Ok(()) } - pub async fn install_game

(config_dir: PathBuf, progress: Arc

) -> anyhow::Result<()> + pub async fn install_game

(game_dir: PathBuf, progress: Arc

) -> anyhow::Result<()> where P: Reporter + 'static, { - let game_component = GameComponent::new(config_dir); + let _ = create_dir_all(game_dir.clone()).await; + + let game_component = GameComponent::new(game_dir); game_component.install(Some(progress)).await?; let mut config = GameState::get_config().await?; @@ -140,8 +143,9 @@ impl GameManager { Ok(()) } - pub async fn start_game(wine: &Wine) { - wine.run("/home/alez/.steam/steam/steamapps/compatdata/3841903579/pfx/drive_c/Punishing Gray Raven/launcher.exe").unwrap(); + pub async fn start_game(wine: &Wine, game_dir: PathBuf) { + debug!("Wine version : {:?}", wine.version().unwrap()); + wine.run(game_dir.join("PGR.exe")).unwrap(); loop { sleep(Duration::from_millis(10000)).await; diff --git a/babylonia-terminal-sdk/src/utils/kuro_prod_api.rs b/babylonia-terminal-sdk/src/utils/kuro_prod_api.rs index 60859c3..721fc7f 100644 --- a/babylonia-terminal-sdk/src/utils/kuro_prod_api.rs +++ b/babylonia-terminal-sdk/src/utils/kuro_prod_api.rs @@ -129,6 +129,16 @@ impl GameInfo { } } +impl Resources { + pub fn get_max_size_resources(&self) -> u64 { + let mut max_size: u64 = 0; + + self.resource.iter().for_each(|r| max_size += r.size as u64); + + max_size + } +} + impl Resource { pub fn build_download_url(&self, base_url: &str, zip_uri: &str) -> String { format!("{}{}{}", base_url, zip_uri, self.dest)