Add features for each script type

This commit is contained in:
2025-06-02 22:31:46 +08:00
parent abf30c8a55
commit 52811fe2eb
6 changed files with 107 additions and 0 deletions

View File

@@ -18,10 +18,16 @@ impl FixedFormatter {
}
}
#[cfg(feature = "circus")]
fn is_circus(&self) -> bool {
matches!(self.typ, Some(ScriptType::Circus))
}
#[cfg(not(feature = "circus"))]
fn is_circus(&self) -> bool {
false
}
pub fn format(&self, message: &str) -> String {
let mut result = String::new();
let vec: Vec<_> = UnicodeSegmentation::graphemes(message, true).collect();

View File

@@ -1,15 +1,22 @@
pub mod base;
#[cfg(feature = "bgi")]
pub mod bgi;
#[cfg(feature = "circus")]
pub mod circus;
#[cfg(feature = "escude")]
pub mod escude;
pub use base::{Script, ScriptBuilder};
lazy_static::lazy_static! {
pub static ref BUILDER: Vec<Box<dyn ScriptBuilder + Sync + Send>> = vec![
#[cfg(feature = "circus")]
Box::new(circus::script::CircusMesScriptBuilder::new()),
#[cfg(feature = "bgi")]
Box::new(bgi::script::BGIScriptBuilder::new()),
#[cfg(feature = "escude")]
Box::new(escude::archive::EscudeBinArchiveBuilder::new()),
#[cfg(feature = "escude")]
Box::new(escude::script::EscudeBinScriptBuilder::new()),
];
pub static ref ALL_EXTS: Vec<String> =

View File

@@ -182,13 +182,17 @@ pub struct ExtraConfig {
#[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]
/// Script type
pub enum ScriptType {
#[cfg(feature = "circus")]
/// Circus MES script
Circus,
#[cfg(feature = "bgi")]
#[value(alias("ethornell"))]
/// Buriko General Interpreter/Ethornell Script
BGI,
#[cfg(feature = "escude")]
/// Escude bin archive
EscudeArc,
#[cfg(feature = "escude")]
/// Escude bin script
Escude,
}