bump deps ver, use result instead of panic for fs watcher, hardcode dahlia tech to 1st unit

This commit is contained in:
yuvlian
2026-04-30 20:31:00 +07:00
parent 5e0f2a9673
commit 676bd63dac
12 changed files with 3151 additions and 3060 deletions
+1
View File
@@ -9,3 +9,4 @@ serde.workspace = true
serde_json.workspace = true
tokio.workspace = true
tracing.workspace = true
anyhow.workspace = true
+21 -23
View File
@@ -56,14 +56,14 @@ impl FreesrData {
}
impl FreesrData {
pub async fn load() -> Self {
pub async fn load() -> anyhow::Result<Self> {
let mut freesr_data: FreesrData = tokio::fs::read_to_string("freesr-data.json")
.await
.map(|v| {
.map_err(|e| anyhow::anyhow!("failed to read freesr-data.json: {e}"))
.and_then(|v| {
serde_json::from_str::<FreesrData>(&v)
.expect("freesr-data.json is broken, pls redownload")
})
.expect("failed to read freesr-data.json");
.map_err(|e| anyhow::anyhow!("freesr-data.json is broken: {e}, pls redownload"))
})?;
let persistent: Persistent = serde_json::from_str(
&tokio::fs::read_to_string("persistent")
@@ -96,11 +96,12 @@ impl FreesrData {
freesr_data.march_type = MultiPathAvatar::MarchHunt;
}
freesr_data
Ok(freesr_data)
}
pub async fn update(&mut self) {
*self = Self::load().await
pub async fn update(&mut self) -> anyhow::Result<()> {
*self = Self::load().await?;
Ok(())
}
async fn verify_lineup(&mut self) {
@@ -115,20 +116,17 @@ impl FreesrData {
}
pub async fn save_persistent(&self) {
let _ = tokio::fs::write(
"persistent",
serde_json::to_string_pretty(&Persistent {
lineups: self.lineups.clone(),
main_character: self.main_character,
position: self.position.clone(),
scene: self.scene.clone(),
march_type: self.march_type,
// game_language: self.game_language,
// voice_language: self.voice_langauge,
})
.unwrap(),
)
.await;
tracing::info!("persistent saved");
if let Ok(data) = serde_json::to_string_pretty(&Persistent {
lineups: self.lineups.clone(),
main_character: self.main_character,
position: self.position.clone(),
scene: self.scene.clone(),
march_type: self.march_type,
// game_language: self.game_language,
// voice_language: self.voice_langauge,
}) {
let _ = tokio::fs::write("persistent", data).await;
tracing::info!("persistent saved");
}
}
}