Bad news, everyone: I quit WoW, my account expires on August 11th. So tick that "Load out of date AddOns" check box and hope for the best!
I just wanted to say thanks for using my AddOns and for all the support, feedback, bug reports, and kind words. Very much appreciated. Bye!
Description
Displays cooldowns of your spells, items or equipment slots. Every cooldown has an icon, the time left, an optional bar, and an optional, user-defined label ("trinket 1" for example).
I wrote this AddOn because I wanted to get rid of all those action buttons, taking up a big part of my screen. I use hotkeys for almost every spell I have, so I don't need buttons. After I hid all those buttons, I was missing two things: Range detection and cooldowns. This AddOn takes care of the cooldown part.
Features
- Speed: I have a slow computer, and I like optimizing code, so I designed the addon to be as fast as possible.
- Watches cooldowns of spells, items or equipment slots
- Fixed, user-defined order: I don't want my cooldowns sorted by time. If I need to know the cooldown of Taunt, I don't want to spend time looking for it, I need it to always be in the same place.
- Disable the bars: If you don't like bars (or want to make the addon run even faster), you can disable them. CooldownWatch will only display the icon and the time left.
- Auto-hide (optional): Hides the cooldown frame if the ability or item is off cooldown to save screen real estate.
- Customizable layout: You can change the bar texture, bar colors, the text color, and the font. Some of these features require SharedMediaLib/SharedMedia-1.0 (not included). Try the addon SharedMedia if you're interested.
You can also change the list layout, i.e. the order of the cooldowns in the list. The default is top to bottom, available options are bottom->top, left->right, right->left.
- Drag-and-drop interface: See below. Or just try it out.
Usage
Enter /cooldownwatch or /cw to toggle the config mode. A small anchor frame is visible if you're in config mode. CooldownWatch automatically activates the config mode if it runs for the first time on a toon. In config mode you can do the following:
Move the cooldown frames: Drag the anchor.
Add a cooldown: Drag and drop a spell or item to the anchor frame to add it at the end of the list.
Or drop it on another cooldown to insert it at that position, and use that cooldown's settings.
Note: If you drag an item from your bags, the item itself will be added as the cooldown. If you drag an item from your character frame, the equipment slot it came from will be watched. That way, you can watch for example the cooldowns of the trinkets you're currently wearing.
Remove a cooldown: Middle click the cooldown frame.
Reorder cooldowns: Drag the cooldown frame.
Access cooldown specific options: Right-click the cooldown frame.
Access global options: Right-click the anchor frame.
IMPORTANT: While you're in config mode, cooldowns won't get updated. You have to leave config mode in order to make cooldowns work.
Things you might be missing (ToDo list)
- Currently there's only one list of cooldowns. Maybe I will add multiple lists someday.
Features CooldownWatch doesn't have, and never will (NoDo list)
- Cooldowns of other players or mobs.
- Automatically add cooldowns.
- Automatic sorting.
- You can't change the format or graining of the time displayed. For example if the cooldown is 2h34m11s, CooldownWatch will display 3h (which means 3h or less) until it's less than 120m. At that point of time it will switch to minutes, and at less than 120s it will display seconds. It's unlikely that I'm going to change this.
- Localization of the config menus. I don't see a real need.
Bugs/Issues
- Drag and drop doesn't work for pet spells, not sure why they disabled this in WoW. Pet spells are not supported at the moment.
- If one spell triggers multiple cooldowns, the results may be unexpected, because CooldownWatch tries to avoid scanning all watched spell cooldowns. Let's say you're watching Shield Bash and Pummel: If you use Pummel, only the cooldown frame of Pummel will be updated. However, if you hide and show the interface (Alt-Z), or reload the UI, or exit config mode, CooldownWatch has to scan all watched cooldowns, and will detect that Shield Bash is on cooldown, too. There's no way for CooldownWatch to know that multiple spells share the same cooldown, unless I add all those combinations manually. Which I'm not going to do.
Notes
The main feature of CooldownWatch is speed. Cooldowns have to use OnUpdate code, which is executed in every frame, i.e. every time WoW redraws the screen.
Most timer addons update the text that displays the time left in every frame. The default interface also does this if you enable the display of buff/debuff duration. Let's say a cooldown has 15 minutes left, so for the next few minutes, the text will only change once per minute. Let's say you have a frame rate of 15fps, that's 900 frames per minute. That means 899 out of 900 times, updating the text is just wasting CPU, because the text won't change anyways. CooldownWatch, on the other hand, only updates the text when it's needed.
Another example: Let's say the cooldown bar has a width of 90 pixels. Again, other cooldown addons would update this bar every frame. For longer cooldowns, most of these updates won't actually change the bar, just waste CPU. It's 90 pixels, so the bar only needs 90 updates, which is exactly what CooldownWatch will do.
One more example: There's an option in CooldownWatch to disable the bar of a cooldown. Most addons would work like this: In every frame they would check if the cooldown has a bar, and update it if there is one. Checking for that bar is CPU overhead; the addon (and your frame rate) becomes a little slower, just because hiding the bar is optional. Most addons look up options in their database, which requires multiple table lookups. Now image you're a programmer. You would know beforehand if you want a bar or not. Since you're a programmer, you can write the code accordingly; you don't need to check if there's a bar or not, you just write the code to update the bar if there is one, or leave that code out, if there is no bar. CooldownWatch works exactly like this, it actually writes the code itself. That way, CooldownWatch can have optional features, without spending time on these checks.
As a small test, I compared CooldownWatch to the addons "Cooldown Timer Bars" and "Cooldown Bars 2.0" from curse. I configured them all to have bars of size 90x18. Then I triggered four cooldowns, and measured the CPU times for each addon with WoW's CPU profiling feature for 30s while all four cooldowns were still running.
CooldownBars 257.6ms
CooldownTimers2 99.2ms
CooldownWatch 15.4ms