mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-16 10:04:20 +08:00
add selects import support for scn script
This commit is contained in:
@@ -128,10 +128,6 @@ impl Script for ScnScript {
|
|||||||
FormatOptions::None
|
FormatOptions::None
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_output_supported(&self, _: OutputScriptType) -> bool {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
fn extract_messages(&self) -> Result<Vec<Message>> {
|
fn extract_messages(&self) -> Result<Vec<Message>> {
|
||||||
let mut messages = Vec::new();
|
let mut messages = Vec::new();
|
||||||
let root = self.psb.root();
|
let root = self.psb.root();
|
||||||
@@ -507,7 +503,51 @@ impl Script for ScnScript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// #TODO: selects and comumode
|
for select in scene["selects"].members_mut() {
|
||||||
|
if select.is_object() {
|
||||||
|
if cur_mes.is_none() {
|
||||||
|
cur_mes = mes.next();
|
||||||
|
}
|
||||||
|
if select["language"].is_list()
|
||||||
|
&& select["language"].len() > self.language_index
|
||||||
|
&& select["language"][self.language_index].is_object()
|
||||||
|
{
|
||||||
|
let lang_obj = &mut select["language"][self.language_index];
|
||||||
|
if lang_obj["text"].is_string() {
|
||||||
|
let m = match cur_mes.take() {
|
||||||
|
Some(m) => m,
|
||||||
|
None => {
|
||||||
|
return Err(anyhow::anyhow!("No enough messages."));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let mut text = m.message.clone();
|
||||||
|
if let Some(replacement) = replacement {
|
||||||
|
for (key, value) in replacement.map.iter() {
|
||||||
|
text = text.replace(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
lang_obj["text"].set_string(text.replace("\n", "\\n"));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if select["text"].is_string() {
|
||||||
|
let m = match cur_mes.take() {
|
||||||
|
Some(m) => m,
|
||||||
|
None => {
|
||||||
|
return Err(anyhow::anyhow!("No enough messages."));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let mut text = m.message.clone();
|
||||||
|
if let Some(replacement) = replacement {
|
||||||
|
for (key, value) in replacement.map.iter() {
|
||||||
|
text = text.replace(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
select["text"].set_string(text.replace("\n", "\\n"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// #TODO: comumode
|
||||||
}
|
}
|
||||||
if cur_mes.is_some() || mes.next().is_some() {
|
if cur_mes.is_some() || mes.next().is_some() {
|
||||||
return Err(anyhow::anyhow!("Some messages were not processed."));
|
return Err(anyhow::anyhow!("Some messages were not processed."));
|
||||||
|
|||||||
Reference in New Issue
Block a user