To pull this one off, a new class called VPath was created that denotes
"virtual" paths that can exist anywhere among the list of mount points.
It is functionally identical to QString, except that implicit conversion
between QString and VPath is not allowed. This makes it easy to spot
errors in path resolution at compile time, since get_real_path must be
called to resolve a VPath into an absolute path that can be passed into
a Qt function as a QString.
Other functions, such as the get_*_suffix functions, also return an
absolute path QString for convenience.
As for the rest of the functions that return a VPath, you will need to
call get_real_path yourself.
Finally, a path resolution cache was added to try to avoid blowing
up what is already a massive lookup cost for assets. The cache
is invalidated when the mount path list is changed.
Currently, this cache isn't bounded. Might need to write an LRU cache
if issues arise.
When the demo skips by some number of seconds, the timer will also skip forward by that duration.
Co-authored-by: in1tiate <32779090+in1tiate@users.noreply.github.com>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
Fix demo playback being incorrectly timed due to the misplaced order of the wait#% packet (it should go BEFORE the appended message, not AFTER! We're delaying the message we're *writing*, not the *next message*!!!)
(cherry picked from commit 8319ebffe4c22c59c33d9c90161036d9c1ddddd5)
This will register any font (OTF/TTF) located in the base/fonts folder
recursively. They can be used for any purpose, without needing to
install them on the system.
Make pos dropdown ui editable for a custom pos
Keep track of the custom pos index
On switching from the custom pos, remove the entry at that index
Fix regression causing the "sort by name" lobby server list header disappearing
Expose column 0 for the # in the lobby server list header
("too ugly" just use lobby_stylesheets.css and pretty it up)
Split behavior for courtroom resizing into its own function
Use that function to optimize character changing screen
Fix reload theme breaking the background positioning
Fix changing character breaking the background positioning
Fix excessive set_widgets() calls that caused unnecessary lag
Fix unnecessary set_size_and_pos calls that didn't need to be there
Only call size_and_pos on the chatbox in the initialize_chatbox func
Remove checks for a boolean that will always be true
Simplify two functions that copy-paste code called set_size_and_pos into a single one
Fix "disable custom chat" setting not being used when setting chat sizes and pos
Fix testimony indicator not reappearing, fix objections prematurely adjusting chatbox positioning, and fix background not resizing properly when switching themes