New UI Systems

Forum Avatar
Community Manager
#1 - July 5, 2012, 5:22 p.m.
Blizzard Post
With World of Warcraft: Mists of Pandaria, there have been some basic changes to our UI system and some new ways we are implementing the UI. Here is a brief overview intended for addon authors:

  • Frame Template System – The frame templates that were created several patches ago have been rolled into many UI frames. This was done to reduce the amount of different textures used, and to make it easier to change frame sizes, if needed.
  • Party/Raid – There were many changes to party/raid to convert them into a new group system. The server system of party & raid changed several patches ago, and this is to get the UI and client in-line with the new system.
  • HOME and INSTANCE groups – There are new concepts of groups (example: party/raid) called “HOME” and “INSTANCE”. The basic idea is that a player can group with a couple of friends (HOME), and then go into LFD and join two more people (INSTANCE). After the dungeon run, the player can leave LFD and will drop back to the original group (HOME). Currently the UI only displays one group at a time.
  • parentKey and relativeKey - We brought the “parentKey” concept into many frames. To support this, we also created “relativeKey” to match “relativeTo”. This is to minimize the pollution of the global namespace, and make reading sub-objects easier on the eyes.
  • “C_” function tables – There are new “C_<system>” tables used to wrap common functions. This was done to reduce global namespace pollution and to make reading and naming functions easier.
  • UIPanelButtonTemplate2 is now UIPanelButtonTemplate. The old one was removed.

Stretchy buttons are dead! Long live Tile buttons!

  • Lua Enums - There have been more & more cases of lua constants that need to match our internal client constants. The Lua Enum system auto creates these constants to make sure that the client & UI are always matching. One small problem is that the sytem automatically puts an ‘S‘ at the end of the “LE_NUM…” value which can make for some odd spelling. Sorry about that.
  • Limited lua execution time - In order to keep the game client running smoothly, the lua runtime will break if it is executing a single lua call for too long. This also applies to macros, and will mark the macro as disabled until you reload the UI. Currently this only applies in combat (example: Taint is active).
Forum Avatar
Community Manager
#4 - July 5, 2012, 10:54 p.m.
Blizzard Post
07/05/2012 02:58 PMPosted by Kuren
The Limited Lua execution time sounds like the cause of the Mac macro and addon problems. Does the Mac end up getting less execution time than Windows?


This is a known bug. We understand that Mac users would like to have their addons running, and our Mac team is aware of the bug and working on it.

To answer your specific question, all systems will be given the same execution time.

I was wondering if there was a change to the Lua bit library? Code which previously worked flawlessly on the 4.3.4 client now gives this:

1x integer overflow attempting to store 1.8446744073228e+19 <in C code>


There shouldn’t be any differences between 4.3.4 & 5.0. Are you using 64-bit .exe? Could you post sample code?

Thanks!
Forum Avatar
Community Manager
#10 - July 6, 2012, 4:04 p.m.
Blizzard Post
It gives the same overflow error regardless of which Beta client (32 or 64-bit), with a different value. For the 32-bit, it gives:

1x integer overflow attempting to store 3167817975


We quickly tried it and it happens on Windows as well. The format command is getting passed a number larger then MAX_INT.

Sorry, didn’t dig any further.