From c1a4c5c2f6d7df88186863b2628a11e6253f42cf Mon Sep 17 00:00:00 2001 From: ALEZ-DEV Date: Mon, 29 Apr 2024 22:10:59 +0200 Subject: [PATCH] Progress work normally now --- .gitignore | 4 ++++ babylonia-terminal-cli/Cargo.lock | 7 +++++++ babylonia-terminal-cli/TDData-data.db | Bin 12288 -> 0 bytes babylonia-terminal-cli/src/main.rs | 10 +++++++--- babylonia-terminal-sdk/Cargo.lock | 7 +++++++ babylonia-terminal-sdk/Cargo.toml | 1 + babylonia-terminal-sdk/src/game_manager.rs | 14 +++++++++----- .../src/utils/kuro_prod_api.rs | 10 ++++++++++ 8 files changed, 45 insertions(+), 8 deletions(-) delete mode 100644 babylonia-terminal-cli/TDData-data.db 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 b0cbf462f206d056eac94353f2014240507000d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 zcmeI&$?E*beE{&^Z)OrR1~c)=%A88Om%vNlCGZk> z3A_Ye0xyA=z)RpI@Dg|l{8qlun=Xym(( zdH$bkzxX^ie@^<}zAC>e|19}mH}w*D3H${J{1f)|kKX>p)xPq7{VA=|{nIZ$4I1D- zGIlmfUaHgHI_CfaKA2dS$M#X3R(x#%ZfDjlR|=X9kW=kf{UroUeE*^>A0_p_+rMl{xJE?5s}in)$q zx(MxdaXl2xlT^YHT${*Z5VJ#mamA`A%e|SBQMr$&Reu~AEv%J(`i?3T-_AMUk7v5l+} zeBI3wQ4W|d^};13k>n8d+>bcA1!oQp>c^dm1O7%Z5A#Gl`XdVYenNtU+4-}|kEOJ; zx9SwAb_{`-FD?m-1UY^q!YWcNJKMFqxgA{MY$pI1FM8DI1Va<3UQUe2V5r6Q5avyh zEjnJZr7qi?{F-4G+VzfXlKa64Kpn}JW?_?B=qD1Pqqo!h(~Pk zEviWj8_AEohDy6p*a;3%3PKJJJ-F@O8mdZASy1QxcpTi9)x(W^!@t4 zBjVP3>-1~XY#sd3#7vDpX_B^a?~N1sj^pg_zEjgUdVFH6A6-hCOS zO+Jg6WTf})PNw@-ST~BNO`dviwm{b4TFJ56aeaw(Cvap1qaSSM<&)+ZporS$lrUV|}qkNc0!u zq1s5;oXG@N=!@*7k|lc40tijsOGrbEjIrsX9q-xZPpZZtE>?FL&u2DWbOksGha^Y$ zOmM@i3Uv{38T~Z44_Mfn^u|1Gx`I+L^@jo`2$B$VQXiN5Me70E)X&#Yl;9I<{^}1ws#-q% z68a6EU=)ldDU?zt3_`L9A<~FIQtWm@6Eu!~{|~?W&!&y@3N23&k}g%0V%;g~vKWit zA}?p8qspV|@wd0X`j5AN{oDT?wmsQWtlQ*p2Lqf7auaLBM<7F4JCN_C`5ETUd%zmH zEb>yf$-UtKNjOeT7h+w0DG-N7ca+s-FwmD!!#5lEq`k9cN=FU;KB`rf?bzkYT9gh1 zYv6IjtR*yk*z}6~9*Kmms}z#X$%Jm5b@VQ!SKJOC)N~t|v}%S;C4CWgi|!o%aoE;D zR(}>=iuy6(eLxxZqN0Q8qfG1s+-xZUPr`JAnS8aI3SjCv2Om@5Uj1#Y@;<)kbXUg^ zocm>ateOrP>S-|ecs{ra%1%mCpV-oh#yB^WCh7E6G9aiYuAlocoTSmD<_l!x@mij- z;<2Ua{WPe2H1ys+)q<&oo@(?dGq1}iw{XNgaMhGW5CxVlH9B@T<*mJqII)Y=D1{7@ z&6ag+`;jZB3wMea8O_E%@+__@gEUp^ofDp~)#kG2swI|(g$ght9s!t1DYON5+5)UH zT>V=QGvH~Xw*++oOcA*eWZ+&JTxBnFwY?{voxe#lwdI@ZO2kaVcoxNZ|3SD0WRBJ^%#>|N^Bj^`ohrnPrhy{iKt>TXkiXJNcN>yZWN z4a`9v8%YoH)K1m}P%TdLMHPWbUNlYbF2l9;x|5g;ivyk)zROopJOX!1;nn21r)^bNpohAv%yT%k*6&4A7 ze@37H%M>BL><&xpv%dO^4W`Mh1QR)u#DlXfXGM0HMOU|LN+fQakpnIdMMr2X5lMSR zO#dELf|>{?@{FpqbL1YHU#w)!Q#{s(5(fqkC;zkl;zZ_nkGUIH(Hm%vNlCGZk>3A_Ye d0xyA=z)RpI@Dlh768Q1^m*2jB|8K$9{|$kkF3A7@ 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)