mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-08 05:48:46 +08:00
增强脚本解析功能,支持多种脚本类型识别和处理
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use crate::types::*;
|
||||
use anyhow::Result;
|
||||
|
||||
pub trait ScriptBuilder {
|
||||
pub trait ScriptBuilder: std::fmt::Debug {
|
||||
fn default_encoding(&self) -> Encoding;
|
||||
|
||||
fn default_patched_encoding(&self) -> Encoding {
|
||||
@@ -17,6 +17,10 @@ pub trait ScriptBuilder {
|
||||
|
||||
fn extensions(&self) -> &'static [&'static str];
|
||||
|
||||
fn is_this_format(&self, _filename: &str, _buf: &[u8], _buf_len: usize) -> Option<u8> {
|
||||
None
|
||||
}
|
||||
|
||||
fn script_type(&self) -> &'static ScriptType;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ use crate::types::*;
|
||||
use crate::utils::encoding::{decode_to_string, encode_string};
|
||||
use anyhow::Result;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct BGIScriptBuilder {}
|
||||
|
||||
impl BGIScriptBuilder {
|
||||
@@ -37,6 +38,13 @@ impl ScriptBuilder for BGIScriptBuilder {
|
||||
fn script_type(&self) -> &'static ScriptType {
|
||||
&ScriptType::BGI
|
||||
}
|
||||
|
||||
fn is_this_format(&self, _filename: &str, buf: &[u8], buf_len: usize) -> Option<u8> {
|
||||
if buf_len > 28 && buf.starts_with(b"BurikoCompiledScriptVer1.00\0") {
|
||||
return Some(255);
|
||||
}
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
pub struct BGIScript {
|
||||
|
||||
@@ -4,6 +4,7 @@ use crate::types::*;
|
||||
use crate::utils::encoding::{decode_to_string, encode_string};
|
||||
use anyhow::Result;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct CircusMesScriptBuilder {}
|
||||
|
||||
impl CircusMesScriptBuilder {
|
||||
|
||||
1
src/scripts/escude/mod.rs
Normal file
1
src/scripts/escude/mod.rs
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
pub mod base;
|
||||
pub mod bgi;
|
||||
pub mod circus;
|
||||
pub mod escude;
|
||||
|
||||
pub use base::{Script, ScriptBuilder};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user