* add both network and local ways to show judge buttons on pos other than jud
* hide judge buttons when pos_removing to a non-judge position
* alter packet header
* Only use pos jud hardcoding if no design.ini
if design.ini does not define judges= then we fall back to pos jud garbage
* Fix judge buttons being disabled if default_side pos is judge (logic poopy)
Fix positions.isEmpty() returning False cuz a split of an empty string returns the list with an empty string by default
* Expand JD packet to be able to send -1, 0 and 1. If -1 is received, fall back on client-sided judge button behavior. If 0 or 1 is received, treat it as "absolute override" and adhere to that packet.
* alter check for empty qstringlist to support old qt versions
* heehoo
* trigger client side behavior when jd -1 is sent
* less confusing variable names
* remove useless code, trim some fat
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* use an enum dammit! & warn on malformed auth
* use an enum dammit! pt. 2
* appease clang, rewrite ugly judge controls function
* please squash this its so bad
Co-authored-by: Crystalwarrior <Varsash@Gmail.com>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* add new hdid algo
* forgot the w for unicode
* add advapi32 to windows
* get rid of visual studio 2022 shit
* Update src/hardware_functions.cpp
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* close handle when it fails
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* Make objections respect the user's preanim setting
* Replace all magic numbers with the emote mod enum
Fix preanim zoom not toggling the checkbox from char.ini, but deprecated "4" doing it
* Comment handle_emote_mod a bit better to explain some jank
* Fix play SFX logic being inconsistent during narrator chat (emote is "")
* hail clang-tidy
* add bassmidi everywhere but CI
* hello CI please don't ban me from github
* add lib and open midi files with the lib
* overlooked windows CI
* yes, overwrite everything
* add tracker support
* add file formats that bass supports
* forgot .mid smh
* load all plugins in one function
* Fix SFX dropdown not playing a sound despite a sound being selected.
It was waiting on a preanim box to be checked, but that behavior was not intuitive. Plus this is a regression from intended behavior
* Make "default" sfx behavior behave as expected
* Tidy up the network logic for emote_mod and comment all of its behavior
Fix sfx not playing when immeidate is checked on
* make emote_mod an enum so I don't have to go scouring documentation to learn what it does anymore
not adding emote mod for enums 2, 3 and 4 cuz those are planned to be deprecated in a later PR
Make Clang happy with no bracket-less if statements
* Fix demoserver max_wait logic being absolutely bonkers, causing random skips that make no sense
actually comment this piece of code
* Add /debug command to demos which allows you to see the remaining time for each packet, allowing you to visualize wait packets.
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Allow "SC" packet to be used to refresh the character list even if the client is loaded in
Fix tree list of characters not being cleared properly between "SC" packets
Fix client theme breaking when joining a server with empty character select list
* Do my review suggestions on CW's behalf
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* try this reviewer
* test the reviewer with a very bad piece of code
* it can't handle spaces
* run cmake to find all the files
* file go brr haha
* cmake needs qt installed
* rename file once again
* use windows
* also doesn't like brackets
* can't use windows
* install qt the linux way
* try using cmake this way
* cmon cmake
* install qt before running cmake
* forgot catch2
* need to install as root
* add build dir
* delete test file
* fix 3 warnings
* enable clazy
* Revert "fix 3 warnings"
This reverts commit 7e64d4a546c397b5b69554ccf6765bf0a068f695.
* disable 3 warnings
* add a bracket for readability
* install clazy before
* get qt 5 real
* try lukkas cmake modules
* dupe courtroom again to test clang-tidy
* courtroom.cpp was a mistake
* remove magic number warning
* Effects follow offset, add ini option to disable offset for effect
This is pretty hacky, but the offset data is necessary to move the effect layer in relation to the character.
Fix evidence editing regressions caused by #587
Fix issues with "ok" button detecting itself as "changes from the server"
Fix "ok" button remaining after you press it once, allowing you to spam evidence update packets by spamclicking it
Current working theory is that setting the future opens a brief interval where it deconstructs the old future and returning an invalid QFuture,, causing a segmentation fault.
Since the MS chat has been disabled for quite some time now (and we aren't planning on bringing it back since Discord, Guilded etc. have better chat features), I decided to go ahead and change the pane into a debug log to keep it useful and avoid creating a gaping hole in themes.
Though, maybe it is worth removing the whole switcher and keeping the debug log hidden away where it can't scare people.
* Implement async music loading
* Simplify music filename parsing and fix "missing" on streams
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
Apparently, people don't like logging demos because it takes up too
much space. It's possible to enable NTFS compression for demo files
(or the entire demos folder), though.
This piece of code from another era is not needed anymore thanks
to the message queue and decent server-side anti-flooding. Player
input won't be thrown away since the client waits for an
acknowledgement from the server before clearing the input box.
Remove OOC-Client commands that are already replaced by UI elements that are easily accessible.
Debatable if /save_case and /load_case should stay as they seem unused by most users/servers.
* Maintain backwards compatability with older servers.
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* user configurable timestamp format
* fix label making the entire settings window move jankily
* add a dropdown for sane timestamp formats
* streamline adding options to log timestamp format
According to profiling results, arup_append was being called around 90k times (!!) because it had been placed in the inner for loop. That's (tracks * areas)^2. Yikes!
By using hash tables, the algorithmic complexity of the case-insensitive
lookup has been reduced from O(n * k) to amortized O(k), where n is the
number of files in each level and k is the number of directory levels
that need to be traversed.
This massively improves performance on Linux when loading characters,
especially when there are many missing characters, since it is no longer
necessary to scan the entire character folder repeatedly.
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.
Attempt Nr. 2 - Based on #548 and #501
+ Allows client to use a remote source as a last resort if the file can't be found locally.
+ Adds a check if the target file is missing.
This implementation assumed the streaming source to be structured like a webao content respository
Adds a new setting to config.ini to set a default showname. This works similarly to default username, but for IC shownames, setting the client's showname automatically. Like default username, this has a 30 character limit.
* Adds a new option to config.ini, default_showname.
* Adds this setting to the options dialog.
* Adds get_default_showname() for retrieving this showname.
* Sets the showname box to this value upon joining a server.
Fix an extremely weird case where CharLayer::Play() was not called even on the CharLayer class (I don't understand why inheritance was straight up just ignored)
Fix using preanims with static images just breaking everything
Deprecate weird insanity [Time] with the % sign BS (What was this for again? Literally no one used this nor was aware of it)
Fix text_stay_time timer firing even if we're immediate
Just in case, stop the text delay timer when start_chat_ticking is called
* Fix ic chatlog placeholder text not being translated
* Fix inconsistent/nonsensical path resolution for the backwards-compatibility misc/default/config.ini vs themes/current_theme/misc/default/config.ini
Co-authored-by: in1tiate <32779090+in1tiate@users.noreply.github.com>
* Implement a demo auto-fixing solution. If the client detects a pre-2.9.1 demo file, it will prompt the user if they wish to correct it, since otherwise the demo will be desynched from reality.
The aforementioned issue was fixed in https://github.com/AttorneyOnline/AO2-Client/pull/496 however 2.9.0 still has incorrect demo recording.
Fix potential memory leak by not flushing and closing the demo file after opening it for reading.
* backup broken demo file before fixing it
* comments ahoy
Co-authored-by: in1tiate <radwoodward@vikings.grayson.edu>
* Add OOC logging to the .log files, making them infinitely more precious to GMs especially of ambitious multi-area RPs
Add [IC] and [OOC] tags to distinguish between the types of msg
* minor wording change for .log top line to make it clearer that it's the server address and not the user address
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>