diff options
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/src/main.rs b/src/main.rs index 31e87da..9161263 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,39 @@ +mod core; mod launcher; mod ui; +use tokio::sync::mpsc; +use tokio::runtime::Runtime; +use std::thread; + fn main() { - // 初始化UI模块 - ui::init(); + // channel for UI -> Backend + let (tx, mut rx) = mpsc::channel(32); + + // Spawn Tokio runtime in a background thread + thread::spawn(move || { + let rt = Runtime::new().unwrap(); + rt.block_on(async move { + println!("Backend started"); + while let Some(msg) = rx.recv().await { + match msg { + ui::UiEvent::StartGame => { + println!("Backend received StartGame"); + match core::manifest::fetch_version_manifest().await { + Ok(manifest) => { + println!("Fetched manifest. Latest release: {}", manifest.latest.release); + println!("Latest snapshot: {}", manifest.latest.snapshot); + } + Err(e) => { + eprintln!("Error fetching manifest: {}", e); + } + } + } + } + } + }); + }); - // 启动器模块的逻辑 - launcher::start(); -}
\ No newline at end of file + // Run UI on main thread (must be main thread for GTK on some platforms) + ui::init(tx); +} |