From a806b072bd8635e40c0a30bd0ceab4f75218a06f Mon Sep 17 00:00:00 2001 From: Misa Date: Wed, 10 Jan 2024 00:33:39 -0800 Subject: [PATCH] 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. --- desktop_version/src/Editor.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/desktop_version/src/Editor.cpp b/desktop_version/src/Editor.cpp index 29124e59..1b90ae68 100644 --- a/desktop_version/src/Editor.cpp +++ b/desktop_version/src/Editor.cpp @@ -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