Commit Graph

68 Commits

Author SHA1 Message Date
oldmud0
580313cbcd
Merge pull request #429 from AttorneyOnline/fix/continuous-bg
Fix continuous playback being nonfunctional on non-CharLayer elements, and allow users to toggle the feature
2021-01-27 18:10:52 -06:00
oldmud0
6de2105f2f
Merge pull request #438 from AttorneyOnline/feature/textspeed
Text crawl setting
2021-01-27 18:08:46 -06:00
Crystalwarrior
d1e7b2920b Refactor "text scrawl" to "text crawl" (sounds more simple to understand than scrawl tbh) 2021-01-27 20:05:06 +03:00
Crystalwarrior
615901c435 Fix options dialog squishing and being annoying when we add more settings
Fix resizing the options dialog causing the save/cancel buttons to take up half the dialog box
Add suffixes to all gameplay tab spinboxes
Make size policy less suck
2021-01-27 20:00:44 +03:00
Crystalwarrior
1a3f500034 Update text scrawl tooltip info and spinbox suffix 2021-01-27 19:58:29 +03:00
Crystalwarrior
423fe3d3fe Add the setting for the text scrawl 2021-01-27 19:18:43 +03:00
in1tiate
9624af5412 fix continuous and make it configurable 2021-01-23 12:53:47 -06:00
Crystalwarrior
c42496e204
Make chat rate limit configurable (#398)
Co-authored-by: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com>
2021-01-14 15:45:30 -06:00
stonedDiscord
dda459ceaa
behaivor (#404)
Co-authored-by: stonedDiscord <10584181+stonedDiscord@users.noreply.github.com>
2021-01-13 22:23:31 +01:00
Crystalwarrior
2d1de1fb54
Desynchronize viewport from the IC chat log so that users have a smooth viewing experience as an option (#385)
* Begin trying to understand handle_chatmessage monstrosity
Rearrange some functionality to be more consistent with what the particular handle_chatmessage is *supposed* to be responsible for
Single responsibility principle doesn't apply not just to script files but even functions in this goddamned program apparently.

* Fix some oversights relating to "has presented evidence" logs

* Fix an edge case crash with negative evidence, idk why this didn't happen before.

* Completely refactor handle_chatmessage hell and split it up into single-responsibility-principle functions like a sane and organized coder would.
This will break any PRs that touch handle_chatmessage and will have to conform to the new standard, but it's very good in the long run.
Functions have also been meticulously commentated to make sure that everyone can understand at a glance what everything does.
This refactor is done to pave way for smooth viewport, making characters no longer randomly interrupt each other when speaking.

* Rename confusingly named "handle_chatbox" to "handle_ic_speaking"
Add a new function "handle_callwords"

* Parse blankposts in the packet unpacking phase
log_chatmessage is now an argument-based funciton instead of using m_chatmessage monstrosity
Commentate the heck out of log_chatmessage
Fix showname displaying logic being bonkers for log entries
Fix -1 char_id most likely crashing client, even tho they're supposed to be system messages
Fix [CHARID] being referenced instead of [OTHER_CHARID] in the pair display func
Fix chat message color being used for "has played a song" even though it shouldn't

* Move setting emote_mod from the objection thing to the packet unpacking thing
handle_emote_mod has become argumented

* Make display_pair_character take in only vars it needs

* Add functionality for message stacks (does not handle logging separately yet)
Currently segfaults at line 1823 if stacking behavior actually occurs. Plz help I'm poopie brain at this

* Make sense of pointers and dereference some pointers to prevent wacky errors
Replace _stack with _queue, and turn it into a QQueue

* Implement a minimum text delay queue timer so that each msg must stay on screen for a specified amount of time
Chat_arrow only shows up when the minimum text delay has expired
Check if target is muted in the enqueueing, as well as the validity of the character id, so we don't even bother adding it to the queue
Add a settings option to set text stay time (minimum amount of time to pass before displaying the next message).
TODO: Handle queued interjections in a cooler way

* Adjust default option for stay_time to be 200ms
Make the stay_time setting of 0 disable the queue system entirely

* Make interjections force-clear the message queue
Use interjections to instantly process those messages - objections are usually extremely important and must have everyone's immediate attention.
TODO: Add a settings option for interjection behavior

* Clear message queue when bg display packet is received

* Add an instant objection setting which, when enabled, will interrupt and skip the message queue on objections (effectively bypassing text_delay system)

* Stop using AOPacket for the queue and use QStringList instead (packet contents, we don't care for the header)
Implement objection threshold which works in a queue if instant objections are disabled (not exposed to the settings yet)
Modify packet contents directly instead of waiting for m_chatmessage shenanigans (we should deprecate this soon)
Rename isinstant_objection_enabled options check to be more consistent

* Make it so objections display as soon as the message is over if instant_objection is disabled

* Remove emote_mod = "1" thing that had no real purpose
Implement desynchronized logs settings option, which is false by default, meaning users' messages and display IC logs are going to be in sync.
Split up display and logging behavior, meaning IC logs will be saved with accurate timings on the .logs file, while display can be slower.
Remove dumb "System" showname thing cuz it was dumb

* Bring back minimum packet size safety check

* Make sure shouts are properly logged. I am very sorry for this horrible amount of code duplication though.

* fix compile errors

* fix html parsing error

* Rearrange the order of logging so IC messages go like this:
* shouts go first
* evidence goes second
* chat message goes last

* Fix No Interrupt coming back, go away you foolish beast

* fix borked options dialog

* Crank down "press enter delay" from 600ms to 200ms so it's not as harsh

Co-authored-by: in1tiate <radwoodward@vikings.grayson.edu>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
2021-01-12 11:24:11 +03:00
in1tiate
15c3d607c6
Log objections IC, overhaul custom objections context menu, add more configuration options per-character (#356)
* initial commit

* The Quick-Fix is a secondary weapon for the Medic. It is a prototype Medi Gun with a group of three gauges on one side, a (cosmetic) ÜberCharge gauge on the other side, and what appears to be a blender for a body. The main gun is coupled with a medicinal reactor backpack with glowing portions that replaces Medic's default backpack.

* fixed settings dialog

* slightly less stupid custom objection default

Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>

Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
2021-01-09 18:17:12 +03:00
Skye Deving
c46ab13c62 Adopt the scroll widget in the options dialog 2021-01-07 23:30:46 -06:00
Skye Deving
86fd030ef0 Adopt the poor orphaned QWidgets 2021-01-07 23:30:10 -06:00
stonedDiscord
6e58b6a943 don't display the ? in the titlebar 2020-11-16 15:06:25 +01:00
oldmud0
8dcddf289f Only reinitialize audio on device change 2020-08-22 15:33:08 -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
Crystalwarrior
cef0ebc6eb
IC log rewrite (#259)
* Rewrite the IC Log code to drastically reduce code duplication and have both downward and upward mode in the same function
Regenerate the IC Log in set_widgets() function, making sure the maximum_blocks is accounted for and clearing the log to prepare for different log mode (upwards/downwards) if it's different from previous
Add placeholder text telling the user the direction in which the log will go
Remove useless first_message_sent global boolean, a remnant from a   w e a k e r   c o d e r m a n

* Add log_colors boolean to reduce color I/O happening in append_ic_text (optimization meme)
Clear the IC log when log_colors setting changes and reload theme is pressed
Fix https://github.com/AttorneyOnline/AO2-Client/issues/221

* Add configurable margin between IC log entries
Add configurable newline/singleline log mode
Options in settings for these

* Add optional timestamps

* Un-hardcode "played music" from the chatlogpiece and introduce the "action" argument so that "presented evidence" is fully supported now
Translate "has presented evidence"
Regenerate IC chatlog instead of clearing it, properly updating every element with the new configurations

* Go away *temp, code duplication making me shid and cry rn
Why is this not done in append_ic_text, or why isn't there a dedicated ic logging func aAAAaaaaAAAaa
Fix presenting evidence not being properly logged
Fix timestamp being UTC instead of local time (local time will not be as confusing)

* okok it was a joke a big ol bamboozle you got gnomed haha rick rolled beaned stickbugged
I did NOT copy paste code, no, I actually intended to fix copy pasted code all along. log_ic_text was always planned.

(Fix copypasted code for ic_chatlog_history and consolidate it into a single log_ic_text func)
2020-08-19 11:16:41 -05:00
windrammer
36b5af3cb9
Add option for automatic logging (#203)
Just so we're on the same page, this is enabled by default.

Co-authored-by: Cents02 <Cents02@Cents0.me>
2020-07-31 15:14:39 -05:00
likeawindrammer
b15c78af0d Add Portuguese and Polish language options 2020-07-29 11:23:17 -06:00
Crystalwarrior
0a31a20266
Add a setting to turn on/off custom character-defined chatboxes (#166)
* Add a new "Custom Chatboxes" settings option to enable/disable char.ini setting custom chat box designs per-character

* Fix chat_arrow being incorrectly updated between character messages if the custom chatbox modified the chat arrow positioning/size in any way

* brackets matter
2020-07-03 16:34:09 -05:00
sD
ba9aebec57 translate stuff that got run over 2020-05-23 18:32:05 +02: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
likeawindrammer
0a656d222d fix typo 2020-04-21 01:52:17 -06:00
cents
8fa96535ef Hooked up the new settings
Did you know you could scale the iclog with ctrl + mouse wheel?
2020-04-20 12:37:28 -07:00
cents
5b6d58bd02 Added additional customization options.
I didn't format anything tho that is at the end
2020-04-20 07:51:42 -07:00
cents
5f88b1fd30 Removed Duplicates 2020-04-19 12:47:50 -07:00
likeawindrammer
5bd8c960c9 Fix crash on saving settings
Thanks Initiate for actually fixing this
2020-04-19 12:35:03 -06:00
likeawindrammer
f224ea0589 Add Polish to the language options 2020-04-18 15:04:34 -06:00
likeawindrammer
26872be05d Add missing periods on two tooltips 2020-04-18 02:35:09 -06:00
likeawindrammer
9faf41a89f "interupted" -> "interrupted"; "expierence" -> "experience" 2020-04-18 00:45:13 -06:00
likeawindrammer
ac60466ac9 "IC_Log" -> "IC Log" 2020-04-18 00:14:59 -06:00
likeawindrammer
9a041bdf2a Change some tooltips 2020-04-18 00:00:43 -06:00
likeawindrammer
50d5aa2a0e Revert "Change "Custom shownames:" to "Show custom IC names:""
This reverts commit cd034b996a.
2020-04-17 23:26:44 -06:00
likeawindrammer
aed4396584 Change tickbox to checkbox
As far as I know checkbox is more common
2020-04-17 23:21:05 -06:00
likeawindrammer
cd034b996a Change "Custom shownames:" to "Show custom IC names:"
"shownames" isn't a word, and what does "Custom shownames" even mean anyway?
"Show custom IC names" should do a better job at explaining what this option does.
2020-04-17 23:13:18 -06:00
oldmud0
faac191f0b Mega-merge of CR fork
CR likely stands for "CentsRaidensnake." Like the Case Cafe mega-merge
before it, this was not a clean merge, and it had to be split up into
two parts: the actual changes, and the attempt it made to reformat the
entire code via clang-format.

This branch had a complicated set of changes that would be difficult to
describe in this commit message. It would be better described in a
proper changelog.
2020-04-17 21:48:34 -05:00
likeawindrammer
8486e19119 Add Portuguese translation 2020-04-11 18:21:04 -06:00
Crystalwarrior
7aa24bf501 Add a search bar for server list
Add options for sticky sounds, sticky effects and sticky preanims
Optimize the search for areas and music (previously, area search also searched for music in the background, causing lag with huge music lists)
2020-03-12 18:09:56 +03:00
sD
27a101d010 fix compiler warnings for unused vars 2020-03-06 17:14:42 +01:00
sD
b6eb61c187 move language setting to the correct position 2020-02-23 13:18:51 +01:00
stonedDiscord
7d55ff01f5
Merge branch 'master' into 2.7 2020-02-21 16:39:32 +01:00
Crystalwarrior
6138bb107b Separate screenshake options button from effects options button
Add a color logging option button
Update version to 2.8.2
2020-01-15 16:42:44 +03:00
Crystalwarrior
e3ddc41cc8 Add rightclick context menus to sfx dropdown, iniswap dropdown and effects dropdown to open the ini's and respective folders
try to fix settings menu (I failed)
2019-10-02 20:28:42 +03:00
Crystalwarrior
6785f35762 Begin implementation of scroll bars in the options menu 2019-09-16 01:20:03 +03:00
Crystalwarrior
1b36be9dbc Add an option for networking frame-specific effects
I'm starting to realize the options menu/system needs a complete overhaul at this point. (Auto-generating options menu, anyone?)
2019-09-15 21:39:39 +03:00
Crystalwarrior
6afce05661 Adjust options dialog to use a "row" variable for adding new elements easier
Add the "allow shake/flash" button
Add the "enable looping SFX" button
2019-09-15 21:17:12 +03:00