WoW 2.2 Changes - Concise List

by Iriel | 16/05/2007 04:07:24

Iriel

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!

by Slouken | 16/05/2007 12:38:05

Slouken

[kermit]It ain't easy, bein' green...[/kermit]

Well, green with big teeth goes a long way. :)

by Slouken | 18/05/2007 02:14:09

Slouken

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()

by Slouken | 18/05/2007 03:37:43

Slouken


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.

by Slouken | 22/05/2007 06:21:58

Slouken

By the way, there are no plans to add additional load manager functionality. What you see is what you get. :)

by Slouken | 22/05/2007 06:48:23

Slouken

In WoW 2.2 the game can 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()

by Slouken | 25/05/2007 05:28:59

Slouken

pitchLimit is back for 2.2

by Slouken | 25/05/2007 07:49:20

Slouken

Nope. :)

by Slouken | 25/05/2007 14:18:14

Slouken

No, disabling an AddOn means "I don't want this to load".

by Slouken | 25/05/2007 22:08:04

Slouken

Oh, I see what you mean. Yes, I'll fix this.

by Slouken | 26/05/2007 06:54:53

Slouken


Q u o t e:
Exactly, it shouldn't load. And when it's not enabled, the addons that point to it are missing their LoadManager and should be loaded as if the LoadManager is not present (which is how it currently behaves if the LoadManager is present-but-disabled from the start).


I'm not sure I understand. Let's start again from scratch.

From looking at the code, if you have a LoadManager present and enabled when you enter the game, then the addon that uses it will be marked load on demand (whether enabled or not). If the LoadManager is disabled, then the addon will not be load on demand and will be loaded normally if it is enabled.

If you start out with a LoadManager disabled, and then you enable it, that just means that the next time the UI is loaded that the LoadManager will be loaded and then the addons that support it will be marked load on demand.

So first, is that what is actually happening? Second, if that's what's happening, what is the issue that you're trying to solve?

by Slouken | 26/05/2007 07:36:56

Slouken

Got it, thanks. I'll add it to my list.

by Slouken | 02/06/2007 22:32:21

Slouken


Q u o t e:
Hey slouken, would it be possible to get "proper" events for weapon temp enchants changing? The current implementation, even in the defaultUI, requires constant polling OnUpdate to detect when a temp enchant is gained or lost. I'm writing a reminder addon and... well... OnUpdate polling just feels so dirty...


I remember looking at that at one point, and there was actually a reason for that. Changing it would have been a pretty big rework of the system at the time.

by Slouken | 12/06/2007 21:20:30

Slouken

In 2.2, 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. If you want the old behavior, you can still do it with the following:
/cast [target=X,exists] [] spell

by Slouken | 17/06/2007 20:22:34

Slouken

Any bugs should be reported in the tech support forum.

by Slouken | 18/06/2007 20:45:44

Slouken

In 2.2.0, SecureCmdOptionParse() has been rewritten in game code for blindingly fast performance!

by Slouken | 18/06/2007 21:46:24

Slouken


Q u o t e:

By which you mean written in C?


Or something. :)

by Slouken | 19/06/2007 19:04:46

Slouken

*laugh* I hate it when i get my source twisted! :)

The entire dynamic macro update system has been moved into highly optimized C++ for 2.2, resulting in a roughly 100x speedup. Please keep an eye out for bugs in macro options and dynamic feedback, since it's all completely rewritten from scratch.

by Slouken | 30/06/2007 21:18:55

Slouken

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.

by Slouken | 04/07/2007 03:14:20

Slouken

In 2.2.0 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.

by Slouken | 05/07/2007 20:33:17

Slouken

In 2.2.0 the UNIT_SPELLCAST_* events now have the name and rank of the spell as arg2 and arg3.

by Slouken | 05/07/2007 20:34:19

Slouken


Q u o t e:


It means you have to make your macro:

/cast [target=mouseover] Rejuvenation; [exists] Rejuvenation

(I /think/ that also can be simplified to /cast [target=mouseover] [exists] Rejuvenation)



I think you want:
/cast [target=mouseover,help] Rejuvenation

by Slouken | 10/07/2007 23:09:53

Slouken

Added script functions to adjust the portion of a frame which is clamped on screen.
left, right, top, bottom = Frame:GetClampRectInsets()
Frame:SetClampRectInsets(left, right, top, bottom)

by Hortus | 04/10/2007 16:49:03

Hortus


Q u o t e:
Apparently as of 2.2, using warrior abilities on units other than target is transferring your auto-attack to the recipient of the ability. Was this intentional?


Hi Alestane, I'm Hortus from QA, and we would like a bit more information about this.

Could you describe the situation that this occurs in, which abilities are used in which order and on what targets?

by Slouken | 04/10/2007 23:01:48

Slouken

Probably what they were referring to was that Previously /cast [target=mouseover] X would cast X on the current target if the mouseover wasn’t valid. This was incorrect behavior and was fixed in 2.2. You can simulate this behavior with the addition of [] in the macro, like so: /cast [target=mouseover] [] X

If that's not what's happening, please post some simple steps to reproduce the bug.

Thanks!

by Slouken | 05/10/2007 03:03:00

Slouken

Actually in this case it's working as intended. Sunder Armor starts combat if it's not already started, on the target of the sunder.

Bump! Recently Bumped Threads

 

Blizzard Announcement Recent Blizzard Announcements

 

We suggest