World of Warcraft

1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . 11 . 12
60
View All Posts by This User Toggle Ignore / Unignore This User
  • 0. Upcoming 2.2 Changes - Concise List   05/15/2007 09:07:24 PM PDT
quote reply
This is a consolidated list of the announced (and sometimes observed) changes in the User Interface API's and functionality for the 2.2.0 release. Please note that this thread is to discuss the upcoming changes and any clarifications or features that are a direct result of those changes, or things which we've been asked to remind slouken of.

IMPORTANT: Off-topic or entirely redundant posts are liable to get deleted. It is however in everyone's best interest to not post them in the first place - We'd rather slouken could spend his time coding us cool things than moderating this thread!

Key Bindings
The game will distinguish between right and left modifier keys:
* Key bindings and modified clicks may optionally specify LSHIFT, RSHIFT, LCTRL, RCTRL, LALT, RALT instead of the normal SHIFT, CTRL, ALT modifiers. The default UI will not set L/R modifiers and will continue to use the normal (either side) modifiers.
* Macro conditionals may use lshift, rshift, lctrl, rctrl, lalt, ralt in addition to the normal modifiers.
* There are several new API functions to query each modifier individually: IsLeftShiftKeyDown(), IsRightShiftKeyDown(), IsLeftControlKeyDown(), IsRightControlKeyDown(), IsLeftAltKeyDown(), IsRightAltKeyDown()

There will be a unified system for customizing modified clicks in the UI:

Modified Clicks are specified using a new section in Bindings.xml, e.g.
<ModifiedClick name="DRESSUP" default="CTRL-BUTTON1"/>
These click actions are context sensitive, and Lua code chooses which action is appropriate based on the current context.

Script API:
* count = GetNumModifiedClickActions()
* action = GetModifiedClickAction(index)
* SetModifiedClick("action", "binding")
* binding = GetModifiedClick("action")
* active = IsModifiedClick(["action"])

A 'binding' is in the form of MOD-BUTTONX, e.g. CTRL-BUTTON1, or a simple modifier, e.g. CTRL

These modified click bindings are loaded and saved with the normal key bindings, so if you make changes you'll need to save them with:
SaveBindings(GetCurrentBindingSet()) ;

The Blizzard code has been reworked to use the following modified click actions:
<ModifiedClick action="SELFCAST" default="ALT"/>
<ModifiedClick action="AUTOLOOTTOGGLE" default="SHIFT"/>
<ModifiedClick action="STICKYCAMERA" default="CTRL"/>
<ModifiedClick action="CHATLINK" default="SHIFT-BUTTON1"/>
<ModifiedClick action="DRESSUP" default="CTRL-BUTTON1"/>
<ModifiedClick action="SOCKETITEM" default="SHIFT-BUTTON2"/>
<ModifiedClick action="SPLITSTACK" default="SHIFT"/>
<ModifiedClick action="PICKUPACTION" default="SHIFT"/>
<ModifiedClick action="COMPAREITEMS" default="SHIFT"/>
<ModifiedClick action="OPENALLBAGS" default="SHIFT"/>
<ModifiedClick action="QUESTWATCHTOGGLE" default="SHIFT"/>

This system replaces the following functions:
SetAutoLootToggleKey(), GetAutoLootToggleKey(), IsAutoLootKeyDown()
SetActionSelfCastKey(), GetActionSelfCastKey(), IsActionSelfCastKeyDown()

Settings
* The pitchLimit setting will be re-enabled.

Bug Fixes
* Fixed issue where frame sizes/positions aren't correctly recalculated on demand.
* Fixed unnecessary chopping of FontString contents when scaled.
* Fixed mishandling of doublewide frames when opening game menu.

Continued...

[ Post edited by Iriel ]


UI and Macros Forum MVP - Understand GC!
60
View All Posts by This User Toggle Ignore / Unignore This User
  • 1. Re: Upcoming 2.2 Changes - Concise List   05/15/2007 09:08:41 PM PDT
quote reply
Targetting
* If you specify a target for a spell cast in a macro that does not exist, it will show an error instead of defaulting to your current target.

Macros
* Conditional macros with multiple targets will use the appropriate context sensitive target for visual range feedback.
* The entire dynamic macro update system has been moved into highly optimized C++ for 2.2, resulting in a roughly 100x speedup (That's times, not percent). Please keep an eye out for bugs in macro options and dynamic feedback, since it's all completely rewritten from scratch. TEST COMPLEX MACROS THOROUGHLY IN THE PTR
* You will be able to use item:N, where N is the ID of the item, instead of the item name in macros. One of the advantages of this is that it will work even if you don't currently have the item, as long as it is in your item cache (e.g. GetItemInfo("item:N") returns non-nil)
* All macro conditional names are now lower-case only. - Previously mixed case conditionals (e.g. Stance) were allowed, now they will only be recognized in their lower case form (e.g. stance).
* The modifier conditional supports the new named conditionals, these are case sensitive and the standard UI ones are all uppercase (e.g. [modifier:SELFCAST])

Frame Support
* Frame:RegisterEvent() and Frame:UnregisterEvent() have been optimized and can be used in conjunction with OnShow() and OnHide() to greatly improve performance of the UI. This technique has been used to optimize the bank, bags, inventory, spellbook, and unit frames for a decent speed improvement in 2.2.0.
* The game tooltip now handles periodic updates directly instead of requiring OnUpdate functions in each button that might have a tooltip. Many of the related OnEnter functions now take a 'self' parameter, so AddOns will need to be updated to reflect this change.
* Frame positions are saved relative to the nearest corner rather than the upper left corner, so that they don't move when changing resolution and screen aspect ratio.
* NEW - Frame:SetClampRectInsets(left, right, top, bottom) -- Set the portion of a frame which is clamped to the screen.
* NEW - left, right, top, bottom = Frame:GetClampRectInsets() - Get the portion of a frame which is clamped to the screen.
* NEW VERSION - value = Frame:GetAttribute(prefix, name, suffix) - Performs an attribute wildcard search (prefix..name..suffix, "*"..name..suffix, prefix..name.."*", "*"..name.."*", name) and returns the first result found (Added to optimize SecureButton_GetModifiedAttrbute)

Events
* All UNIT_SPELLCAST_* events now have the name and rank of the spell as arg2 and arg3.

Protected Functions
* Picking up pet actions, spells, actions, and macros are all protected actions while in combat. This fixes a macro conditional logic exploit.

Secure Drivers
* RegisterStateDriver can be used with a state of "visibility" to show and hide frames based on arbitrary macro conditionals, e.g. RegisterStateDriver(MyBadTargetFrame, "visibility", "[exists,harm] show; hide")
* The unit setting support in SecureStateHeader now uses "clear" instead of "none" to specify that the unit attribute should be set to nil, to resolve a conflict with use of "none" as a valid unit.

(Last updated 2007-09-11 12:40 Pacific)

[ Post edited by Iriel ]


UI and Macros Forum MVP - Understand GC!
60
View All Posts by This User Toggle Ignore / Unignore This User
  • 2. Re: Upcoming 2.2 Changes - Concise List   05/15/2007 09:09:53 PM PDT
quote reply
(Past experience says we'll need this)

UI and Macros Forum MVP - Understand GC!
60
View All Posts by This User Toggle Ignore / Unignore This User
  • 3. Re: Upcoming 2.2 Changes - Concise List   05/15/2007 09:10:56 PM PDT
quote reply
(Putting this one aside to enjoy later)

UI and Macros Forum MVP - Understand GC!
60
View All Posts by This User Toggle Ignore / Unignore This User
  • 4. Re: Upcoming 2.2 Changes - Concise List   05/15/2007 09:12:02 PM PDT
quote reply
(Two and two makes four)

UI and Macros Forum MVP - Understand GC!
60
View All Posts by This User Toggle Ignore / Unignore This User
  • 5. Re: Upcoming 2.2 Changes - Concise List   05/15/2007 09:13:05 PM PDT
quote reply
(I suspect this is enough padding for now! May the thread commence)

UI and Macros Forum MVP - Understand GC!
Blizzard Entertainment
View All Posts by This User ignore-inactive
Slouken
Blizzard Poster
  • 10. Re: Upcoming 2.2 Changes - Concise List   05/17/2007 12:14:09 PM PDT
quote reply
In 2.2 there will be a unified system for customizing modified clicks in the UI:

Modified Clicks are specified using a new section in Bindings.xml, e.g.
<ModifiedClick name="DRESSUP" default="CTRL-BUTTON1"/>
These click actions are context sensitive, and Lua code chooses which action is appropriate based on the current context.

Script API:
count = GetNumModifiedClickActions()
action = GetModifiedClickAction(index)
SetModifiedClick("action", "binding")
binding = GetModifiedClick("action")
active = IsModifiedClick(["action"])

A 'binding' is in the form of MOD-BUTTONX, e.g. CTRL-BUTTON1, or a simple modifier, e.g. CTRL

These modified click bindings are loaded and saved with the normal key bindings, so if you make changes you'll need to save them with:
SaveBindings(GetCurrentBindingSet()) ;

The Blizzard code has been reworked to use the following modified click actions:
<ModifiedClick action="SELFCAST" default="ALT"/>
<ModifiedClick action="AUTOLOOTTOGGLE" default="SHIFT"/>
<ModifiedClick action="STICKYCAMERA" default="CTRL"/>
<ModifiedClick action="CHATLINK" default="SHIFT-BUTTON1"/>
<ModifiedClick action="DRESSUP" default="CTRL-BUTTON1"/>
<ModifiedClick action="SOCKETITEM" default="SHIFT-BUTTON2"/>
<ModifiedClick action="SPLITSTACK" default="SHIFT"/>
<ModifiedClick action="PICKUPACTION" default="SHIFT"/>
<ModifiedClick action="COMPAREITEMS" default="SHIFT"/>
<ModifiedClick action="OPENALLBAGS" default="SHIFT"/>
<ModifiedClick action="QUESTWATCHTOGGLE" default="SHIFT"/>

This system replaces the following functions:
SetAutoLootToggleKey(), GetAutoLootToggleKey(), IsAutoLootKeyDown()
SetActionSelfCastKey(), GetActionSelfCastKey(), IsActionSelfCastKeyDown()
63
View All Posts by This User Toggle Ignore / Unignore This User
  • Aerie Peak
  • 11. Re: Upcoming 2.2 Changes - Concise List   05/17/2007 12:59:07 PM PDT
quote reply
We can add our own to add-ons' Bindings.xml files, right?

There will be a built-in UI to edit these?

So, let's say we add a modified click called "FOCUSCAST", and the user sets it to "SHIFT-BUTTON2". In this situation, in a PreClick for a button, we could use IsModifiedClick("FOCUSCAST") to determine if the user had shift-right-clicked?

Does IsModifiedClick() with no parameters return false if it's a left-click with no modifiers and true otherwise, or what?

Will this integrate with secure templates at all?

[ Post edited by Aella ]


In the beginning, the World of Warcraft was created. This made a lot of people angry and is widely regarded as a bad move.
Blizzard Entertainment
View All Posts by This User ignore-inactive
Slouken
Blizzard Poster
  • 14. Re: Upcoming 2.2 Changes - Concise List   05/17/2007 01:37:43 PM PDT
quote reply

Q u o t e:
We can add our own to add-ons' Bindings.xml files, right?



Yes.


Q u o t e:

There will be a built-in UI to edit these?



No, at least not initially. The APIs are there if someone really wants to remap things, but it's not something we're promoting.


Q u o t e:

So, let's say we add a modified click called "FOCUSCAST", and the user sets it to "SHIFT-BUTTON2". In this situation, in a PreClick for a button, we could use IsModifiedClick("FOCUSCAST") to determine if the user had shift-right-clicked?



Yes, that's exactly right.


Q u o t e:

Does IsModifiedClick() with no parameters return false if it's a left-click with no modifiers and true otherwise, or what?



It returns true if any of the modified clicks are active. If you just want to see if modifier keys are pressed, you can continue using the existing IsModifierKeyDown() API.


Q u o t e:

Will this integrate with secure templates at all?


I suspect so, but no support has been implemented yet.
80
View All Posts by This User Toggle Ignore / Unignore This User
Sbo
  • Doomhammer
  • 18. Re: Upcoming 2.2 Changes - Concise List   05/18/2007 10:17:43 AM PDT
quote reply

Q u o t e:
<ModifiedClick action="SPLITSTACK" default="SHIFT"/>


If it's all possible, is there any chance at getting a "BUYSTACK" + accompanying functionality? Buying one at a time, or having to shift+click and then type in (or mash the mouse button) gets incredibly annoying when you're out to buy four stacks of reagents.

Have you considered that the IEF is already in-game, but in the form of an "idiot tax" - that is, increased repair bills for people who don't train/use the spell?
-- Daiman@Blackhand
1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 . 11 . 12
Forum Nav : Jump To This Forum
Blizzard Entertainment