Download
(17Kb)
Download
Updated: 08-19-18 03:41 PM
Pictures
File Info
Compatibility:
Battle for Azeroth (8.0.1)
Updated:08-19-18 03:41 PM
Created:02-09-09 05:18 PM
Downloads:124,989
Favorites:531
MD5:

CoolLine  Popular! (More than 5000 hits)

Version: 8.0.002
by: totalpackage, Phanx, Uitat

CoolLine is a spell/item cooldown mod that displays icons on a single bar/line to give you an idea of when it will be ready. No statusbar timer and no text timer.

CoolLine is inspired by Forte_Cooldown (a module in the ForteXorcist package). CoolLine is basically a stripped down and standalone version written from scratch. The name comes from putting "cooldown" and "timeline" together (yes, lame).

YouTube Intro

How to Use

  • Change settings - "/coolline" or check Interface Options -> AddOns
  • Change position and size - unlock to make it draggable and resizable
  • Filter/unfilter a spell or item cooldown - "/coolline Spell Item Name Link"
  • Add more fonts/texture - CoolLine uses LibSharedMedia

External Support
  • CoolLine.NewCooldown(name, icon, endtime, isplayer)
    • name - unique string id of the cooldown, used as a look-up id
    • icon - string icon path used to display image on the bar
    • endtime - numerical time when the icon should expire, based on GetTime()
    • isplayer - boolean value used to determine if the icon is colored by spell
  • CoolLine.ClearCooldown(unused, name)

Notes
  • Only one spell/item will be shown in an event that multiple spells/items share the same cooldown (whichever appeared first).
  • By design, icons will often overlap; if you do not like it, this type of cooldown mod is not for you.
  • What you see is what you get. If you like the idea of this mod but want more, I highly suggest checking out ForteXorcist or Ellipsis. I'll most likely ignore requests to make CoolLine more similar to them.
  • CoolLine only does spell/item cooldowns and NOT buff/debuff cooldowns, flight timers, time til enrage, etc; this will NOT change so don't ask.

Recently, I (TotalPackage) had some requests for donation info, so here it is. Do not feel obligated; donations (or lack of) will not determine what features I do or do not implement.

CoolLine
8.0.002 (2018-08-19)
Full Changelog Previous releases
  • Remove special treatment for obsolete DK spells
Post A Reply Comment Options
Unread 07-02-09, 04:25 PM  
dryploefo
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Problem with Dual-Specs

I read a few posts back that said that the latest update fixed a problem with talented abilities/skills not showing up until you reload your UI. However, I am still having this problem whenever I swap specs on any of my toons. Talented abilities/skills don't show up until I reload my UI. Is there a way to fix it with any slash commands?
Report comment to moderator  
Reply With Quote
Unread 07-03-09, 01:34 AM  
totalpackage
A Fallenroot Satyr
 
totalpackage's Avatar
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 940
Uploads: 10
Re: Problem with Dual-Specs

Originally posted by dryploefo
I read a few posts back that said that the latest update fixed a problem with talented abilities/skills not showing up until you reload your UI. However, I am still having this problem whenever I swap specs on any of my toons. Talented abilities/skills don't show up until I reload my UI. Is there a way to fix it with any slash commands?
You should provide me steps on how to reproduce your issues cause I cannot find any bug with spec swapping. Also make sure there is no addon conflicts (try running CoolLine by itself). If you must, try "/script CoolLine:SPELLS_CHANGED()" when that problem occurs.
Report comment to moderator  
Reply With Quote
Unread 07-06-09, 02:57 AM  
dryploefo
A Kobold Labourer

Forum posts: 0
File comments: 2
Uploads: 0
Well, I have a lot of addons that look like it's conflicting with it. I'm trying to narrow it down to which two addons conflict but there's a lot and I'm going to start with the one's I suspect (Talented, Ghost Pulse, etc). I'll try that this week when I get a chance.

The good news is, I disabled all addons except CoolLine and it works fine when swapping around specs so it seems like it's just a conflict. Thanks again for the script command, that actually works quite well for now. I'll post more once I get more information.
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 06:51 AM  
Cladhaire
Salad!
 
Cladhaire's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 1935
File comments: 4939
Uploads: 19
I'm loving this addon as an alternative to CooldownButtons (which I've been using prior to this). One thing I've noticed is that its often very difficult to see what spells I have on cooldown when they're in the same general area (like when I pop two 1 min cooldown spells at roughly the same time). The spells also seem to flip back and forth between what is being shown.

I wonder if there's been any discussion about how it might be made clearer about what spells are on cooldown when they are close together.

Great addon!
__________________
"There's only one thing that I know how to do well and I've often been told that you only can do what you know how to do well, and that's be you-- be what you're like-- be like yourself. And so I'm having a wonderful time, but I'd rather be whistling in the dark..."
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 12:23 PM  
totalpackage
A Fallenroot Satyr
 
totalpackage's Avatar
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 940
Uploads: 10
Originally posted by Cladhaire
...I wonder if there's been any discussion about how it might be made clearer about what spells are on cooldown when they are close together...
Any suggestions? The flipping back-and-forth behavior is supposed to be the solution to this, or is it poorly implemented (I am working on a smoother flip on PTR)? Various users' settings (bar width/height) hurt the chances of any perfect solution. Also, the basis of this mod is to stay linear without being just another stack like all the other cooldown mods.
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 12:40 PM  
Cladhaire
Salad!
 
Cladhaire's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 1935
File comments: 4939
Uploads: 19
Originally posted by totalpackage
Any suggestions? The flipping back-and-forth behavior is supposed to be the solution to this, or is it poorly implemented (I am working on a smoother flip on PTR)? Various users' settings (bar width/height) hurt the chances of any perfect solution. Also, the basis of this mod is to stay linear without being just another stack like all the other cooldown mods.
Yeah, the best I could come up with was text that is shown above, below, or next to the bar showing what spells are in each group. This way you avoid "stacks", but you only need one font string for each conflicting group.

I'll keep playing with it as-is and see if I can get used to it.
__________________
"There's only one thing that I know how to do well and I've often been told that you only can do what you know how to do well, and that's be you-- be what you're like-- be like yourself. And so I'm having a wonderful time, but I'd rather be whistling in the dark..."
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 01:10 PM  
daphoosa
A Kobold Labourer
 
daphoosa's Avatar

Forum posts: 0
File comments: 12
Uploads: 0
Originally posted by totalpackage
Any suggestions? The flipping back-and-forth behavior is supposed to be the solution to this, or is it poorly implemented (I am working on a smoother flip on PTR)? Various users' settings (bar width/height) hurt the chances of any perfect solution. Also, the basis of this mod is to stay linear without being just another stack like all the other cooldown mods.
My partial solution to this problem involves a couple modifications. First I changed the time scale to stop at 5m. Cool downs above 5m just hover at the end of the line blinking, which is enough information to tell me that they're on CD, and that I have a lot of time before I need to worry about them. I also changed the intervals to 0,1,3,9,30,90,5m. By "stretching" the time just before an ability comes of of cool down, it is much easier to see which one is ahead and plan for it.

In addition to these changes, I have changed it to use a Logarithmic function to determine the icon's position when it is more than 1s from coming off of CD (The 1s to 0 interval uses the original code). This provides a much smoother acceleration as the spell travels along the bar. I use a linear function to adjust the throttling based on the time left, so spells at 5m update every 5s and spells at 1s update 60 times a seconds. Spells less than 1s update at 60/s.

@Totalpackage, if you want to see my modifications, send me a pm and I'll email it to you.
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 01:17 PM  
Cladhaire
Salad!
 
Cladhaire's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 1935
File comments: 4939
Uploads: 19
Originally posted by daphoosa
My partial solution to this problem involves a couple modifications. First I changed the time scale to stop at 5m. Cool downs above 5m just hover at the end of the line blinking, which is enough information to tell me that they're on CD, and that I have a lot of time before I need to worry about them. I also changed the intervals to 0,1,3,9,30,90,5m. By "stretching" the time just before an ability comes of of cool down, it is much easier to see which one is ahead and plan for it.

In addition to these changes, I have changed it to use a Logarithmic function to determine the icon's position when it is more than 1s from coming off of CD (The 1s to 0 interval uses the original code). This provides a much smoother acceleration as the spell travels along the bar. I use a linear function to adjust the throttling based on the time left, so spells at 5m update every 5s and spells at 1s update 60 times a seconds. Spells less than 1s update at 60/s.

@Totalpackage, if you want to see my modifications, send me a pm and I'll email it to you.
Interesting, I'd love to see how this works for two spells that are a GCD or so away from each other.. but sounds nice!
__________________
"There's only one thing that I know how to do well and I've often been told that you only can do what you know how to do well, and that's be you-- be what you're like-- be like yourself. And so I'm having a wonderful time, but I'd rather be whistling in the dark..."
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 01:37 PM  
totalpackage
A Fallenroot Satyr
 
totalpackage's Avatar
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 940
Uploads: 10
Computing log is very costly (about 60 times more than a linear function), especially in an OnUpdate animation. That's definitely not happening in CoolLine. I suggest ForteXorcist, which uses that method and allows you to set the time limit of the bar.
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 01:42 PM  
Cladhaire
Salad!
 
Cladhaire's Avatar
Premium Member
AddOn Author - Click to view AddOns

Forum posts: 1935
File comments: 4939
Uploads: 19
Originally posted by totalpackage
Computing log is very costly (about 60 times more than a linear function), especially in an OnUpdate animation. That's definitely not happening in CoolLine. I suggest ForteXorcist, which uses that method and allows you to set the time limit of the bar.
Just throwing this one out there (I totally respect where you're coming from, there are way too many authors who have absolutely no restraint), but what about pre-computing the log tables beforehand and then using them. Would that make that model feasible? I'm not even sure if that's something that could work or be done.
__________________
"There's only one thing that I know how to do well and I've often been told that you only can do what you know how to do well, and that's be you-- be what you're like-- be like yourself. And so I'm having a wonderful time, but I'd rather be whistling in the dark..."
Report comment to moderator  
Reply With Quote
Unread 07-23-09, 02:38 PM  
daphoosa
A Kobold Labourer
 
daphoosa's Avatar

Forum posts: 0
File comments: 12
Uploads: 0
Originally posted by totalpackage
Computing log is very costly (about 60 times more than a linear function), especially in an OnUpdate animation. That's definitely not happening in CoolLine. I suggest ForteXorcist, which uses that method and allows you to set the time limit of the bar.
I appreciate your concern, but in my opinion, I think you're over emphasizing the computational cost. In a couple of seconds my throttling could be tweaked to a more moderate level. Also, anyone who is actually running at 60fps in a raid has plenty of cpu power to compute a single log per moving CD per frame. Note, I'm doing no Log computations for CD's at 5m and higher, and any 1s and under.

Anecdotally, I have been running 25man raids for a couple of weeks on a moderate computer with a full set of addons with no perceivable degradation.

On a side note, I have little desire to use ForteXorcist as your program is exactly what I need after a few adjustments.

edit: grammar/spelling
Last edited by daphoosa : 07-23-09 at 03:37 PM.
Report comment to moderator  
Reply With Quote
Unread 07-24-09, 08:19 AM  
daphoosa
A Kobold Labourer
 
daphoosa's Avatar

Forum posts: 0
File comments: 12
Uploads: 0
Originally posted by totalpackage
Computing log is very costly (about 60 times more than a linear function), especially in an OnUpdate animation. That's definitely not happening in CoolLine. I suggest ForteXorcist, which uses that method and allows you to set the time limit of the bar.
Update:

I ran some tests and cannot measure a difference in cpu usage between a linear function version, and a log function version. I used Performance_Fu to do cpu profiling and watched the addon specific cpu usage as I increased the number of CD's. On my computer, with 9 CD's between 1s and 5m the max cpu usage for either version was the same at 0.35%. With a single CD, they both showed about 0.02% usage.

My first guess as to why this is would be is that the work of scanning for new CD's and then tracking current ones is so much greater than computing their positions that the extra cpu power needed to compute a log function is not significant.

I have not looked closely at Performance_Fu to see how it works and what it is actually measuring, but it seems to show both versions scaling as the number of CD's increases. This indicates to me that it is measuring something about the amount of CPU time that they are using. Given this, the relative difference it shows should be an indication of the performance even if the absolute value it generates is biased.

In conclusion, I appreciate your work producing this great addon and the care you have put into making it light and efficient. My interest here is only to try to help make it even better. Sincerely, ~Daphoosa
Report comment to moderator  
Reply With Quote
Unread 07-24-09, 02:15 PM  
totalpackage
A Fallenroot Satyr
 
totalpackage's Avatar
AddOn Author - Click to view AddOns

Forum posts: 27
File comments: 940
Uploads: 10
I used a bench function to measure its cost, but try using a mod like Interface Usage, which profiles OnUpdate frames. The impact isn't noticeable, maybe just a few milliseconds, but that's a big deal for me as an author and maybe any class with a bunch of fast cooldowns.

Oh yea, I forgot to mention that I would like to keep the symmetry of the bar. I may end up changing the time scale since it seems many cooldowns have been reduced without me noticing. I'll just do that now.
Report comment to moderator  
Reply With Quote
Unread 07-25-09, 08:51 AM  
Malthus
A Murloc Raider
 
Malthus's Avatar

Forum posts: 8
File comments: 47
Uploads: 0
Compromise?

Originally posted by daphoosa
In conclusion, I appreciate your work producing this great addon and the care you have put into making it light and efficient. My interest here is only to try to help make it even better. Sincerely, ~Daphoosa
Could this discussion be concluded perhaps by creating a "fork" of Cooline in the form of a "patch" or "optional files" maintained by Daphoosa that contains the version with logarithmic scale and whatnot? This way both we, the users and you, the authors would benefit: those who want logarithmic scale could get it, and totalpackage would not need to answer requests for log scale...

Just an idea.
Report comment to moderator  
Reply With Quote
Unread 07-25-09, 05:15 PM  
daphoosa
A Kobold Labourer
 
daphoosa's Avatar

Forum posts: 0
File comments: 12
Uploads: 0
Originally posted by totalpackage
I used a bench function to measure its cost, but try using a mod like Interface Usage, which profiles OnUpdate frames. The impact isn't noticeable, maybe just a few milliseconds, but that's a big deal for me as an author and maybe any class with a bunch of fast cooldowns.
The value I see in a cool down timeline is not as much the ability to precisely tell the absolute time left on a CD, as it is to give an intuitive feeling for the relative chronological order of CDs at a quick glance. Given this, the value I see in programming efficiency is not that the CD's position perfectly reflects its time left, but that it runs without using excessive resources on a marginal machine. We are also talking about a server/client game with a very real inherent latency. To me as an user, the aesthetic smoothness of an icon gliding down a logarithmic curve is worth a couple of milliseconds of absolute accuracy.

Another change I am playing with is during the final segment having the icon grow to " iconsize * 1.5 " and then snap to 0 on the timeline and " iconsize * 2 " once it hits 60ms time left. This is because I felt that it was a bit difficult to see the exact moment that the ability came off of CD when it very smoothly increased in size and then very smoothly faded out. A nice side effect of this change is that now the spells fade out completely instead of clipping the last faded frame. This is due to my adjusting the program execution order to evaluate the fade equation before setting the icon fade value (since now an average player will have 2-3 frames with the icon at full before it starts to fade.)


Originally posted by totalpackage
Oh yea, I forgot to mention that I would like to keep the symmetry of the bar... [/b]
If I understand you right, you want the numbers to be spaced evenly. With the current log function I use, my markings are very close to exactly spaced like yours (the largest deviation from perfect is " section * 2.93 " at the 4th mark). My current bar is about 180 pixels long and I can't really tell that they aren't perfectly spaced. My last tick should probably read "4m" but I have mixed feelings about doing this.

Code:
		tick0 = createfs(tick0, "0", 0, "LEFT")
		tick1 = createfs(tick1, "1", section)
		tick10 = createfs(tick10, "3", section * 1.96)
		tick30 = createfs(tick30, "9", section * 2.93)
		tick60 = createfs(tick60, "30", section * 3.98)
		tick120 = createfs(tick120, "90", section * 4.94)
		tick300 = createfs(tick300, "5m", section * 6, "RIGHT")
Report comment to moderator  
Reply With Quote
Post A Reply



Category Jump: