Since the realisation could have been called from two paths that were
previously one and the same (previously, the pre ending was the same as
the text starting -- with the inclusion of non-interrupting preanims,
these became different), in some select cases, the realisation could
have played twice.
As a solution to this, handling realisation is now done when the text
starts ticking, as that guarantees that the realisation happens only
once.
This bug couldn't find files with parentheses in them, because it looked for these files according to regex rules.
That is, if you had, say, `Apollo Justice ~ Objection! (UNLIMITED).mp3`, that would be looking for `Apollo Justice ~ Objection! ` + one occurence of `UNLIMITED` followed by a single, custom character, followed by `mp3`.
Note that this search would always fail, since parentheses are grouping characters, and as such, they'd never be acknowledged in the search as characters. `QRegExp::FixedString` forces the search to consider the input as a String, however, escaping characters as needed, which fixes this problem.
The former was caused by the position dropdown simply not having code to
make the judge buttons appear. Alongside that, the issue(?) where `/pos
judddd` (or variations) would not put the user in the judge position,
but gave them the buttons anyway.
The latter was caused by a simple mistake. We deleted the Lobby (and the
Courtroom) frequently, however, we never did set its (their) pointer(s)
back to null -- so they pointer to trash data, and the `if (w_lobby !=
nullptr)` part never failed.
This is also now fixed, and deletion of the Lobby or the Courtroom also
brings about the nulling of their pointers.
- The `base/` folder's path is now determined based on where the
executable was executed, not where its workspace is.
- Showing custom shownames is now assumed to be `true` by default,
unless the `config.ini` says otherwise.
- The Lobby's listing of servers has now been moved into its constructor
(previously only specifically called by the "Back to Lobby" button).
This makes it list servers even if the user was kicked, banned, or left
due to timeout.
Also brought in another function that specifically filters out inline
formatting characters, so that the append IC text function is a bit more
understandable.
This was purely a graphical bug. The characters were correctly
recognised as taken by the client, but there was no way to update the
"taken-shadow" over their icons.
Which meant that they were locked into the way they were when the user
first joined the server.
As a result of this, a `CharsCheck` package from the server will
correctly display the taken characters to the client in the character
selection.