aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
AgeCommit message (Collapse)Author
2026-03-29Rewrite audio engine: replace BASS with miniaudioOsmium Sorcerer
SFX and blip players largely remain the same. For the music player, we now have to implement network streaming natively, we no longer have a convenient function that did everything for us. I introduced QNetworkRequest to download the stream in memory and signal when it's ready to be decoded and played back. The size is guarded to prevent the client from accidentally downloading terabytes of audio. Delete QFutureWatcher, we no longer need it for concurrency. miniaudio uses a separate audio thread. Network donwloads and communication with the track name display are handled by Qt signals. Also, delete an odd "music.txt" feature. Its purpose was specifying offsets for loops in a text file per track, but it remained obscure and unused in practice. Unsupported: - Large streams, including unbounded ones (radio). We'll need a ring buffer for that, and a mechanism to write to it from the network and feed it to the audio thread. - Effect flags: fade in, fade out, sync pos. Ignored. - Audio device selection.
2026-03-29Update CMake build informationOsmium Sorcerer
- Change CMake minimum version. - Turn off tests and Discord RPC by default in CMake. Let these features be explicitly enabled if desired. - Add three build profiles: Dev, Debug, Release. Dev offers the fastest unoptimized builds. Debug enables additional symbols, tracing, and turns on Address Sanitizer. Release is aggressively optimized, including LTO.
2024-07-31V2.11.0 rc1 fixes (#1029)Salanto
* Use unix timestamp to transmit ban duration * Cleanup compiler warning due to narrowing conversion * Fix preanim not being visible This is apparently not a feature we want from WebAO :^) * Bump to RC2 * Use std::chrono instead * Remove random include and debug call
2024-07-12Add playerlist widget element (#996)Salanto
* Commit * Boyfailure code commit * Cooking code spaghetti * Accidental overwrite recursive function call hell * Implemented player list * Add partial moderator widget Sleepy time! Hee-Hoo! * Moderator Dialog - Step 1 - WIP * Appease the clang gods * Clang appeasement policy * *sacrifices goat to clang* * Added player report, reworked implementation, ... * Added player-specific report * Reworked implementation * No longer uses JSON. * Removed preset loader. --------- Co-authored-by: TrickyLeifa <date.epoch@gmail.com> Co-authored-by: Leifa <26681464+TrickyLeifa@users.noreply.github.com>
2024-07-09Remove TCP entry point (#1007)Leifa
* Remove TCP entry point Resolve #987 * Remove TCP entry point * Servers that do not support WebSocket will be marked as `Legacy` * Removal of TCP connection from the master will follow later. * Tweaked error message
2024-07-07Removed MIDI, removed undocumented (yet supported) formats (#1008)Leifa
* Removed MIDI, removed undocumented (yet supported) formats Resolve #1006 * Adjusted CI for MIDI removal
2024-06-03Added screen slide timerTrickyLeifa
* Added screen slide timer * Added so that the animation becomes interruptible.
2024-05-22Complete AOLayer reimplementation, ...TrickyLeifa
* Complete AOLayer reimplementation * Reimplemented sliding as well.
2024-05-19Update CI, Deprecate Linux/MacOS for now (#960)Salanto
2024-05-18Tests may now be disabledTrickyLeifa
2024-05-18Reimplemented unit tests, ...TrickyLeifa
* Reimplemented unit tests and simplified addition of new tests * Minimal support of Qt is now 5.15
2024-05-17Resolved merge conflicts.TrickyLeifa
This comment format is just tiring for the eyes. Imagine being on 1080p and not being able to read more than 5 method definitions due to comments.
2024-05-17Lightly reworked `NetworkManager`, ...TrickyLeifa
* Lightly reworked `NetworkManager` * Added new modules to handle various connection types. * TCP * WebSocket * Added general string splitter alias based on Qt version. * Replaced `lobby_constructed` and `courtroom_constructed` * Refactored and partially reimplemented the following classes: * `AOBlipPlayer` * `AOEmotePreview` * `AOMusicPlayer` * `AOSfxPlayer` * `AOTextArea`
2024-05-16Reimplemented favorite server widget, ...TrickyLeifa
* Reworked favorite server widget * Renamed `server_type` to `ServerInfo` * Renamed `connection_type` to `ServerConnectionType` * Refactored `AOCharButton` * Reimplemented `AOButton` * Partially reimplemented `AOEmoteButton` * Refactored `AOEvidenceButton`
2024-05-15Ported to CMake, ...TrickyLeifa
* 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
2023-01-05Cmake fixes (#885)OmniTroid
* Add required macos frameworks * Make building tests optional * Add missing source and header files from cmakelists
2022-06-06Dual-Stack AO2 Client to handle both TCP and Websocket connections ↵Salanto
seemlessly (#696) * Replace TCP Serversocket with Websocket * Have TCP sockets live harmoniously with WS "like 5 lines" yeah probably lost a bet. * Update .gitlab-ci.yml * hack to fix favorites * Add support for websockets in the favorites list (serverlist.txt) Make "add_favorite_server" remember the socket type * Preserve old serverlist style This will keep new entries compatible with 2.9 and prior clients. Makes parsing the list easier too. * Add lookup table and correct write code to use lowercase * I have no idea what a lookup table is, but this looks close enough * Fix lookup table * Otherwise backend selection behaviour is inverted * clang-tidy had one job * Yet it did not do it. Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com> * const p_data * Switch serverlist.txt to an ini format * Fixes an Omni bug where : would split the servername * Utilises internally QSettings properly for low parsing effort and clear structure * Automatically migrates the legacy serverlist.txt to favorite_servers.ini * Pleases my OCD * Replace sample serverlist. Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com> Co-authored-by: stonedDiscord <Tukz@gmx.de> Co-authored-by: Alex Noir <Varsash@gmail.com>
2022-03-25Midi music (#614)stonedDiscord
* 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
2022-01-05Fix MSVC builds freezing due to AOLayer concurrency issueoldmud0
Variables accessed across threads should be atomic. Also gave AOLayer its own thread pool and switched some lock calls to use QMutexLocker semantics.
2021-01-28Add icon to windows executableSkye Deving
2021-01-28Set property for win32 exectuable to trueSkye Deving
2021-01-28Build with C++20Skye Deving
2021-01-28Add DISCORD compile definitionSkye Deving
2021-01-28Check if the explicit linking is unnecessarySkye Deving
2021-01-28Link against qapngSkye Deving
2021-01-28Create cmake.yml to run tests on github actionsSkye Deving
2021-01-28Use target_sourcesSkye Deving
2021-01-28Enable build through CMakeListsSkye Deving
2021-01-28Add tests aopacketSkye Deving