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
It looks like the entire game-side code for runes and rune events have been re-done, so this module was failing to properly update rune availability. I've switched to a model of ignoring the rune index coming in from the update event and just rebuilding my internal state of rune availability/cooldown for all runes on each event (sometimes the incoming rune index was 32760 or a huge negative number...looks like garbage values). This is how the built-in rune frame is handling things now as well.
I also tweaked the shine fade-in to not create a new function every shine. Whoops.
Updated for:
- SPELL_POWER_* constants becoming Enum.PowerType.*
- Rank no longer existing in return values for UnitAura, UnitBuff, UnitDebuff, UnitCastingInfo, UnitChannelInfo
- UNIT_POWER event becoming UNIT_POWER_UPDATE
- UnitPopupFrames no longer existing
- Removed events: PLAYER_PET_CHANGED, UNIT_MAXPOWER, PET_BAR_CHANGED, UNIT_DYNAMIC_FLAGS
- Texture return value from UnitAura type changing (name -> id)
- All Warlock specializations using soul shards
- Death Knight rune changes
Haven't tested all classes/specializations yet, so I'm sure I missed some stuff.
Probably need to add support for the new circular cooldown wipe flourish added in the base client.
Saw a problem with cooldown flashes being delayed on DK runes becoming available that probably need to be fixed.
With runes being homogenized in 7.0, it makes a little less sense to adhere to the structure of specific runes being available/used. This adds an option to display the runes more like combo points where simple textures are shown to indicate how many runes are available. No cooldown or "soon-to-be-ready" type indicators are setup just yet since that problem is more difficult and my personal usage doesn't really need them right now.
Also added an option to show the Runes module any time the player has some runes that are recharging.
We were creating font factories every time the runes module was asked to redraw. Oops...
Also fixed the numeric frame's parent while I was in there so that it (in a future commit) will show and hide with the module properly.
Updated with the new DK rune changes so there are no longer different types of runes, just the one type. Also hooked up support for any potential changes to the max number of runes (as is present in Blizzard's RuneFrame source), but have no idea how to correctly trigger the 7th rune (or if that's even in the current build). Tested with hackery via /script commands and verified it works, so *shrug*.
- fixed "show incoming heals" option to be properly toggleable on 4.0 (bad conditional on the 'disabled' option)
- hid "cooldown mode" option on the totems module since there was never more than one choice
- the ace3 conversion also broke the dependence on Waterfall and gave a much better configuration screen through AceConfigDialog; plus Waterfall is very broken in Cataclysm and it's unclear whether anyone will bother to fix it or not
- fixed a bug with the custom CD bar when changing profiles where it would generate endless errors until a reloadui
- removed DewDrop library as it was no longer in use
- temporarily removed FuBar plugin as it doesn't work as a mixin with AceAddon-3. i will eventually be bringing this back in some form (before the next full release version)
- removed an unused 'about' button on the config page and some empty headers...not sure why they were ever there
- added the ability for elements to boost the alpha value a bit. runes were way too dark previously
- removed all of the background code for runes since the cooldown wipe makes it extraneous
- added horizontal positioning option to the Runes module (and made sure it was properly centered by default instead of being off to the left)
- changed log template on main dir, moved callbackhandler to the top of the list for embeds, externals, and pkgmeta just to keep everything uniform and make Threat load properly
- fixed bug with runes module where the last rune would never show as being used (because i was thinking in 0-based array world)
- added hax to the runes module to swap placement of frost and unholy runes since blizzard has had their hack in for 2 builds now