mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-14 17:04:18 +08:00
支持 Psb Version 4 写入
This commit is contained in:
@@ -628,14 +628,6 @@ fn create_file<'a>(
|
||||
let resources: Vec<Resource> = serde_json::from_str(&data["resources"].dump())?;
|
||||
let extra_resources: Vec<Resource> = serde_json::from_str(&data["extra_resources"].dump())?;
|
||||
let mut psb = VirtualPsbFixed::with_json(&data)?;
|
||||
if psb.header().version > 3 {
|
||||
eprintln!(
|
||||
"Warning: PSB version {} is higher than 3, downgrading to 3. Some features may not be supported.",
|
||||
psb.header().version
|
||||
);
|
||||
crate::COUNTER.inc_warning();
|
||||
psb.header_mut().version = 3;
|
||||
}
|
||||
psb.header_mut().encryption = 0; // We don't support encryption.
|
||||
let folder_path = {
|
||||
let mut pb = std::path::PathBuf::from(custom_filename);
|
||||
@@ -651,9 +643,7 @@ fn create_file<'a>(
|
||||
psb.extra_mut().push(res);
|
||||
}
|
||||
let psb = psb.to_psb(false);
|
||||
let psb_writer = PsbWriter::new(psb, &mut writer);
|
||||
psb_writer
|
||||
.finish()
|
||||
.map_err(|e| anyhow::anyhow!("Failed to write psb: {:?}", e))?;
|
||||
psb.finish_v4(&mut writer)
|
||||
.map_err(|e| anyhow::anyhow!("Failed to write PSB file: {:?}", e))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ use crate::scripts::base::*;
|
||||
use crate::types::*;
|
||||
use crate::utils::encoding::*;
|
||||
use anyhow::Result;
|
||||
use emote_psb::{PsbReader, PsbWriter};
|
||||
use emote_psb::PsbReader;
|
||||
use fancy_regex::Regex;
|
||||
use std::collections::{HashMap, HashSet};
|
||||
use std::io::{Read, Seek};
|
||||
@@ -838,8 +838,7 @@ impl Script for ScnScript {
|
||||
return Err(anyhow::anyhow!("Some messages were not processed."));
|
||||
}
|
||||
let psb = psb.to_psb(true);
|
||||
let writer = PsbWriter::new(psb, file);
|
||||
writer.finish().map_err(|e| {
|
||||
psb.finish_v4(file).map_err(|e| {
|
||||
anyhow::anyhow!("Failed to write PSB to file {}: {:?}", self.filename, e)
|
||||
})?;
|
||||
Ok(())
|
||||
@@ -879,8 +878,7 @@ impl Script for ScnScript {
|
||||
psb.from_json(&json)?;
|
||||
psb.to_psb(true)
|
||||
};
|
||||
let writer = PsbWriter::new(psb, file);
|
||||
writer.finish().map_err(|e| {
|
||||
psb.finish_v4(file).map_err(|e| {
|
||||
anyhow::anyhow!("Failed to write PSB to file {}: {:?}", self.filename, e)
|
||||
})?;
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user