- Extended & refactored window_varlist to support displaying data over multiple lines
This is neccessary to have proper space for extended information on some special data types
(for now StringVars; -> and at a later time also ScopedVars, which need more lines too)
- Removed the unneccessary copying of in-game strings
- Refactored part of the Range_Window setup code to be able to display more digits when viewing Switch/Variable ranges above 9999
- Maniacs 241028: Implemented the display for StringVar names
- Added a special function for button "Shift" in the debug scene:
Pressing this button changes display modes for the current window
(Currently only implemented for strings, to toggle between the old single-line display & the newer detailed one, that also included the name)
- Some other minor refactoring & moving of code parts
The return values are not used by our code so this was actually harmless.
Return for ExPatch fixed to return a valid string_view.
Return type for ToFile changed to bool as string_view made no sense here in signalling an error.
Reported by clang on macOS.
This matches the Maniac Patch behaviour better and is actually much better than using bytes.
For e.g. Latin1 (Western European) MP works with 1 Byte per char and for shift-jis (Japanese) MP works with multi-byte characters (2 bytes per character).
When using Unicode both cases map to 1 codepoint so we are very lucky here: It just works.
Fix#3298
When saving a file, maniacs forces the File in Text/ folder with .txt extension.
Through this PR, if '*' is at the end of filename, the file extension is relaxed.
It also better handles the creation of nested directories.
This operates on UTF-8 codepoints to ensure it works in most cases.
It will break for grapheme clusters but most programming languages will fail here.
Fix#3162
-Simple assign and concatenation operations already work
-Added the escape \t[x] for messages
-Complete documentation of the inner workings of the command made by BingShan