Babylonia-terminal/babylonia_terminal_launcher/native/hub/src/game_state.rs
2024-05-24 23:49:55 +02:00

32 lines
1.2 KiB
Rust

use babylonia_terminal_sdk::game_state::GameState;
use crate::messages::game_state::{AskGameState, GameState as GameStateMessage, States};
impl GameStateMessage {
fn from_sdk_state_to_msg_state(state: GameState) -> Self {
let game_state = match state {
GameState::ProtonNotInstalled => States::ProtonNotInstalled,
GameState::DXVKNotInstalled => States::DxvkNotInstalled,
GameState::FontNotInstalled => States::FontNotInstalled,
GameState::DependecieNotInstalled => States::DependecieNotInstalled,
GameState::GameNotInstalled => States::GameNotInstalled,
GameState::GameNeedUpdate => States::GameNeedUpdate,
GameState::GameNotPatched => States::GameNotPatched,
GameState::GameInstalled => States::GameInstalled,
};
GameStateMessage {
state: game_state.into(),
}
}
}
pub async fn listen_game_state() {
let mut receiver = AskGameState::get_dart_signal_receiver();
while let Some(_) = receiver.recv().await {
let result_state = GameState::get_current_state().await;
if let Ok(state) = result_state {
GameStateMessage::from_sdk_state_to_msg_state(state).send_signal_to_dart();
}
}
}