Commit Graph

36 Commits

Author SHA1 Message Date
TrickyLeifa
c9f52b7223 Ported to CMake, ...
* Ported the project to CMake
  * Android and Mac support dropped for the time
being.
  * Tests, BASS and Discord-RPC are now options
* Restructured and reformated the project.
  * Merged `include` and `src`
  * Renamed `resource` to `data`
  * Renamed various files
  * External libraries headers are no longer included in `src`
  * Replaced header guards with #pragma once
  * Multiple refactors (keywords, headers)
  * Added Qt6 compatibility
* Removed various unused functions and headers
* Reworked AOPacket
  * When content is passed to AOPacket, it should be ensured that the content is already decoded.
  * Encoding/decoding are now static methods.
* Fixed various memory leaks
* Removed animation code for AOImage
  * AOImage is always using static images
* Simplified ChatLogPiece
2024-05-15 00:04:16 +02:00
Crystalwarrior
ad578eb0bd
Suppress application volume when alt-tabbed (#730)
* Suppress application volume when alt-tabbed
Add a "suppress_audio" slider setting, 50% by default, which decides how much audio remains when the client is not in focus
Add a "muted" setting for blip, music, and sfx players
Add update_audio_volume func

* change "suppress" to "how much audio is suppressed" instead of "how much audio remains"

* Fix last commit just flipping the behavior and being ultra wacky

* Fix evidence present sound ignoring audio suppression settings

Co-authored-by: stonedDiscord <Tukz@gmx.de>
Co-authored-by: Salanto <62221668+Salanto@users.noreply.github.com>
2022-07-23 18:18:45 +03:00
Rose Witchaven
5190490a07
Set BASS_CONFIG_DEV_DEFAULT to 1 to enable automatic reinitialization of the default device when it is lost (#564)
fixes #561
2021-06-18 23:58:46 -05:00
Crystalwarrior
fe00c6b7de
Animated Themes. Subthemes. Custom default_theme. Overhaul asset paths. Fix a ton of asset resolution bugs. (#466)
* 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>
2021-02-13 11:52:12 +03:00
in1tiate
39a8ab8ab2
Enable support for up to 6 SFX channels (#355)
I'm somewhat confused as to why this wasn't enabled to begin with, since all the necessary code is here.

Closes #306, and fixes the issue with realizations being cut off by other sounds.

Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
2020-12-28 00:54:08 -06:00
in1tiate
4562bcd82f Alter logic flow to include theme folders for shout sounds 2020-09-07 13:00:59 -05:00
scatterflower
9eb0f53db1
Reset BASS when switching devices; drop Qt Multimedia support (#262)
* 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>
2020-08-19 16:40:37 -05:00
oldmud0
032e53d157 Fix SFX playing at 1/100th of its intended volume 2020-05-31 21:54:35 -05:00
sD
e81fac7e07 fix qt sfx player 2020-05-23 19:28:34 +02:00
sD
7a7dd25459 i don't need this 3 times 2020-05-23 19:21:25 +02:00
sD
68bd38b7fe forgot those on noaudio 2020-05-23 17:28:54 +02:00
sD
52736498b1 fix up nomusic 2020-05-23 17:21:22 +02:00
oldmud0
75453510e0 Fix compile errors from merge 2020-05-22 21:14:37 -05:00
oldmud0
fd1855b8d0 Merge KFO source unconditionally into AO2 2020-05-22 19:17:55 -05:00
oldmud0
8928aa2718 Perform clang-format
If you don't want to see this commit on blames, use the hidden
whitespace option on GitHub, or use `-w` in git-blame.
2020-05-22 17:13:37 -05:00
oldmud0
156a760eba Full revert to tag 2.6.2
Due to a countless number of changes made to the core that were not
fully understood, tested, or documented, it was decided to roll
everything back to the last known stable version (2.6.2).

Changes dropped include:
 - Witness needed
 - Shake
 - Frame SFX
 - Multiple custom objections
 - Multithreaded thumbnail generation
 - Looping
 - Various translation additions
 - "Mirror IC"
 - Color in IC log
 - An invocation of clang-format

Next time, work together and split your big fork into independently
testable feature branches.
2020-05-22 17:02:32 -05:00
Crystalwarrior
88de4cde04 clang 2 electric boogaloo
{ BasedOnStyle: LLVM, BreakBeforeBraces: Stroustrup}
2020-05-22 02:14:54 +03:00
Crystalwarrior
c8e12558cd Clang-ify the code with this styling using Visual Studio Code:
{ BasedOnStyle: LLVM, UseTab: Never, IndentWidth: 4, TabWidth: 4, BreakBeforeBraces: Stroustrup, AllowShortIfStatementsOnASingleLine: false, IndentCaseLabels: false, ColumnLimit: 0, AccessModifierOffset: -4, NamespaceIndentation: All }
(this is the Visual Studio preset with only "BreakBeforeBraces" changed from Allman to Stroustrup)
2020-05-22 01:18:24 +03:00
oldmud0
13942345c6 Run clang-format on entire project
Indentation fixed to 2 spaces per tab. Braces set to Stroustrup style.
Lines reflow at 80 characters. One-line method bodies are on the same
line as the signature. Space always after `//`. No indentation
on preprocessor macros. Includes are sorted lexicographically.

If you don't want to see this commit on blames, use the hidden
whitespace option on GitHub, or use `-w` in git-blame.
2020-04-17 21:57:16 -05:00
sD
0afca9243a looping wasnt in 2020-02-21 16:53:56 +01:00
stonedDiscord
7d55ff01f5
Merge branch 'master' into 2.7 2020-02-21 16:39:32 +01:00
Crystalwarrior
9939637dda Fix the sound bonanza so they actually play
sfx player and blip player now both account for extension-less sound paths and also correctly handle paths that do provide the extension.
2019-11-04 17:13:52 +03:00
Crystalwarrior
a49c4a503b add .opus support 2019-11-04 16:10:54 +03:00
Crystalwarrior
773a61f3d4 Make the music search bar search in music metadata instead of just the displayed name (aka the filepath)
Make sfx player able to play sfx without the file extension provided
Allow blipsounds to seek in blips/ folder to allow better categorization, as well as direct sound references
add get_emote_blip for detecting the blipsound used by an emote. Currently unused.
Less strict/hardcoded custom objection detection system
Allow system (charid -1) messages, and don't do the same message detection on blankposting
Allow objection, hold it, take that and custom sound players to detect sounds that are not exclusively .wav
2019-11-04 15:32:01 +03:00
Crystalwarrior
3899dbe0bd I dunno what the fuck was I doing for the past 4 hours but I made crossfading music work.
Music packets can receive channel to play the song in and the crossfading option too.
2019-09-20 05:30:07 +03:00
Crystalwarrior
e94640b349 Looping SFX system - Defined this way:
[SoundL]
sfx-roar = 1
2019-09-15 17:44:47 +03:00
stonedDiscord
5520c24869 bass blips were slightly too quiet 2019-08-22 21:02:09 +02:00
stonedDiscord
49be444d74 OOP 🏪 2019-08-17 21:09:13 +02:00
stonedDiscord
4700902551 fix qaudio volume 2019-08-17 20:47:41 +02:00
stonedDiscord
44d433d941 sfx glitch 2019-03-13 22:05:24 +01:00
stonedDiscord
ece08930e3 setVolume doesn't take floats 2019-03-13 13:06:11 +01:00
stonedDiscord
71da60b5d6 sfx tested and works 2019-03-12 20:14:54 +01:00
stonedDiscord
49938eea0f makes all the bass stuff optional 2019-03-12 00:26:40 +01:00
iamgoofball
fc984fcfe2 bugfixes and shit 2019-02-01 16:28:14 -08:00
iamgoofball
3c0cedbe92 Add screenshake, frame-specific effects, looping SFX, and clientside music looping
Committed by patch since Goof is currently banned on GitHub for no good reason.
2019-01-18 23:08:46 -06:00
David Skoland
00cfd2750d moved headers into include and cpp files into src + logo into resource 2018-12-26 16:43:08 +01:00