* as if this is going to work
* use android libs and spec for android
* install ndk and use clang over g++
* shut the fuck up
* SHUT THE FUCK UP
* shut up shut up shut up
* get remove from favs button
* move themes into bin folder
* bin folder now already comes with repo
* actually install old ndk version
* Delete .gitlab-ci.yml
* apply font for version
* Let's try that again. This time, less stupid.
Made the updated licensing from 2021 to 2022 and new credits and whatnot.
* executive meddling
* Update credits.
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
Co-authored-by: Salanto <62221668+Salanto@users.noreply.github.com>
* Added server list context menu, ...
Resolve#832, #560
* The demo server listing now always appears at the top for consistency.
* Add a context menu to server listing.
Only appears during favorite server listing. Requires a valid item under cursor. Cannot be the demo server item.
* Add a new UI element: `remove_from_fav`
Only appears during favorite server listing. Require a selection to remove. Cannot be the demo server.
Uses `removefromfav.png` and `removefromfav_pressed.png` images as textures.
* Favorite servers are now loaded whenever the Lobby is created in addition to refresh and server listing switch.
* `serverlist.txt` is now renamed to `(deprecated)serverlist.txt` if read from.
* Updated comments
* Typos
* never send an unencoded packet to the server
* oops
* Improve packet validation to remove segfaults
* WARNING: commit breaks connecting to servers, need help
start fixing omniwhy caused by single fuckin string packets (AAAAAAAAAAAAAAAAA)
* Fix failed connections to servers (Thanks to @Iuvee for helping me figure this out!)
* Fix demoserver
* who the fuck still uses goto
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* ANOTHER GOTO????
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* braces
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* good bot Update src/packet_distribution.cpp
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix demoserver harder
* Improve demo logging
* Fix memory leakage by deleting the packet
Fix useless demoserver wait packet creation when none of that packet is used
Co-authored-by: stonedDiscord <Tukz@gmx.de>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Salanto <62221668+Salanto@users.noreply.github.com>
* try this matrix thing
* syntax error
* use my own qt installer so it actually works
* allow changing path
* whoops cant have it twice
* get the right version of discord rpc
* get correct bass
* try to fix windows
* overwrite bass files
* forgot to delete these
* here's your version bro
* what did we even use catch2 for??
* linux doesnt have a c folder
* android bass
* switch from cmake to qmake
* opus dylib
* we don't install
* put bass in a subfolder so we don't build the stupid examples
* was using wrong arch for android
* fix up gitignore
* get correct artifact folder
* lets hope qmake will ignore the ABI for all the other platforms
* use platform name for artifact
* copy dlls into bin folder
* lmao i yeeted the folder
* create folder
* use more recent mingw
* windows uses dlls
* 2017 doesn't work
* our libs are 64 bit
* install msvc
* shitty ms documentation
* ok ms
* wrong directory for deploy
* copy apng
* use correct image for msvc2019
* deploy android
* 32bit windows it is
* adroideploy
* try this
* Update build.yml
* move libs
* armeabi-v7a
* fix android build files
* only get linux bass for linux
* don't try to install discord on android
* deploy mac
* get rid of double permission warning
* define filename for APK
* add mac dependencies
* put android bass in the correct folder
* mac apng
* android apng
* remove old CI
* ask for storage permissions
* qt bug ..........
* update clang-tidy-review
* update everything
* fuck you lukka
* fuck you jurplel for merging that shitty PR that broke everything
* give it what it wants
* Update clang-tidy-review.yml
* github is failing it because it's too big
* wait for the user and request a proper permission string
* underscore moment
* use write external storage instead
* try this instead
* 082 fails with docker again
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.
* 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>
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)
* Remove get_static_image_suffix (webp, gif etc. can be non-animated)
Replace QList<QString> with QStringList
* forgot to remove static image from aoimage
* Simplify get_theme_path, get_custom_theme_path and get_default_theme_path all into a single get_theme_path func
Add a default_theme variable which defines the currently recognized default theme
Add a new "get_asset_path" that will be used to simplify asset resolution considerably
* Simplify AOImage set_image function to use get_asset_path
Begin working on the subtheme system
* Add p_default_theme for get_asset_path
Implement get_asset_path for AOButton
* Condense aolayer path lookups into the get_asset_path function
* Get rid of get_font_name due to underuse (and it just does the same thing as get_design_element anyway)
Get rid of get_char_shouts (use chat= instead)
Use get_subtheme() instead of subtheme (because get_subtheme() can perform overrides based on the user's settings)
Make get_color() use get_asset_path()
Make get_design_element() use get_asset_path()
* Adapt a whole bunch of text_file_functions to the get_asset_path method, fixing an enormous amount of invalid path resolutions
Unfortunately I have to keep backwards compatibility for the backwards ass config.ini method for the chat markup (new way is chat_config.ini)
Get rid of get_theme_effects and implement the stacking behavior into get_effects instead
* Program doesn't run, color lists stop generating for some reason
Also implement safety checks for the asset path generator
* Fix a really tricky issue that popped up regarding char_color_rgb_list not being generated, causing segfaults
* Address the sfx player path resolution being really, really stupid and resolve major inconsistencies (such as the bug where objection sfx wouldn't be playing despite the default theme or default misc folder having them)
* Fix sfx path resolution being funky (apparently D:/Qt/Projects/AO2-Client/bin/base/themes/default//objection.wav is a valid qt5 path...)
* Implement:
get_asset_paths - Return an untested list of universal paths from the provided args
get_asset_path - Loop through the list of provided asset paths and return the first valid file
get_image_path - Loop through the list of provided asset paths, apply get_image_suffix and return the first valid image file
get_sfx_path - Loop through the list of provided asset paths, apply get_sfx_suffix and return the first valid sound file
get_asset - return an asset (must contain file extension) from the get_asset_path() applied on the get_asset_paths()
get_image - return an image with get_image_suffix() applied on the get_image_path() for the get_asset_paths()
get_sfx - return a sfx from provided args with the uniquely constructed asset path list for sounds
Rename old get_sfx to get_court_sfx for better clarity of its function
This replaces previous asset stuff I implemented, as I think this is a better solution lol
* Add a new get_config_value that obtains a value from the config that matches identifier
Adjust all calls to get_asset() to actually look for a config identifier value instead, so even if a config.ini is found if it doesn't contain the identifier we want we keep looking
* Fix effects.ini sounds not working
Remove debug text
* Make it so even if you miss the required asset, and don't have a missingno, the viewport still doesn't freeze up due to waiting on Objections etc. due to signals.
* Implement default_theme option for courtroom_design.ini, allowing you to make themes that inherit from other themes that are not default.
* move sounds folder lower in sfx pathlist
* fix realization sfx not being fetched from config
* Make aosfxplayer actually use get_sfx I made
Move sounds folder path check last in get_sfx
* I thought this would fix QSettings::value: Empty key passed but I guess not, that annoying error will keep pestering us :(((
* Remove silly .png exception for SplashLayer
Fix static image Objections freezing the viewport due to done(); signal that never arrives
* Make WTCE cooler by including a stop method for witness testimony indicator, and add support for custom WTCE
* Reduce code duplication for get_sfx
* Fix the program hanging/entering an infinite loop/segfaults/a number of nasty issues due to done(); signal being sent as soon as playback begins if the image is invalid.
This is done by removing the file_exists check, and letting the rest of the functionality handle this case - the system is robust enough and treats an invalid image as a static image.
* Fix segfaults with AOLayers by sanity checking using max_frames
Fix "Pixmap is null" console spam
* You'll hate me for this.
Make it possible to have fully animated AOButton and AOImage
* Add a settings option to toggle animated themes on or off
* Add a setting for animated theme elements
Add a "static image" toggle for get_image_suffix
* Fix custom chat and generally the chat boxes not having consistent behaivor with subthemes
Add a settings option for subthemes
Have AOImage keep track of its last valid path
* Add SubTheme (ST) packet. Pass subtheme as arg0, and "1" if you want the client's theme to be reloaded.
ST packet sets ao_app->subtheme no matter what. It will not reload theme unless the user has their subtheme set to "server".
Fix showname widths by rearranging font metrics to do its calculations *after* the showname font is set, and not before (making it lag behind the correct display size by 1 msg)
Co-authored-by: in1tiate <radwoodward@vikings.grayson.edu>
* initial commit
* use a "category" value instead
* add filtering and taken indicator
* hide serverlist header
* set the items to disabled in place of the [X] text
Co-authored-by: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com>
* initial commit with horrible code dupcliation haha lol
Set up elapsedtimer to generate wait# stuff between packets recorded
* implement groundwork for internal demo server
* add core playback functionality
* make it work kinda by including SC packet in demo
* Add a file dialog for loading a demo file instead of a hardcoded path
* Change /play to > in OOC to begin playback or skip to next element
Pop up file dialog box *before* establishing the connection, not after.
TODO:
* Fix having to load the same file *twice* to be able to connect to the demo server for some reason
* Fix the segfault caused by calling the playback() function when there's no remaining data, it's almost like demo_data.isEmpty() is ignored for whatever reason???
* Clear demo data when loading a demo file to prevent stacking demos
* Properly disconnect the client when sending the request for file browser fails to obtain a good demo file
* Fix append_to_file newlining even if file didn't exist prior to calling this function
* Add a very scuffed exception to not log or demo record anything that happens in the Demo playback local server
* Reduce invalid file spam by checking for non-logging server better
Use file_exists() to be more consistent in append_to_file
* Fix the client crashing when receiving loading packets etc. at runtime such as SC, SM, CI etc. (TODO: parity???)
Remove useless debug stuff
* Preserve newlines for demo packets such as "CT", "MS" etc.
* Implement /max_wait, /min_wait for adjusting the maximum and minimum wait in milliseconds between wait packets
Add /pause or | shorthand to pause playback
Re-add /play and keep > as a shorthand
Remove clientside restrictions from sending empty OOC messages and sending OOC messages without a name - these should be serverside.
* Empty music list
Default the character to Spectator char no matter the selection in CSS
* Allow -1 character ID or character ID that does not fit into the local Character Select Screen list to still be parsed corectly, using the character folder in the MS packet as reference.
Allow servers with no selectable characters to still be properly loaded
Bypass the Character Select Screen when joining a server with no character select screen and automatically become a spectator
* Properly handle demo files without SC packet to dictate which chars exist
Add a /load command letting you load a demo file without rejoining the demo server (the CS packet will not be properly handled but I cannot think of a single tangible problem this causes lol)
Make sure all DEMO CT messages are colored properly
* Fix logs bleeding into each other if you disabled logging or you joined a demo server after leaving another
* Prevent logging even if log_filename is defined because a user might disable auto logging when running the game
* Fix custom shownames not appearing in the IC logs
* Set up new logic for max_wait, meaning that dead air being skipped is prioritized with MS (IC chat) packets being used as the anchor.
* Better logic for min_wait to only affect important packets (IC Chat)
* Fix encoding not being performed on packets that are saved to the .demo file, resulting in characters having something like "#1" in their message breaking that specific message
* Fix a weird setup in courtroom.cpp that happened out of the merge and bugged the code
Fix aopacket being busted up as well
* add missing feature flags to the demoserver
* use random port
* move writing to the demo file to a function
* only listen on localhost
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* remove copypasta
* add a help to the demo server
* fix empty demo disconnecting the server
* tell the user how to begin
Co-authored-by: scatterflower <marisaposs@gameboyprinter.moe>
Co-authored-by: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com>
Co-authored-by: stonedDiscord <stoned@derpymail.org>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
* set no maximize flag on lobby
* set no maximize flag on courtroom
* set no maximize flag on charselect
* stop them from dragging the charselect
* stop them from dragging the courtroom
* stop them from dragging the lobby
Co-authored-by: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com>
* Allow changing audio device on the fly while in a server
* Use default audio device if device in config doesn't exist
* Automatically change audio device to default when current one is invalid
* Destroy Qt Multimedia support
It was decided that there was not enough attention being given to Qt
Multimedia support to justify its continued maintenance simply as a
libre alternative to BASS. While substantial changes to audio were being
made in 2.8, the Qt Multimedia support code fell behind in disrepair.
It's clear that there is no vested interest in implementing audio
features twice for the sake of licensing.
When it's time to switch to another audio library, it will be done
unilaterally.
* CI: Use BASS for Linux build
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
Not sure how to split this up, frankly. Some people have been more
involved in client/server/protocol development than others. I'll figure
this out eventually.