mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-21 03:14:41 +08:00
Add export support
This commit is contained in:
187
src/types.rs
Normal file
187
src/types.rs
Normal file
@@ -0,0 +1,187 @@
|
||||
use clap::ValueEnum;
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Copy, Clone, Serialize, Deserialize, Debug)]
|
||||
#[serde(untagged, rename_all = "camelCase")]
|
||||
/// Text Encoding
|
||||
pub enum Encoding {
|
||||
/// Automatically detect encoding
|
||||
Auto,
|
||||
/// UTF-8 encoding
|
||||
Utf8,
|
||||
/// Shift-JIS encoding
|
||||
Cp932,
|
||||
/// GB2312 encoding
|
||||
Gb2312,
|
||||
/// Code page encoding (Windows only)
|
||||
#[cfg(windows)]
|
||||
CodePage(u32),
|
||||
}
|
||||
|
||||
impl Default for Encoding {
|
||||
fn default() -> Self {
|
||||
Encoding::Utf8
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]
|
||||
/// Text Encoding
|
||||
pub enum TextEncoding {
|
||||
/// Use script's default encoding
|
||||
Default,
|
||||
/// Automatically detect encoding
|
||||
Auto,
|
||||
/// UTF-8 encoding
|
||||
Utf8,
|
||||
/// Shift-JIS encoding
|
||||
Cp932,
|
||||
/// GB2312 encoding
|
||||
Gb2312,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]
|
||||
/// Script type
|
||||
pub enum OutputScriptType {
|
||||
/// Text script
|
||||
Txt,
|
||||
/// JSON which can be used for GalTransl
|
||||
Json,
|
||||
}
|
||||
|
||||
impl AsRef<str> for OutputScriptType {
|
||||
fn as_ref(&self) -> &str {
|
||||
match self {
|
||||
OutputScriptType::Txt => "txt",
|
||||
OutputScriptType::Json => "json",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]
|
||||
pub enum CircusMesType {
|
||||
/// fortissimo//Akkord:Bsusvier
|
||||
Ffexa,
|
||||
/// fortissimo EXS//Akkord:nächsten Phase
|
||||
Ffexs,
|
||||
/// Eternal Fantasy
|
||||
Ef,
|
||||
/// D.C.〜ダ・カーポ〜 温泉編
|
||||
Dcos,
|
||||
/// ことり Love Ex P
|
||||
Ktlep,
|
||||
/// D.C.WhiteSeason
|
||||
Dcws,
|
||||
/// D.C. Summer Vacation
|
||||
Dcsv,
|
||||
/// D.C.P.C.(Vista)
|
||||
Dcpc,
|
||||
/// D.C.〜ダ・カーポ〜 MEMORIES DISC
|
||||
Dcmems,
|
||||
/// D.C. Dream X’mas
|
||||
Dcdx,
|
||||
/// D.C.A.S. 〜ダ・カーポ〜アフターシーズンズ
|
||||
Dcas,
|
||||
/// D.C.II 春風のアルティメットバトル!
|
||||
Dcbs,
|
||||
/// D.C.II Fall in Love
|
||||
Dc2fl,
|
||||
/// D.C.II 春風のアルティメットバトル!
|
||||
Dc2bs,
|
||||
/// D.C.II Dearest Marriage
|
||||
Dc2dm,
|
||||
/// D.C.II 〜featuring Yun2〜
|
||||
Dc2fy,
|
||||
/// D.C.II C.C. 月島小恋のらぶらぶバスルーム
|
||||
Dc2cckko,
|
||||
/// D.C.II C.C. 音姫先生のどきどき特別授業
|
||||
Dc2ccotm,
|
||||
/// D.C.II Spring Celebration
|
||||
Dc2sc,
|
||||
/// D.C.II To You
|
||||
Dc2ty,
|
||||
/// D.C.II P.C.
|
||||
Dc2pc,
|
||||
/// D.C.III RX-rated
|
||||
Dc3rx,
|
||||
/// D.C.III P.P.~ダ・カーポIII プラチナパートナー~
|
||||
Dc3pp,
|
||||
/// D.C.III WithYou
|
||||
Dc3wy,
|
||||
/// D.C.III DreamDays
|
||||
Dc3dd,
|
||||
/// D.C.4 ~ダ・カーポ4~
|
||||
Dc4,
|
||||
/// D.C.4 Plus Harmony 〜ダ・カーポ4〜 プラスハーモニー
|
||||
Dc4ph,
|
||||
/// D.S. -Dal Segno-
|
||||
Ds,
|
||||
/// D.S.i.F. -Dal Segno- in Future
|
||||
Dsif,
|
||||
/// てんぷれ!
|
||||
Tmpl,
|
||||
/// 百花百狼/Hyakka Hyakurou
|
||||
Nightshade,
|
||||
}
|
||||
|
||||
impl AsRef<str> for CircusMesType {
|
||||
fn as_ref(&self) -> &str {
|
||||
match self {
|
||||
CircusMesType::Ffexa => "ffexa",
|
||||
CircusMesType::Ffexs => "ffexs",
|
||||
CircusMesType::Ef => "ef",
|
||||
CircusMesType::Dcos => "dcos",
|
||||
CircusMesType::Ktlep => "ktlep",
|
||||
CircusMesType::Dcws => "dcws",
|
||||
CircusMesType::Dcsv => "dcsv",
|
||||
CircusMesType::Dcpc => "dcpc",
|
||||
CircusMesType::Dcmems => "dcmems",
|
||||
CircusMesType::Dcdx => "dcdx",
|
||||
CircusMesType::Dcas => "dcas",
|
||||
CircusMesType::Dcbs => "dcbs",
|
||||
CircusMesType::Dc2fl => "dc2fl",
|
||||
CircusMesType::Dc2bs => "dc2bs",
|
||||
CircusMesType::Dc2dm => "dc2dm",
|
||||
CircusMesType::Dc2fy => "dc2fy",
|
||||
CircusMesType::Dc2cckko => "dc2cckko",
|
||||
CircusMesType::Dc2ccotm => "dc2ccotm",
|
||||
CircusMesType::Dc2sc => "dc2sc",
|
||||
CircusMesType::Dc2ty => "dc2ty",
|
||||
CircusMesType::Dc2pc => "dc2pc",
|
||||
CircusMesType::Dc3rx => "dc3rx",
|
||||
CircusMesType::Dc3pp => "dc3pp",
|
||||
CircusMesType::Dc3wy => "dc3wy",
|
||||
CircusMesType::Dc3dd => "dc3dd",
|
||||
CircusMesType::Dc4 => "dc4",
|
||||
CircusMesType::Dc4ph => "dc4ph",
|
||||
CircusMesType::Ds => "ds",
|
||||
CircusMesType::Dsif => "dsif",
|
||||
CircusMesType::Tmpl => "tmpl",
|
||||
CircusMesType::Nightshade => "nightshade",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct ExtraConfig {
|
||||
pub circus_mes_type: Option<CircusMesType>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Debug, ValueEnum, PartialEq, Eq, PartialOrd, Ord)]
|
||||
/// Script type
|
||||
pub enum ScriptType {
|
||||
/// Circus MES script
|
||||
Circus,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
pub struct Message {
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub name: Option<String>,
|
||||
pub message: String,
|
||||
}
|
||||
|
||||
impl Message {
|
||||
pub fn new(message: String, name: Option<String>) -> Self {
|
||||
Message { message, name }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user