ShadowDancer

ShadowDancer

11.6k Downloads

[Cataclysm Classic] Macros made with M6 and placed onto ShadowDancer action buttons don't show cooldown sweeps

AlexFolland opened this issue ยท 12 comments

commented

Description

Macros made with M6 and placed onto ShadowDancer action buttons don't show cooldown sweeps.

Steps to reproduce

  1. Create a bar with at least 1 action button in ShadowDancer.
  2. In M6, create a new macro with an item or ability which has a cooldown, like /use Hearthstone.
  3. Right-click the macro in M6 and click "Place on action bars", then use the mouse to place the macro onto an action button created in step 1.
  4. Engage the macro created in step 2 and allow the resulting cast to complete successfully.

Expected behavior

When placed on a ShadowDancer button, a macro made in M6 with an ability or item is expected to display the cooldown sweep when that ability or item is on cooldown.

Observed behavior

When placed on a ShadowDancer button, a macro made in M6 with an ability or item does not display the cooldown sweep when that ability or item is on cooldown. Instead, the ability or item icon is displayed with full brightness across the entire image while the ability or item is on cooldown.

Additional information

This was discovered in Cataclysm Classic with ShadowDancer version r052 and M6 version 1.51a.

I expect that this may need to be solved in your action button library, Scorpio. I reported it here instead because the symptom can be seen in ShadowDancer.

I am a new user who tried this addon for the first time today in an attempt to replace my Neuron configuration, since Neuron has new issues introduced by Blizzard's changes and is no longer maintained. I found that ShadowDancer does not show icons for macros like M6 does, nor does ShadowDancer allow editing each button with a macro directly like Neuron's edit mode does, so I decided to use M6 for macros instead. Unfortunately, they have this cooldown sweep issue. Aside from the awkwardness of editing the macros compared to Neuron, that's the last issue left to resolve in my setup.

commented

I need check M6 how it treat the action bar, since SHD use a special action system, and if M6 only handle the system and action button from the LibActionButton, it won't work with SHD, but if it does, it'd be easy to add support to the SHD.

commented

Have you try to map the action bar to bar 2~6. there are two type action buttons, one map to blz's bar, they will display the cooldown of the macros, but the button has limit count.

One don't map to blz's action bar(the default settings when you create a new one), they are un-limit, but won't display info like cooldown, name, tips for the macro. They are designed for common spells, item, equip set, pet and etc.

To display the cooldown, I need analyse the macro text and track all the changes like cast queue, since we can solve that easily by map action bar to blizzard's bar, and the analysis is a too heavy job, I don't want do that.

Also with the SHD's feature, I don't need many macros, so map 1 ~ 3 bar will be enough for macros.

commented

Also you can use /shd custom cmd to change the macro text on empty buttons, but not powerful like the M6 do, and still the problems, it won't show the cooldown until you map it to bliz's bar.

Again, I don't really use the macros since I more like the multi-popup action bar system in the SHD, you can try that to see if some macros can be replaced by action bar layouts.

commented

Have you try to map the action bar to bar 2~6.

Yes, I have tried that. The cooldown sweeps for these M6 macros are not displayed on any of those mapped bars. I have tried both the mapped bars and custom bars (mapped to "None").

To display the cooldown, I need analyse the macro text and track all the changes like cast queue, since we can solve that easily by map action bar to blizzard's bar, and the analysis is a too heavy job, I don't want do that.

I expect you don't need to do that yourself, and just need to apply the cooldown duration that comes from M6. I'm also an addon author and can take a look at how Neuron does it, as well as what M6 provides.

Also you can use /shd custom cmd to change the macro text on empty buttons, but not powerful like the M6 do, and still the problems, it won't show the cooldown until you map it to bliz's bar.

Yes, I noticed that as well. Those ShadowDancer macros don't show any icons at all, which makes them unusable to me. Almost all my abilities use macros, and Neuron almost works, but (only now) has issues with possession and vehicles.

Again, I don't really use the macros since I more like the multi-popup action bar system in the SHD

I don't see how that's relevant at all for handling macros like this:

#showtooltip [spec:1]Kill Command;Chimera Shot
/cast Furious Howl
/cast Dash
/cast [@mouseover,harm,nodead,exists][@pettarget,harm,nodead,exists][@target,spec:1]Charge
/cast [@mouseover,harm,nodead,exists,spec:1][@pettarget,harm,nodead,exists,spec:1][@target,spec:1]Kill Command;[@mouseover,harm,nodead,exists][@pettarget,harm,nodead,exists][@target]Chimera Shot
/cast [@mouseover,harm,nodead,exists][@pettarget,harm,nodead,exists][@target,spec:1]Bite
/petattack [@mouseover,harm,nodead,exists,spec:1][@pettarget,harm,nodead,exists,spec:1][@target,spec:1]
commented

Ok, I checked the M6's code, no surprise, it track the button by hook button's texture updating. Since the texture in Scorpio use a different meta-table, it won't track buttons created by Shd.

Also the default update logic wont' work for the SHD(that's provided by the M6 not the original action system), luckly, the M6 support OverrideM6Update for custom button updating.

I use a special trick to trigger the M6's hook, so it can track the SHD buttons. You can get that update from this repo, I haven't release it since there could still be problems

I'll waiting for your feedbacks.

commented

Thank you very much! I have cloned the latest main branch at commit ecc42b0 and tested it on a target dummy in Stormwind.

I have observed several distinct behaviors in my testing. I have observed good behavior, but also unfortunately, a significant amount of bad behavior. Here are descriptions of my observations.

Good behavior

  • Cooldown sweeps when M6 macro abilities are on cooldown are now displayed.
  • When M6 macro abilities are not usable due to low resources (for example, Chimera Shot when I have less than 44 focus), the button is darkened.

Bad behavior

  • When entering the game world, all buttons cycled through some kind of icon update which was observably slow instead of being instantly ready.
    • It's good that this was asynchronous so that the game wasn't completely frozen for the duration, but I was not expecting this behavior.
  • The game's frame rate is about half of what it usually is on my computer. I usually get about 70 to 76 fps, pretty much everywhere.
    • With this change, I observe usually 29 to 40 fps, with the very highest I've seen when not moving or doing anything being 50 fps.
    • The frame pacing is very poor too, so there are constant frame drops.
  • Buttons which were empty (with no ability or item assigned to them) in mapped bars "main", "2", and "3" before this change now are populated with icons from other bars.
    • Clicking these buttons and activating their keybinds does nothing.
    • This is only happening with mapped bars "main", "2", and "3", and there are no empty buttons on those bars now. All other bars have empty buttons where they were previously empty.
  • Buttons which were assigned without macros now have the wrong icons which seem to be icons from M6 macros I have.
    • For example, my Readiness, Hearthstone, Stoneform, Herb Gathering, and Alchemy buttons are using icons from Snake Trap, Misdirection, Explosive Trap, Serpent Sting, and Scare Beast respectively.
    • All of the replacement icons are from M6 macros I have, so I'm guessing ShadowDancer is assigning basic buttons M6 macro icons by accident.
    • These briefly flash to the correct icons once in a while while I am actively using abilities, but instantly (in 1 or a few frames) revert back to the incorrect icons.
    • Icons for all M6 macro buttons are the correct icons, like before.
  • When an ability is on cooldown, the cooldown sweep and cooldown count from OmniCC briefly disappear repeatedly while using the ability and even while not using any abilities.
  • The tooltips for M6 macro buttons on mapped bars do not show the ability information, and show this instead:
    • image
  • No tooltips are displayed at all for M6 macro buttons on unmapped bars (bars mapped to "None").

Since these observations are not easy to understand just from text descriptions, here is a video demonstrating the observations.

shadowdancerm6test.mp4

There's a lot to unpack here, so please take your time interpreting it. If you have any questions, please ask me. I am happy to help with this M6 support so that I can fully replace Neuron in my UI with something that's maintained.

commented

I also noticed that Neuron shows a different color for abilities which can't be used because of being low on resources compared to abilities which are just on cooldown. You can see that behavior with Chimera Shot when it's on cooldown but also low on resources at 16 seconds to 20 seconds in the Neuron video. ShadowDancer doesn't seem to do that at all, so it's not possible with ShadowDancer to tell the difference just from the bars when an ability is both on cooldown and low on resources.

commented

Just as a comparison, here's a video of the same kind of test using Neuron, to demonstrate the expected behavior.

neurontestforcomparison.mp4
commented

Unfortunately, there's a lot of misunderstanding about my observations in your comment: particularly about empty buttons which now have icons added, and icons for basic buttons (not macros) having incorrect icons taken from other buttons. None of those buttons should have any interaction with M6, and it looks like something related to M6 is interacting with them now.

OmniCC works just fine. The reason I mentioned OmniCC is because the cooldown sweep itself is disappearing and reappearing repeatedly while the ability is still on cooldown. The part about OmniCC was not a request for support with OmniCC.

Sorry, but there's way too much misunderstanding here and I request that you read my previous comments again and watch the videos to understand the observations I've made for yourself. It's difficult to interact with misunderstandings and working on a foundation of misunderstandings can only lead to incorrect and unnecessary changes.

commented

entering the game world, all buttons cycled through some kind of icon update which was observably slow instead of being instantly ready.
It's good that this was asynchronous so that the game wasn't completely frozen for the duration, but I was not expecting this behavior.

The SHD is created based on Scoprio which provide an async framework, also a new ui system which split the ui logic and the display, all data are pushed by reactive operations, it require more memoery and init time to gain better performance and skin swap features.

To make the loading screen quick, the Scorpio use the async loading as default, you can switch it in the Scorpio settings in addon control panel, turn off the Smooth Loading.

The game's frame rate is about half of what it usually is on my computer. I usually get about 70 to 76 fps, pretty much everywhere.
With this change, I observe usually 29 to 40 fps, with the very highest I've seen when not moving or doing anything being 50 fps.
The frame pacing is very poor too, so there are constant frame drops.

Try disable M6 for a test, all refresh in Shd are through reactive chains, so the addon won't do full refresh by each frame. But with M6, the repaint signal is pushed by M6, I only accept the signal to do a full refresh, and I notice it almost push signal in each frame, if you don't have probelm when disable M6, I can add some delay to reduce the full refresh.

Buttons which were empty (with no ability or item assigned to them) in mapped bars "main", "2", and "3" before this change now are populated with icons from other bars.
Clicking these buttons and activating their keybinds does nothing.
This is only happening with mapped bars "main", "2", and "3", and there are no empty buttons on those bars now. All other bars have empty buttons where they were previously empty.
Buttons which were assigned without macros now have the wrong icons which seem to be icons from M6 macros I have.
For example, my Readiness, Hearthstone, Stoneform, Herb Gathering, and Alchemy buttons are using icons from Snake Trap, Misdirection, Explosive Trap, Serpent Sting, and Scare Beast respectively.

Mapping bars means use action type for those buttons, they are not macros or spell, or items, they are only action. So for all those icons I only get them from GetActionInfo.

Unlike other action bar mods that inherit from the blz's ActionButtonTemplate, The M6 do the icon, cooldown and other updatings for them. For Shd, I need do the update since M6 won't find them.

So, you can check the M6.lua in Shd, only button type like macro and action(which's action type is macro) and the macro name started with _M6 will use the trick to register them to the M6, all other buttons will be the original.

All of the replacement icons are from M6 macros I have, so I'm guessing ShadowDancer is assigning basic buttons M6 macro icons by accident.

The M6 is only a addon-in, won't affect the basic buttons, unless it use macro provided by M6.

These briefly flash to the correct icons once in a while while I am actively using abilities, but instantly (in 1 or a few frames) revert back to the incorrect icons.

It's possible for action type buttons, since the action has its own refresh logic, and the real icon that M6 provided is un-displayable, the M6 is checking those un-displayable icon to know the button it need do the refresh.

When an ability is on cooldown, the cooldown sweep and cooldown count from OmniCC briefly disappear repeatedly while using the ability and even while not using any abilities.

Don't think OmniCC will work for those macros, since the cooldown is provided by M6, the OmniCC may get the cooldown by hook system's api, but as I said, the Shd don't use that, and I can't patch the OmniCC to meet the require.

The tooltips for M6 macro buttons on mapped bars do not show the ability information, and show this instea

Ye, I only make the solution in half an hour, some feature is just leave to the next time, first thing is make it works.

I don't really have time to play the game now, so I can't do many test, since you have the addon dev abilities, if you like this to be done, you can join me at https://discord.gg/PhUktBJd

commented

That's what you see, I have no empty button issues in my test. I only use one M6 macro, that maybe the different, I only use a test account, so I can't add too many test macros.

There is still some fix can be made if you can help. It's not efficiency that I upload some code changes, and you do the test. As I said I don't have time to play the game, but I can give the code during daily jobs. So you can contact me with discord to make it done.

Go back to the empty issues, the icon texture and others are re-usable in skins for the shd, so, that's means one button's icon may be moved to another, that's may cause M6 track wrong button when the skin is appling, I had do some fix, but I can't do the test in the office.

commented

I re-created my entire setup that I had created with ShadowDancer in Button Forge, which is a similar addon to ShadowDancer, and the M6 flashing cooldown issue was there with Button Forge as well, so the flashing cooldown issue may be just an issue with M6 itself.

For now, I've decided to use Neuron with a vehicle/possession bar from Button Forge, which seems to work well for my purposes. This doesn't use M6 at all, so I don't have to deal with the M6 issues.

This means I'm in no hurry to solve the M6 issues. If you'd like to abandon this effort or just save it for the future in case someone else comes along and reports the same thing (unlikely), by all means, that would make sense to me. Neuron is not maintained at all though, so I may have to switch to either ShadowDancer or Button Forge full-time in the future if Blizzard breaks Neuron further.

ShadowDancer is very cool and it's one of very few action bar addons out there with unlimited buttons, so I applaud your effort in creating and maintaining it.