Disable typing pipes in script names

This disables typing the pipe character in the data fields of terminals
and script boxes. Care has been taken to make sure that it's still
possible to type pipes in room text.

This is because pipes are the line separator in the big XML tag that
stores every single script line, and thus a script name with pipes would
end up being split up after the level file has been saved and loaded
again.
This commit is contained in:
Misa 2024-01-10 00:33:39 -08:00
parent a1c7291bc4
commit a806b072bd
1 changed files with 14 additions and 0 deletions

View File

@ -3472,6 +3472,20 @@ void editorinput(void)
case EditorSubState_DRAW_INPUT:
// We're taking input!
if (customentities[ed.text_entity].t == 18 || customentities[ed.text_entity].t == 19)
{
// This is a terminal or script box, so this is a script name.
// Remove all pipes, they are the line separator in the XML.
// When this loop reaches the end, it wraps to SIZE_MAX; SIZE_MAX + 1 is 0
for (size_t i = key.keybuffer.length() - 1; i + 1 > 0; i--)
{
if (key.keybuffer[i] == '|')
{
key.keybuffer.erase(key.keybuffer.begin() + i);
}
}
}
if (escape_pressed)
{
// Cancel it, and remove the enemy it's tied to if necessary