Commit Graph

122 Commits

Author SHA1 Message Date
Crystalwarrior
63128fea13 Stop supporting the DRO way (we will make a .bat file or utility that does it for you automatically instead!)
Add an option to enable/disable stickers
Make stickers actually respect the custom chatbox setting properly
2021-02-16 11:20:54 +03:00
in1tiate
36a1e26069 fix borked chatbox themes 2021-02-13 07:48:42 -06: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
Crystalwarrior
aea0e2ef80 Fix backwards compatibility with the stopmusic
Hide ~stop.mp3 and the stop category
Add an option to make it so when you double-click a category, it expands/collapses it without sending the stop-music command
Make right click stop music backwards compatible
2021-02-09 03:00:51 +03:00
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
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
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
in1tiate
894b2b2a0e
Consolidate AOScene, AOMovie, and AOCharMovie into one class, add support for (c) animations, implement emote continuity, add scaling overrides to all layer types, allow for stretch-to-fill images, allow for additional effect configuration (#302)
* Rewrite AOScene and remove the need for AOMovie and AOCharMovie by consolidation

* Rename AOScene to AOLayer, apply suggestions to improve functionality

* Implement suggested change to allocation

* Switch from pointer to field, fix ui_vp_player_char not resetting play_once

* Use the variable gif_name instead of the string "gif_name"
 Oops.

* Total rewrite of AOLayer (again)

* Add support for (c) animations, do some housekeeping

* allow themes to override misc chatboxes

* add support for pulling InterfaceLayer elements from theme/misc

* mistakes were made

* move all frame fx functionality to CharLayer subclass

* virtual functions are cool mkay

* remove evidence of my incompetence

* allow themes to override font design inis under theme/misc

* Proper support for theme/misc chatbox, fixes

* Fix chatbox dimensions not updating and inline color causing missingnos

* rename chat markdown to chat markup

* add missing misc overrides

* quick hotfix for chatblank and misc overrides

* Fix oversight with backgrounds causing them to be culled

* Same as last commit but for FG layer

* amend comment to explain impossible shenanigans

* Adjust ForegroundLayer to take charname rather than miscname, allow for checking in char folder

* fix an incredibly embarrassing pathing bug

* add scaling overrides for all layer types, parent orphaned viewport elements to the viewport

* stupid fix because themes use "custom.png" as a button

* switch to .append()

* Revert "Merge branch 'aoscene_rewrite' of https://github.com/AttorneyOnline/AO2-Client into aoscene_rewrite"

This reverts commit bdeb1bff7639d522031aab3c133a83b0e2a291df, reversing
changes made to 125ee63b97a6f6c156e69525d88fddc625e7a978.

* switch to .append() (again)

* move function call to fix showname length calculation error

* fix nonlooping character animations being broken Again

* unparent elements from the viewport and do fancy masking arithmetic instead

* use override keyword

* move scaling override to char.ini, allow stretching, restructure effect property loading

* fix some redundancy

* unparent chat_arrow from chatbox to prevent accidental masking

* at no point do we want a frozen gif to display

* overhaul how wtce is handled

* oops

* also let sounds be pulled from theme miscs

* i should probably compile before i push

* actually make it work

* don't check a default bg

* readd 1x1 stretch thing

* actually the 1x1 thing was a bad idea

* Add missing parenthesis

* Use load_image instead of play

play is a nonexistent method now

* Remote shout_message and usages because it does nothing

* Remove multiple redefinitions

* Add in missing brackets and indent to fix build

I have know idea what this does but it brings fear

* fix build error

* fix chat arrow and remove duped code

* remove more duped code and fix misc themes

* only update chat_arrow when needed

* consolidate log_chatmessage and display_log_chatmessage

Co-authored-by: scatterflower <marisaposs@gameboyprinter.moe>
Co-authored-by: Skye Deving <76892045+skyedeving@users.noreply.github.com>
Co-authored-by: oldmud0 <oldmud0@users.noreply.github.com>
2021-01-19 14:32:11 +03:00
in1tiate
d41ec17fe7
Add a new "char_list" QTreeWidget that allows for categorizing characters (#399)
* 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>
2021-01-18 23:10:45 +03: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
Crystalwarrior
2f84055af9
[2.8.6] Demo Recording/Playback (#337)
* 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>
2021-01-13 22:25:24 +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
883fa8547d
replace "gender" with "blips" (#386)
Co-authored-by: Crystalwarrior <Varsash@Gmail.com>
2021-01-09 18:24:06 +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
in1tiate
079c45e298
Define IC Log colors independent of character, define message colors according to character (#323)
* IC Log colors now defined independent of character

* Fix regression causing incorrect colors in the viewport

* fix goof that broke chat scrolling

* Only regenerate color vector when it's needed
2021-01-09 18:09:18 +03: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
scatterflower
ecb0ee42a3 clang format 2020-08-16 21:59:44 -05:00
scatterflower
34604742f1
Merge pull request #245 from scatterflower/realization_fix
Check for custom realization sound when using effects list
2020-08-16 07:12:29 -05:00
scatterflower
002086343a Check for custom realization sound when using effects list 2020-08-16 04:03:56 -05:00
windrammer
0ce60d66a7
Fix not using custom chatbox's colors (#228)
* Fix not using custom chatbox's colors

Moved set_text_color_dropdown() to after current_char is actually updated
with the selected char. Otherwise set_text_color_dropdown will try to
update the colors with either nothing as character, or with the previously
selected character.

Use get_chat() so it actually gets the name of the custom chatbox
instead of using the same name as the character.
Remove the extra "c" since get_chat_color it's already called
with this "c" in place.

* Fix previous fix crashing the client on DRO servers

For some reason the client would work just fine
if set_text_color_dropdown() was called only once
after updating the character selected by the user.
But when joining a DRO server the client would crash
just before loading the music.

* Improve comment with where crash happens

* Fix get_chat_markdown to get the custom chatbox on misc of the char

instead of trying to find the character folder on misc

* Fix client using the current character colors on other people's messages

Also remove the comment explaining the crash if set_text_color_dropdown
is removed from set_widgets

* Fix loading custom colors loading after the message was added to the log
2020-08-05 09:18:08 -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
windrammer
0b7b70c76a
Fix character-specific theme not falling back to current theme (#207)
It is only logical to say that the user, when not specifying any specific speedline or similar in the theme, then the current theme should be checked first rather than the default theme.

Co-authored-by: Cents02 <Cents02@Cents0.me>
2020-07-29 12:19:27 -05:00
Crystalwarrior
c533370fd8
Fix the blips folder not seeking the blips/ folder for the male.wav sound effect first instead of trying to find sfx-blipmale in base/general folder, makes using the blips folder more viable. (#173) 2020-07-04 12:15:19 -05: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
Crystalwarrior
19d0c29b35
Fix issues when undefined colors result in everyone's chat not using talk anims (#174)
base/misc/default/config.ini with properly defined "baseline" colors will have to be supplied with vanilla content later.
Remove hardcoded colors - user has no access to these unless config.ini is valid, yet when others speak using these ID's their text shows up just fine.
Either reimplement full on hardcoding madness (NOOOOOOOOOOOOOOOOOOOOOOOO NO NO NO NOOOOOOOOOOOOOOOO NOOOOO!!!!) or yeet.
I chose the sensible option :^)
2020-06-29 10:39:27 -05:00
Crystalwarrior
a5868aa380 Fix looping frame SFX not working w/ AOV's definitions 2020-05-22 04:53:19 +03: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
Crystalwarrior
8007b1d1b9 Add courtroom_design.ini partial parsing for misc/ folder (only chat_arrow and showname atm)
Initialize chat arrow n stuff
this is still pretty gay because you can't ignore size and set pos or something like that
2020-03-31 18:12:15 +03:00
Crystalwarrior
825042b32c Fix a really obscure bug breaking custom realization sound effects (realization=thing) char.ini definition not starting from base/sounds/general folder 2020-03-22 22:26:46 +03: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
Crystalwarrior
43c4e3e9d7 Network effects folder so you don't need to modify your own char.ini to see custom effects 2020-01-17 18:41:27 +03: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
f30013f7f9 i am REtArd
Fixed a major bug that crashed the clients on chatting + broke a lot of assets because of a single `.` boi anywhere in the filepath.
2020-01-15 16:06:27 +03:00
Crystalwarrior
34848c4eaf Fix a bug where user would be unable to speak if the BG changed when someone else was speaking
Make it so blip sounds are accessed in base/sounds/blips/* if such a path exists
2019-11-18 20:27:37 +03: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
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
bef368e986 Allow gender (blip sounds) that don't use sfx-blip naming convention
Fix "prezoom" packet being ignored
Allow char.ini's to indicate a zoom w/ preanimation by using emote_mod=4

((ALL OF THESE ARE UNTESTED - TESTING NEEDED!))
2019-10-23 05:08:20 +03:00
Crystalwarrior
bc8158cc96 Meme fix to <>, ~~ and ~> parsing (does not fully solve the issue but at least hides it from the user)
Allow ascii characters to be used for color dropdown symbols
2019-10-05 16:47:59 +03:00
Crystalwarrior
4f738bfe34 Fix some read_file errors on effect loading
Make FM packet only fetch music, and new FA packet to fetch areas (this way you don't have to reload the entire music list just to get new areas)
Fix a possible segfault with emote lists if emote list size is bad
Hide casing button if server doesn't support casing
Hide the remove buttons by default for iniswaps and sfx list so they're not clickable when they shouldn't be
Prevent background from being displayed unless the server asked us to
Fix some redundancy surrounding current_side
Rework music list so list_music doesn't care about search bar and the hiding is actually done in the search function
Implement text centering, rightening and justifying
Fix text scrolling meme that happened with \n and skipped chars
Fix the pos dropdown not actually caring if you selected jur and sea pos.
Fix the pos dropdown sending like a million packets when scrolled through.
Prevent characters from being incorrectly resized if a different-scaled character speaks
Fix character select screen letting you choose characters that the server doesn't want us to be
2019-10-01 01:07:03 +03:00
Crystalwarrior
30c02221d2 Make the client select a default font that resembles classic AA font the most (cleartype off, MS Sans)
Create a better method to replace trailing whitespace with proper HTML representation
Don't bother rendering the string character-by-character to prevent any latency happening with instant text speed
2019-09-29 03:26:16 +03:00
Crystalwarrior
923548c997 Hellcommit of doom and suffering
Create two new helper functions - get_chat_markdown and remake read_char_ini_tag to be read_ini_tags for more general purpose
Modify aolineedit to support preserving selection after unfocusing (building this for using dropdown list for setting colors), as well as remove the setReadOnly functionality and use it in signals instead
Overhaul the color system to get rid of inline colors, allow full customization of colors and usage of configuration files for every facet of how a color functions (should we be talking, should we remove that markdown char, etc.)
Complete overhaul of color markdowns system

TODO: Make this thing not lag to hell, fix chat messages hogging the IC as the animation never ends apparently
2019-09-25 02:05:52 +03:00
Crystalwarrior
7097053723 Change all instances of "colour" to "color" for consistency's sake
Overhaul inline colors system to properly support additive text and further expansion
Add two new colors - Gray and Blank, the latter being used for IC parsing.
Instead of adding text symbol by symbol, reveal more of the already-rendered text instead so that it properly anticipates words that need to be on the newline.
Changed the append_ic function slightly so it appends ": " to text only after it's no longer needed.
Made gray color less inconsistent with everything else
2019-09-24 21:24:25 +03:00
Crystalwarrior
f8d3d5d8fd Fix a bug with sound effect from misc/ folder not being read
Make an "effects_icon_size" entry in courtroom_design.ini for scaling the buttons in the effects list
2019-09-18 14:28:26 +03:00
Crystalwarrior
2d329cdbd2 Bugfixes for the thing and how it orders things 2019-09-18 05:45:02 +03:00
Crystalwarrior
ad057c6f7a make icons for effects n shit
they're grabbed from the effects/icons/*same name as effects*
gotta be .png or w/e
i need my sleep
2019-09-18 05:22:00 +03:00
Crystalwarrior
605e15bb8c Implement effects system that reads your folder in theme/effects, or misc/<folder name>/<effects>
Add an effect packet
Allow aomovie to be fed a direct path
Add some really terrible helper functions that shouldn't exist, sorry.
2019-09-18 04:14:52 +03:00
Crystalwarrior
9d20cf0322 Streamlined ini swapping so the user can set up multiple character folders associated with a character.
This will save to the character folder's iniswaps.ini. You can click on the dropdown and edit the text inside to add an iniswap, and press the [X] button that'll appear next to it to remove the ini swap.
Recode the enter_courtroom and add a new update_character feature - the two are now separate and responsible for different things. The courtroom will reload the whole theme and widgets while the character is only responsible for all ui elements related to the character. This drastically improves performance when switching characters using /switch or something
Add a set_char_ini helper function that allows you to modify the character variables. For now only used to set name= field when iniswapping
2019-09-17 18:51:40 +03:00
Crystalwarrior
13221319b8 Change get_stylesheet to return text of a parsed stylesheet file, its functionality was transferred to get_tagged_stylesheet
Remove some useless/unused ui elements
Implement stylesheet for courtrooms in a way that lets the end user modify a lot of its elements
Use get_image_suffix for evidence_appear images
2019-09-16 23:22:34 +03:00
Crystalwarrior
b085be5a2a Add two new helper functions - get_design_element and get_static_image_suffix
Modify all set_image calls to utilize said suffix helper function
Dynamically change betweehn chatblank, chat, chatmed, chatbig based on the showname's length
Use char.ini showname if showname is set to whitespace (doesn't yet check if char.ini showname is also whitespace)
2019-09-16 21:08:43 +03:00
Crystalwarrior
9b39b7d6aa Allow char.ini to override the chat font and font size with chat_font = and chat_size =
Scream at the coders that decided hard-coding fonts and colors was a good idea (gotta properly let the themes modify that later)
Fix a lot of ui elements not properly respecting the themes and their colors
add a set_qfont method for those situations that need it
Allow the theme to change sender colors for ooc and ms chatlogs
rename url parser variable to something more immediately apparent as to what it is for readability's sake
2019-09-16 06:09:39 +03:00
Crystalwarrior
03ebad6bb6 Add expanded style sheet support
Allow lobby fonts to happen
2019-09-16 04:16:59 +03:00
Crystalwarrior
bf999f195a Add file reading, writing and appending functions that create folders if bool is true
Fix server_address not being properly created in packet distribution
Create a log file when you join a server in the logs/<server name>/<logname>.log and update it every time there's a new chat entry
minor refactor of chatlogpiece
2019-09-16 01:16:37 +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
ba28c244aa Add an opton to enable/disable screenshake + flashing
Fix moderation guard button not doing what it's supposed to (enable/disable modcalls)
Fix moderation guard button appearing with failed logins
Fix the option to toggle looping sfx not doing anything
2019-09-15 21:15:40 +03:00
Crystalwarrior
661ec87646 Implement networking for frame-specific effects data sending/parsing if the server supports it
Reorganize charmovie.h a bit and make some functions private
Add a new helper function "read_char_ini_tag" which returns a qstringlist of all key=value strings associated with the tag
2019-09-15 20:02:24 +03:00
Crystalwarrior
e94640b349 Looping SFX system - Defined this way:
[SoundL]
sfx-roar = 1
2019-09-15 17:44:47 +03:00
Crystalwarrior
a2f9df4042 Finally implement frame-specific effects such as screenshake, realization flash, sound effects, etc.
Fix screenshake animation modifying the default positions of shook elements
Fix aomovie sometimes not playing the last frame and causing lagspikes due to the delay() method
2019-09-15 17:44:02 +03:00
Crystalwarrior
455e020b19 Make log go downwards by default
Rename kill_music_on_object to objection_stop_music for readability
Update blip rate (faster overall, more accurate to the trilogy) - based on AOV values
Update default blip rate to be "once every two symbols"
2019-09-13 11:13:50 +03:00
iamgoofball
8a5bc8632e Kill Music on Object option
(todo: actual functionality, cherrypicked from Goofball's 2.7 branch)
2019-09-13 00:34:15 +03:00
Crystalwarrior
bb98f79083 Fix compilation error
Allow realization flashes to be animated images by making them AOMovies
Eploit the newly added 'duration' system for realization AOMovie
2019-09-12 19:37:44 +03:00
Crystalwarrior
3b415f5a70 Expand get_image_suffix to fall back on .png last
Reorganize the file_exists checks to be an array iterator instead for much less code duplication and easier ordering of priority
Reorganize desk and set_image loading on AOScene class, resolve issues with last_image setting to prevent animations from being restarted when characters talk on the same pos in succession
Apply get_image_suffix for seancestand and jurystand searches
TODO: At the moment, if you feed a .png shout, it will send the "Done" signal on the first frame (frame 0), not showing you the .png image at all. The shout code should be reorganized to allow static images to be displayed for exactly 720ms - the standard AA objection length. Usage of the timer similarly to the realizationflash.png might be possible.
2019-09-12 15:40:19 +03:00
Crystalwarrior
7378205523 Expand .apng and .webp support for get_image_suffix
Add get_image_suffix for all .gif's so that all animated pieces can be .webp or .apng instead
Expand on .webp .apng support and clean up the code somewhat
2019-09-10 21:57:06 +03:00
oldmud0
56ddd024eb
Fall back to Sans if no font setting found
Sigh...
2019-07-27 21:19:45 -05:00
oldmud0
e0c49ceb07 Merge branch 'bass-optional' into 'master'
Bass+discord optional

See merge request AttorneyOnline/AO2-Client!59
2019-07-20 16:57:27 +00:00
cents02
82db3e2263 Revert "More bug fixing."
This reverts commit ca84ba516fc892deaeafc18b23ad5a06822b29f5
2019-07-20 16:33:33 +00:00
stonedDiscord
785168f8d3 add a default for this 2019-03-13 22:05:36 +01:00
David Skoland
fb076ca7e7 Merge remote-tracking branch 'upstream/master' 2019-01-05 23:00:46 +01:00
oldmud0
6716a4532e Fix APNG preanimations not working (#52) 2019-01-03 21:45:58 -06:00
David Skoland
0788b162f1 fixed a crash condition where blip rate is less than 1 2019-01-02 22:28:16 +01:00
David Skoland
00cfd2750d moved headers into include and cpp files into src + logo into resource 2018-12-26 16:43:08 +01:00