Skip to main content

launcher/pages/trainer/
tasks.rs

1use supreme_dependencies::{
2    check_dependencies_exist, check_hd_fonts_needed, start_install_dependencies,
3    start_install_hd_fonts,
4};
5use supreme_fs::GameStorage;
6
7use crate::tasks::{TaskEvent, TaskHandle, spawn_task};
8
9#[must_use]
10pub fn start_trainer_checks(
11    ctx: eframe::egui::Context,
12    storage: &GameStorage,
13) -> TaskHandle<super::TrainerData> {
14    let storage = storage.clone();
15    spawn_task(ctx, move |tx| {
16        let deps = check_dependencies_exist(&storage);
17        let hd = if deps {
18            check_hd_fonts_needed(&storage)
19        } else {
20            false
21        };
22
23        let _ = tx.send(TaskEvent::PageData(super::TrainerData::DependenciesCheck(
24            deps,
25        )));
26        let _ = tx.send(TaskEvent::PageData(super::TrainerData::HdFontsCheck(hd)));
27
28        Ok(super::TrainerData::DependenciesCheck(deps))
29    })
30}
31
32#[must_use]
33pub fn start_install_deps(ctx: eframe::egui::Context, storage: &GameStorage) -> TaskHandle<()> {
34    let storage = storage.clone();
35    spawn_task(ctx, move |tx| {
36        let rx = start_install_dependencies(&storage);
37        for event in rx {
38            let _ = tx.send(TaskEvent::from(event).map(|()| ()));
39        }
40        Ok(())
41    })
42}
43
44#[must_use]
45pub fn start_install_fonts(ctx: eframe::egui::Context, storage: &GameStorage) -> TaskHandle<()> {
46    let storage = storage.clone();
47    spawn_task(ctx, move |tx| {
48        let rx = start_install_hd_fonts(&storage);
49        for event in rx {
50            let _ = tx.send(TaskEvent::from(event).map(|()| ()));
51        }
52        Ok(())
53    })
54}