27 lines
807 B
Plaintext
27 lines
807 B
Plaintext
type scriptstringlist [display="Script String List"]
|
|
{
|
|
u32 raw_count [ui, readonly, display="Raw Count"];
|
|
i32 strings_ptr [ui, readonly, display="Strings Ptr"];
|
|
|
|
// C++ code decrements count by 1
|
|
count = raw_count - 1 [ui, readonly, display="Count"];
|
|
|
|
if (strings_ptr == -1) {
|
|
// Two-pass parsing (matching C++ XScriptStringList::ParseData)
|
|
// Pass 1: Read all string pointers
|
|
repeat(count) {
|
|
i32 str_ptr;
|
|
string_ptrs = push("string_ptrs", str_ptr);
|
|
}
|
|
|
|
// Pass 2: Parse all strings (reads null-terminated string data)
|
|
// Note: Each string should check if its ptr == -1 before parsing
|
|
repeat(count) {
|
|
str = parse_here("scriptstring");
|
|
strings = push("strings", str);
|
|
}
|
|
|
|
strings = strings [ui, table="Strings", columns="ptr,value"];
|
|
}
|
|
}
|