use std::collections::BTreeMap; use serde::{Deserialize, Serialize}; use super::{ avatar::MultiPathAvatar, scene::{Position, Scene}, }; // #[derive(Serialize, Deserialize, Clone, Debug, Copy, PartialEq, Eq, Default)] // #[repr(u32)] // pub enum AllowedLanguages { // #[default] // En, // Jp, // Kr, // Cn, // } // impl FromStr for AllowedLanguages { // type Err = (); // fn from_str(input: &str) -> Result { // match input { // "en" => Ok(AllowedLanguages::En), // "kr" => Ok(AllowedLanguages::Kr), // "jp" => Ok(AllowedLanguages::Jp), // "cn" => Ok(AllowedLanguages::Cn), // _ => Ok(AllowedLanguages::En), // } // } // } #[derive(Debug, Serialize, Deserialize)] pub struct Persistent { #[serde(default)] pub lineups: BTreeMap, #[serde(default)] pub position: Position, #[serde(default)] pub scene: Scene, pub main_character: MultiPathAvatar, pub march_type: MultiPathAvatar, // pub game_language: AllowedLanguages, // pub voice_language: AllowedLanguages, #[serde(default = "default_true")] pub enable_sw_global: Option, #[serde(default = "default_true")] pub enable_castorice_global: Option, } fn default_true() -> Option { Some(true) } impl Default for Persistent { fn default() -> Self { Self { lineups: BTreeMap::from([(0, 1313), (1, 1006), (2, 8001), (3, 1405)]), position: Default::default(), main_character: MultiPathAvatar::FemaleRemembrance, scene: Default::default(), march_type: MultiPathAvatar::MarchHunt, // game_language: AllowedLanguages::En, // voice_language: AllowedLanguages::Jp, enable_sw_global: Some(true), enable_castorice_global: Some(true), } } }