COMBAT_LOG_EVENT_UNFILTERED is a spam-fest, so let's only subscribe to it when we absolutely have to. This could arguably by done entirely in UNIT_AURA, but since we don't know for sure that a given UNIT_AURA event was the removal of a buff, there is a potential problem with trying to detect exactly when the puzzle session was finished. This code can potentially mis-detect puzzle starting, or hide the addon again when it's already hidden, but there shouldn't be an issue in practice. If this turns out to be problematic, I will roll back to the previous method.
This has been tested on Classic with a Rogue up to level 5 using various modules and casually checked against a few level 1 classes. I'm sure there's a lot more to do here. I also made sure to test on Live.
Where possible I tried to check for API availability rather than specific client versions or program IDs. There are many cases where that's impractical, however, so version/program ID checks were used.
This was tested with:
* Ace3 @r1225
* AceGUI-3.0-SharedMediaWidgets @r61
* LibDBIcon-1.0 @v8.2.0
* LibDogTag-3.0 @v80200.1
* LibDogTag-Unit-3.0 @v80200.1-2-g93a898d-alpha
* LibRangeCheck-2.0 @v4.2.3 (with a couple of local changes)
* LibSharedMedia-3.0 @r113-alpha
There are too many classes that need to care about mana as a background resource in addition to whatever their primary resource is to keep creating class-specific bars, so let's just make one bar that does it all. I've done a one-time inherit of DruidMana's settings since it's the only bar that's been in a Release version that serves this purpose and should migrate its settings forward.
- reduced cpu usage by 33%-50% across the board (and more in some cases) by changing how updates are registered and how often they run. now the 'update period' slider actually matters. it defaults to 0.033 meaning that frames update about 30 times a second instead of every frame
- fixed the "always" display mode for cooldown bars to respect alpha settings (ooc/with target/in combat/etc.)
- fixed the GCD to update its bar color as the user changes it instead of requiring re-enabling the module or reloading the ui
- clarified some tooltip text on the TargetInfo module's text blocks
- added DogTag support to the ToT module by request
- added an argument to IceElement's init function that allows modules to skip the registration with the core. mirrorbars need this since they are created on demand and not saved with the rest of the bars
- colorized the FAQ and Module Settings description text to be more readable
- removed custom coloring from certain options that didn't match the rest
- hid a few debug-only settings
- consolidated all the 'create custom module' buttons into a drop-down + create button
- clarified description of some options so that their intent/purpose is more clear
- moved around/cleaned up headers for consistency
- doubled the width of long options so that they don't get cut off and ...'d
- made all pop-up dialogs display in the tooltip strata so that they draw on top of the options screen. each pop-up resets itself to dialog once it's hidden
- made custom modules get auto-selected in the options screen after they're created
- added upgrade detection to alert users that their profile may need to be re-selected if the last version they ran was pre-ace3-conversion
- added an FAQ section to the /icehud configuration page so that users don't have to go to one of the addon hosting sites to get their questions answered