From c9f52b7223685d2e7fca925594171f94dd8c6e3b Mon Sep 17 00:00:00 2001 From: TrickyLeifa Date: Wed, 15 May 2024 00:00:17 +0200 Subject: 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 --- data/ui/direct_connect_dialog.ui | 70 +++ data/ui/favorite_server_dialog.ui | 141 +++++ data/ui/lobby.ui | 706 +++++++++++++++++++++++ data/ui/lobby_assets/down-arrow.png | Bin 0 -> 181 bytes data/ui/lobby_assets/up-arrow.png | Bin 0 -> 181 bytes data/ui/options_dialog.ui | 1091 +++++++++++++++++++++++++++++++++++ 6 files changed, 2008 insertions(+) create mode 100644 data/ui/direct_connect_dialog.ui create mode 100644 data/ui/favorite_server_dialog.ui create mode 100644 data/ui/lobby.ui create mode 100644 data/ui/lobby_assets/down-arrow.png create mode 100644 data/ui/lobby_assets/up-arrow.png create mode 100644 data/ui/options_dialog.ui (limited to 'data/ui') diff --git a/data/ui/direct_connect_dialog.ui b/data/ui/direct_connect_dialog.ui new file mode 100644 index 00000000..3cc66207 --- /dev/null +++ b/data/ui/direct_connect_dialog.ui @@ -0,0 +1,70 @@ + + + direct_connect_dialog + + + + 0 + 0 + 401 + 77 + + + + Form + + + + + + + + scheme://hostname.domain:port + + + + + + + + + + + Not Connected + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Connect + + + + + + + Cancel + + + + + + + + + + diff --git a/data/ui/favorite_server_dialog.ui b/data/ui/favorite_server_dialog.ui new file mode 100644 index 00000000..a1d5f28e --- /dev/null +++ b/data/ui/favorite_server_dialog.ui @@ -0,0 +1,141 @@ + + + add_server_widget + + + + 0 + 0 + 420 + 420 + + + + + 230 + 260 + + + + Form + + + + + + + + Legacy Entry : + + + + + + + + + + Convert + + + + + + + + + + + Display Name: + + + + + + + + + + Hostname : + + + + + + + + + + Port: + + + + + + + 65535 + + + + + + + Protocol : + + + + + + + + TCP + + + + + WEBSOCKET + + + + + + + + Description: + + + + + + + + 0 + 0 + + + + + + + + + + QFrame::Plain + + + Qt::Horizontal + + + + + + + QDialogButtonBox::Close|QDialogButtonBox::Save + + + + + + + + diff --git a/data/ui/lobby.ui b/data/ui/lobby.ui new file mode 100644 index 00000000..ceb85ff0 --- /dev/null +++ b/data/ui/lobby.ui @@ -0,0 +1,706 @@ + + + lobby_form + + + + 0 + 0 + 600 + 550 + + + + + 0 + 0 + + + + + 300 + 280 + + + + Qt::CustomContextMenu + + + + + + QWidget#lobby_form { + background-color : rgba(102, 102, 102, 255); +} + +QLabel { + color: white; +} + +QLineEdit { + background-color: rgb(102,102,102); + color: rgb(255, 255, 255); +} + +QTreeWidget { + background-color: rgb(102,102,102); + color: white +} + +QWidget#demo_tab { + border: 1px solid white +} + +QPushButton { + border: 1px solid lightgray; + background-color: rgb(84,33,0); + color: white; + padding: 3; +} + +QPushButton:hover { + border: 1px solid white; + background-color: rgb(122,40,0); +} + +QPushButton:pressed { + border: 1px solid white; + background-color: rgb(125,41,0); + color: white; +} + +QTabBar::tab { + border: 2px solid lightgray; + background-color: rgb(100,41,0); + color: lightgray; + padding: 2; + margin-right: 5px; + margin-left: 5px; + border-bottom: 0; +} + +QTabBar::tab:selected, QTabBar::tab:hover { + color: white; + background-color: rgb(122,40,0); +} + +QTabBar::tab:selected { + background-color: rgb(122,40,0); + border: 2px solid white; + border-bottom: 0; +} + +QTabBar::tab:!selected { + margin-top: 2px; /* make non-selected tabs look smaller */ +} + +QHeaderView::section { + border: 1px solid white; + background-color: rgb(122,40,0); + margin-right: 2px; + padding: 1; +} + +QHeaderView::section:pressed { + background-color: rgb(84,33,0); +} + +QHeaderView::up-arrow +{ + image: url(":/data/ui/lobby_assets/up-arrow.png"); +} + +QHeaderView::down-arrow +{ + image: url(":/data/ui/lobby_assets/down-arrow.png"); +} + +QScrollBar:vertical { + background-color: rgba(140,140,140, 255); + color : white +} + +QScrollBar:horizontall { + background-color: rgba(140,140,140, 255); + color : white +} + + + + 0 + + + 4 + + + 2 + + + 4 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Version: 2.10.1 + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + Settings + + + + + + + + 0 + 0 + + + + + 100 + 0 + + + + About + + + + + + + + + + Game Lobby + + + + + + + + + + + 0 + 0 + + + + + + + + 3 + 0 + + + + + + + Qt::CustomContextMenu + + + Qt::LeftToRight + + + + + + 0 + + + true + + + + Public Servers + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Search + + + + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + Qt::ElideNone + + + true + + + + # + + + AlignTrailing|AlignVCenter + + + + + Name + + + + + + + + + Favorites + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::CustomContextMenu + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + Qt::ElideNone + + + true + + + + # + + + + + Name + + + + + + + + + Demos + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + Qt::ElideNone + + + 0 + + + true + + + + Server + + + + + Name + + + + + + + + + + + + + + Add Server + + + + + + + Remove Server + + + + + + + Edit Server + + + + + + + + + + + Direct Connect + + + + + + + Add To Favorites + + + + + + + + + + + Refresh + + + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 5 + 20 + + + + + + + + + 2 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 4 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + color: #F8A818; +background-color: #383838; +border: 1px solid white; + + + Server Info + + + Qt::AlignCenter + + + + + + + color: #F8A818; +background-color: #383838; +border: 1px solid white; + + + Offline + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">No description provided.</p></body></html> + + + + + + + false + + + Connect + + + + + + + + + + + 0 + 3 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + color: #F8A818; +background-color: #383838; +border: 1px solid white; + + + Message of the Day + + + Qt::AlignCenter + + + + + + + background-color: rgba(140, 140, 140, 255); +color: rgb(255, 255, 255); + + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css"> +p, li { white-space: pre-wrap; } +hr { height: 1px; border-width: 0; } +li.unchecked::marker { content: "\2610"; } +li.checked::marker { content: "\2612"; } +</style></head><body style=" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> + + + true + + + + + + + + + + + + + + + + + diff --git a/data/ui/lobby_assets/down-arrow.png b/data/ui/lobby_assets/down-arrow.png new file mode 100644 index 00000000..ce40d081 Binary files /dev/null and b/data/ui/lobby_assets/down-arrow.png differ diff --git a/data/ui/lobby_assets/up-arrow.png b/data/ui/lobby_assets/up-arrow.png new file mode 100644 index 00000000..46ddf4c6 Binary files /dev/null and b/data/ui/lobby_assets/up-arrow.png differ diff --git a/data/ui/options_dialog.ui b/data/ui/options_dialog.ui new file mode 100644 index 00000000..db6db725 --- /dev/null +++ b/data/ui/options_dialog.ui @@ -0,0 +1,1091 @@ + + + optionsdialogue + + + + 0 + 0 + 450 + 415 + + + + Qt::NoContextMenu + + + Settings + + + + + + Qt::NoFocus + + + 0 + + + + Gameplay + + + + + + true + + + + + 0 + 0 + 394 + 858 + + + + + + + + + + + + + + Stop music when double-clicking a category. If this is disabled, use the right-click context menu to stop music. + + + Stop Music w/ Category: + + + + + + + + + + + + + + + + + Sets the default scaling method, if there is not one already defined specifically for the character. + + + Scaling: + + + + + + + Turn this on to allow characters to define their own custom chat box designs. + + + Custom Chatboxes: + + + + + + + Allows screen effects. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + Allow Effects: + + + + + + + + + + + + + + Open the theme folder of the currently selected theme. + + + Open Theme Folder + + + + + + + Overrides the base URL to retrieve server information from. + + + Alternate Server List: + + + + + + + Instant Objection: + + + + + + + ms + + + 500 + + + + + + + Sets the theme used in-game. If the new theme changes the lobby's look as well, you'll need to reload the Lobby for the changes to take effect, such as by joining a server and leaving it. + + + Theme: + + + + + + + + + + + + + Send screen-shaking, flashes and sounds as defined in the char.ini over the network. Only works for servers that support this functionality. + + + Network Frame Effects: + + + + + + + Chat Rate Limit: + + + Qt::AutoText + + + + + + + ms + + + 5000 + + + + + + + If ticked, themes will be allowed to have animated elements. + + + Animated Theme: + + + + + + + Amount of time (in miliseconds) spent on each letter when the in-character text is being displayed. + + + Text crawl: + + + + + + + Refresh the theme and update all of the ui elements to match. + + + Reload Theme + + + + + + + + + + + + + + + + + Your showname will be automatically set to this value when you join a server. + + + Default showname: + + + + + + + + + + + + + + + + + Turn this on to allow characters to define their own stickers (unique images that show up over the chatbox - like avatars or shownames). + + + Stickers: + + + + + + + Turn this on to prevent preanimation checkbox from clearing after playing the emote. + + + Sticky Preanims: + + + + + + + ms + + + 10000 + + + + + + + Gives the default value for the in-game 'Custom shownames' tickbox, which in turn determines whether the client should display custom in-character names. + + + Custom shownames: + + + + + + + Turn this on to prevent the effects dropdown from clearing the effect after playing it. + + + Sticky Effects: + + + + + + + + + + + + + + Minimum amount of time (in miliseconds) an IC message must stay on screen before the next IC message is shown, acting as a 'queue'. Set to 0 to disable this behavior. + + + Text Stay Time: + + + + + + + Sets the language if you don't want to use your system language. + + + Language: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If the SFX dropdown has an SFX selected, send the custom SFX alongside the message even if Preanim is OFF. + + + Always Send SFX: + + + + + + + Turn this on to prevent the sound dropdown from clearing the sound after playing it. + + + Sticky Sounds: + + + + + + + + + + + + + + Your OOC name will be automatically set to this value when you join a server. + + + Default username: + + + + + + + Allows screenshaking. Disable this if you have concerns or issues with photosensitivity and/or seizures. + + + Allow Screenshake: + + + + + + + + + + + + + + Allows others on Discord to see what server you are in, what character are you playing, and how long you have been playing for. + + + Discord: + + + + + + + Use the markup colors in the server IC chatlog. + + + Colors in IC Log: + + + + + + + Sets a 'subtheme', which will stack on top of the current theme and replace anything it can. Keep it at 'server' to let the server decide. Keep it at 'default' to keep it unchanging. + + + Subtheme: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + + + + + If ticked, Evidence needs a double-click to view rather than a single click. + + + Evidence Double Click: + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + + + + + Whether or not to resume playing animations from where they left off. Turning off might reduce lag. + + + Continuous Playback: + + + + + + + 30 + + + + + + + 1 + + + 8 + + + + + + + <html><head/><body><p>The factor by which to scale the size of the UI</p></body></html> + + + UI Scaling Factor + + + + + + + + + + + + Callwords + + + + + + + + + <html><head/><body><p>Enter as many callwords as you would like. These are case insensitive. Make sure to leave every callword in its own line!<br/><br/>Do not leave a line with a space at the end -- you will be alerted everytime someone uses a space in their messages.</p></body></html> + + + true + + + + + + + + Audio + + + + + + Audio device: + + + + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + How much of the volume to suppress when client is not in focus. + + + Suppress Audio: + + + + + + + % + + + 100 + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + Sets the delay between playing the blip sounds. + + + Blip rate: + + + + + + + Play a blip sound \"once per every X symbols\", where X is the blip rate. 0 plays a blip sound only once. + + + + + + + If true, the game will play a blip sound even when a space is 'being said'. + + + Blank blips: + + + + + + + + + + + + + + If true, the game will allow looping sound effects to play on preanimations. + + + Enable Looping SFX: + + + + + + + + + + + + + + If true, AO2 will ask the server to stop music when you use 'Objection!' + + + Kill Music On Objection: + + + + + + + + + + + + + + If true, AO2 will not play any streamed audio and show that streaming is disabled. + + + Music Streaming enabled: + + + + + + + + + + + + + + + + 0 + 0 + + + + Assets + + + + + + + 0 + 0 + + + + <html><head/><body><p>Add or remove base folders for use by assets.</p><p><br/>Base folders on the bottom are prioritized over those above them.</p></body></html> + + + true + + + + + + + + 0 + 0 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 40 + 16777215 + + + + + + + + + + + + 0 + 0 + + + + Remove + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 40 + 20 + + + + + + + + + 40 + 16777215 + + + + + + + + + + + + 0 + 0 + + + + Add... + + + + + + + + 0 + 0 + + + + Clears the lookup cache for assets. +Use this when you have added an asset that takes precedence over another existing asset. + + + Clear Cache + + + + + + + + + + Logging + + + + + + If ticked, new messages will appear at the bottom (like the OOC chatlog). The traditional (AO1) behaviour is equivalent to this being unticked. + + + Log goes downwards: + + + + + + + + + + + + + + The amount of message lines the IC chatlog will keep before deleting older message lines. A value of 0 or below counts as 'infinite'. + + + Log length: + + + + + + + entries + + + 10000 + + + + + + + If ticked, new messages will appear separated, with the message coming on the next line after the name. +When unticked, it displays it as 'name: message'. + + + Log newline: + + + + + + + + + + + + + + The distance in pixels between each entry in the IC log. +Default: 0. + + + Log margin: + + + + + + + px + + + 1000 + + + + + + + If ticked, log will contain a timestamp in UTC before the name. + + + Log timestamp: + + + + + + + + + + + + + + Log timestamp format: + + + + + + + + true + + + + + + + If ticked, log will show IC actions such as shouting and presenting evidence. + + + Log IC actions: + + + + + + + + + + + + + + If ticked, log will show messages as-received, while viewport will parse according to the queue (Text Stay Time). + + + Desynchronize IC Logs: + + + + + + + + + + + + + + Text logs of gameplay will be automatically written in the /logs folder. + + + Log to Text Files: + + + + + + + + + + + + + + Gameplay will be automatically recorded as demos in the /logs folder. + + + Log to Demo Files: + + + + + + + + + + + + + + + Privacy + + + + + + Do not include me in public player counts + + + + + + + QFrame::HLine + + + QFrame::Sunken + + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::RestoreDefaults|QDialogButtonBox::Save + + + + + + + + -- cgit