mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-06 12:58:45 +08:00
Fix multilang support for select in scn file
This commit is contained in:
@@ -171,6 +171,16 @@ impl PsbValueFixed {
|
||||
}
|
||||
}
|
||||
|
||||
/// Sets the value of this PSB value to a new integer.
|
||||
pub fn set_i64(&mut self, value: i64) {
|
||||
*self = PsbValueFixed::Number(PsbNumber::Integer(value));
|
||||
}
|
||||
|
||||
/// Sets the value of this PSB value to a new object
|
||||
pub fn set_obj(&mut self, value: PsbObjectFixed) {
|
||||
*self = PsbValueFixed::Object(value);
|
||||
}
|
||||
|
||||
/// Sets the value of this PSB value to a new string.
|
||||
pub fn set_str(&mut self, value: &str) {
|
||||
match self {
|
||||
@@ -730,6 +740,12 @@ pub struct PsbObjectFixed {
|
||||
}
|
||||
|
||||
impl PsbObjectFixed {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
values: HashMap::new(),
|
||||
}
|
||||
}
|
||||
|
||||
/// Creates a new empty PSB object.
|
||||
pub fn to_psb(self, warn_on_none: bool) -> PsbObject {
|
||||
let mut hash_map = HashMap::new();
|
||||
|
||||
@@ -677,11 +677,21 @@ impl Script for ScnScript {
|
||||
if cur_mes.is_none() {
|
||||
cur_mes = mes.next();
|
||||
}
|
||||
if select["language"].is_list()
|
||||
if self.language_index != 0
|
||||
&& {
|
||||
while select["language"].len() <= self.language_index {
|
||||
select["language"][self.language_index] =
|
||||
select["language"][0].clone();
|
||||
// TenShiSouZou
|
||||
// first block is null
|
||||
if select["language"].len() == 0 {
|
||||
select["language"].push_member(PsbValueFixed::Null);
|
||||
continue;
|
||||
}
|
||||
let mut obj = PsbObjectFixed::new();
|
||||
obj["text"].set_str("");
|
||||
obj["speechtext"].set_str("");
|
||||
obj["searchtext"].set_str("");
|
||||
obj["textlength"].set_i64(0);
|
||||
select["language"][self.language_index].set_obj(obj);
|
||||
}
|
||||
true
|
||||
}
|
||||
@@ -702,10 +712,12 @@ impl Script for ScnScript {
|
||||
}
|
||||
}
|
||||
lang_obj["text"].set_string(text.replace("\n", "\\n"));
|
||||
lang_obj["speechtext"].set_string(get_save_message(&text, true));
|
||||
lang_obj["searchtext"].set_string(get_save_message(&text, false));
|
||||
lang_obj["textlength"].set_i64(text.chars().count() as i64);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if select["text"].is_string() {
|
||||
} else if select["text"].is_string() {
|
||||
let m = match cur_mes.take() {
|
||||
Some(m) => m,
|
||||
None => {
|
||||
|
||||
Reference in New Issue
Block a user