I would like to see a new optional key added to skins that BF will then add to the button, if the key is available - shape.
I myself prefer round skins and with the new spell flash alerts in 4.0 I am working on designing a round-button version of a spell flash alert. However, to display the proper square, round or other shaped spell alert, there needs to be a way to query the button to determine the intended shape of the skin by the skin designer. A index can then be added to the button's table such as button.__bfskin_shape = "[square|round|other]", or at the very least add a method to BF such as BF:GetShape() which returns the shape key for the button skin if available, nil otherwise.
Support can be imbedded in an addon or via plugin. My own addon, Trinity Bars, has it's own skinning engine which I do not plan to abandon. Also, I do not plan to include BF-specific code in my addon. However, I did write a plugin that will override Trinity's own skinning engine if BF and the plugin are installed.
BF supplies the skinning engine. It is up to the addon and/or plugins to tell the engine which buttons to skin. An author such as yourself is not obligated to support BF in your addon code and as long as you don't mind others writing plugins, your addons can be skinned via BF with thrid-party plugins. I wrote my own plugin just because it is really rather simple :)
3) Is there any documentation anywhere for OPTIONALLY supporting this? Or is support an all-or-nothing thing. You can disable its features, but you must use it to support it?
I think the best way to optionally support BF is to write a plugin or let someone else write one. Tuller of Bongos has no plans to maintain BF support, but a plugin was written for Bongos3 that lets users who want BF support in Bongos have it. Tuller does not have to do a thing in his own code to make BF work with Bongos, mainly because of the way BF is designed to work.
Stuff like "then if you're still experiencing problems saving the colors, inform the actionbar addon authors." just scares the crap out of me. Don't get me wrong, I'd like to support it, but I don't want the hassle of keeping up with other people's mods just to keep up with my own.
I think perhaps jj could word this better :) BF is not going to support any addon specifically, like CyCircled does. If someone wants an addon to be skinned by BF, the addon either needs the author to add support *OR* another person (or the author themselves) needs to write a plugin.
In the end, you don't need to do a thing Gello. I think your addons are popular enough that someone will write a plugin to add BF support. I myself prefer to write and maintain my own plugin because in the end it is easier and quicker than answering a bunch of questions on *how* to write one that will work with Trinity Bars :)
I have been trying to fine-tune things in my addon if a user decides to use BF, however I am running into a small bit of confusion with how the normal texture is handled.
if skinlayer.Static and btndata.Normal ~= false then
btnlayer = btndata.Normal or button:GetNormalTexture()
if btnlayer then
button.__bf_nonormaltexture = true
btnlayer = baselayer[button] or button:CreateTexture()
baselayer[button] = btnlayer
btnlayer = btndata.Normal or button:GetNormalTexture()
if baselayer[button] then baselayer[button]:Hide() end
if not btnlayer then return end
if skinlayer.Hide or btndata.Normal == false then
This section of code attempts to create a normal texture on the button even if one already exists, and hides the original. Well, that is not what I want, so I set "btndata.Normal = false" to force BF to use the normal texture the buttons already have, as seems to be the logic.
Yet, the last if/then in the quoted code block with "btndata.Normal == false" the existing normal texture is hidden anyhow and fails to skin the buttons.
There may be a reason for BF to create a new normal texture even if one exists, and I have not tried to see if that is the case, however in order for me to handle the normal texture in my addon, I need a means to direct BF to use the already existing texture. Right now, it seems I can't.
Changing the last quoted if/then to -
if skinlayer.Hide then
lets everything work.
Trying to make my addon's buttons change their own reference to the originally created texture to the field __bf_normaltexture BF adds has had mixed results.
I don't know if what I'm asking is strictly speaking in ButtonFacade scope but I seem to remember that, in Blizzard's default UI, when a cooldown has ended there is a small "twinkling" animation flashing. Would it be something that could be added to BF ?
I don't know enough about the button bars arcana so it's perfectly plausible that would it be something which would be more appropriate in the scope of a button bar add-on.
Cooldowns are something that are the responsibility of the bar mod addon author. The cooldown "star flash" or "twinkle" is part of the of the spiral object, however, depending on how an addon is coded to handle cooldowns, the cooldown spiral can be hidden too early to show the "star flash".
So what I am saying, is that the "star flash" is always there, just some addons either intentionally or unintentionally hide the effect.
Is it a layout issue or something else? Maybe I'm not seeing the problem everyone else is having. >.< I would actually prefer it be compatible with what everything else is, but whatever works.
Yup, pretty much. Choosing a skin is fine, using the test buttons is fine, but the only way to get the profiles part working in the new Blizzard addon interface is to get, as jjsheets said, BetterForAceBlizzOptions =)
All this skinning is kool and all but what about animating some stuff. Right now the only animation is showing the hilite layer on mouseover. I would like to see the glow maybe intensifying as you stay over the button then fade off when you leave.
FadeOut could potentially be done this way as well. This would let a skin do things like shrink to say tiny dots instead of fading out. Or fade out by burning up and exploding away at the end. Etc.
Personally, functionality of a button really needs to be left up to the addon and is beyond the scope of what BF promises to be, imho. In order to get some of these effects, BF would have to hook the OnEnter/OnLeave scripts of buttons, potentially causing unforseen issues.
If addons were cars, I view BF as the Body and Fender shop. It puts on a slick new coat of paint, maybe some pin-stripes, a decal here and there and maybe some cool flames. I however don't really want the Body and Fender guys messing with my car's engine.
So, how would people think about removing the sizing for the theme frames and just let BF scale the textures to the appropriate size, leaving a gapX/Y for the skin...or am I missing something?
If you were just dealing with square skins, this *might* be an okay idea, but with non-square skins the textures do not keep the same ratios. Personally, I think in the long-run, being able to define the sizes per texture/layer is needed to fine-tune how a skin ultimately looks and feels.
I'll look into this. Is there a specific skin where this is more noticeable? In the meantime; StormFX, will making this change break any of your Border textures? If so, I will hold off on the change until you can update them.
In particular Trinity: Hex 3D and Trinity: Diamond. There is some masking going on in the normal texture to hide the "squareness" of the icon. With the current setup, the border is rendering under the normal texture, effectively hiding the border layer.
It should be noted that the border layer in Blizzard buttons by default in is OVERLAY.
When I change Border = "ARTWORK" to Border = "OVERLAY" and Border = 1 to Border = 4, everything is fine.
Edit: Oh yeah, I should mention it is great to hear that Button Facade will get the coloring/text features :D Thanks!
Wrong. Tongue The textures themselves are colored. In order to properly implement color selection, the textures for states, etc, need to be converted to gray scale masks and then the actual RGBA attributes tweaked in the skin. The module or whatever can then manipulate those values.
Not necessarily :P My addon, Trinity Bars, can load up cyCircled skins, many of them pre-colored, and color them. CyCircled can do this too. By simply applying texture:SetVertexColor(r,g,b) you can adjust a pre-colored texture. It does not HAVE to be a gray-scaled texture. It may not be pretty, it may be down-right ugly, or it may be an awesome coloring combo. But giving the end-user the choice to do what they want with colors, is really the point.
A skin author can pre-color the skin to awesome effect using the skin files textures and the skin.Red, skin.Green, skin.Blue values. The user can accept the authors vision. But if the user wants the style of the skin, but not the colors, where do they go?
It's all about control. Either the authors have it or the users have it. The successful addons are when the users have control. And if the user's control breaks the addon, then the user gets to keep both pieces =)
Oh well, I made my case. If the final verdict is no color option, then so be it :D
Perhaps. I'm willing to negotiate. However, as was mentioned above, people WILL complain about certain skins looking bad with certain coloring. And I'm the type of person that will simply tell them where to stick it. Besides, I'm putting my hard work into creating skins for others to use free. If you don't like it, you don't have to use it.
On another note, the amount of work it would/will take on JJ's end is pretty steep. Not to mention that that means I have to go back and rework every single skin with the assumption that someone's going to be changing the colors.
I am not trying to stir up any hornet nests, just so everyone knows =)
I just think that BF will fall short of being THE button skinning addon if it does not have these features. I have not checked into the modularity of BF, but if someone is able to make a module that puts these features in, then great.
However, as someone who has been coding an action bar addon for a very long time, I know there is one simple fact: Users want choice.
These two features just seem fundamental to me. And honestly, the color picker is not that hard to implement. You call the Blizz color picker, it returns the RGB picked, you apply it and save it. The text positions I can agree might be a bit more involved to implement, but it's not going to be a coding monster.
And the skins files do not need to be reworked at all. The skin files are providing the default values. Some people love defaults. But some people do not =)
I just see BF picking up momentum and think these are key features that should be included early on. If another author can add a module, then great. But without being able to adjust color or text position, I foresee another addon being made down-the-road that will do everything BF does now and more. And only because Bartender or Bongos will never implement skin coloring options on their own. And as much as authors think their default choices are great, there are always users that like to tweak things beyond defaults but are too afraid to touch Lua files.
I will just leave it at this. If BF never sees these features, I am not going to make a federal case out of it =)
1) A color picker to let the user set custom rgb values
2) A means to let the user adjust the position of text elements
Well, on the decision to not include these features I would have to respectfully disagree. A color wheel opens up thousands of color possibilities that would be impractical to to include a skin version for each one. Even cyCircled includes a means to color certain elements of a button. It just seems odd that cyCircled can provide an option where Button Facade cannot.
Now, I say this even though my own addon, Trinity Bars, does indeed have a skin coloring mechanism already. However, I just do not see other authors, like those of buff addons, adding a skin coloring option when they leave the skinning of buttons up to other addons like cyCircled/Button Facade. Skinning of buff buttons is a secondary concern to these authors.
Now, for the ability for users to determine text position, is something that is indeed desired by users. Right now, I am working on a means to do this in my own addon, but I can see that it could easily be done in BF and given the name of the addon, it seems natural that it should be a feature. And the reasoning is one of simplicity for the end user -
Lets say I do get text positioning up and running in my addon, and a user gets the text exactly where they want it, but he/she uses other addons like maybe AutoBar and Trinket Menu. On one hand they can skin all these addons with ease using one single addon (BF) but to get the look (the facade) to match with text positions, they have to fiddle with 3 different configuration menus (time consuming) that may have subtle differences where they can't get things to match up just right. Where, if BF did have this option, it could be a very uniform and a one-stop solution to setting these options. And not to mention that some authors may not even include a means to adjust text position.
It is just my opinion that if an addon seeks to redo the "facade" of any frame that is button-like, it should go full force in providing any and all options that have to do with how the button frames look. And it is my opinion that these features will soon be requested anyhow and the code is already in BF to apply these settings. Why not let the user decide what the settings are if they do not like the settings in the skin file?
Overall, I like the concept of Button Facade, but without these features it just seems to fall short of being everything that it's name implies.