use std::path::PathBuf;
use crate::config::Config;
use crate::net::Connection;
use crate::ui::game::GameState;
use crate::ui::selection::SelectState;
#[derive(Debug, Default, PartialEq, Eq)]
pub enum AppState {
#[default]
ServerSelect,
Game,
}
pub struct App {
pub state: AppState,
pub running: bool,
pub config: Config,
pub config_path: PathBuf,
pub select: SelectState,
pub connection: Option<Connection>,
pub connected_server: Option<String>,
pub connected_server_id: Option<String>,
pub connected_char: Option<String>,
pub connected_char_id: Option<String>,
pub game: GameState,
}
impl App {
pub fn new(config: Config, config_path: PathBuf) -> Self {
Self {
state: AppState::default(),
running: true,
config,
config_path,
select: SelectState::new(),
connection: None,
connected_server: None,
connected_server_id: None,
connected_char: None,
connected_char_id: None,
game: GameState::new(),
}
}
pub fn quit(&mut self) {
self.running = false;
}
}