Well, the first thing you're going to have to learn is that there are just a large amount of things that you cannot do. Having never played WoW, I don't really have a grasp on how much is allowed and how expansive the API is, but essentially you write mini-applications. In EQ2, you more or less modify the already existing functionality. There are few things you can accomplish outside of what Sony has already done -- we lack the data sources and the programming language needed to easily do much.
Take a look at the UI\Default\eq2ui_gamedata.xml file or similar. That will list the entirety of global data we can access at any time. Things outside of that are hard-coded by the game to display on certain elements in certain windows. One part of the UI can reference an unrelated part, so we can share data among windows, but it's obviously rather hackish and quirky.
The only game actions that can be taken by the UI are actions that can be accomplished using an in-game slash command. Like /say, /camp or /useability. All game options are also in-game commands, so those are available as well.
The concept of the UI is a hierarchy of "pages" that contain child pages which might contain things like labels, buttons, etc. The base XML file references other XML files and that's how the hierarchy is generated. In concept, at least... during runtime some of the base complexity is merged. Like Windows Forms programming, the EQ2 UI is event driven. You handle events in the UI to accomplish things. You can technically create your own custom windows, but more often you'll modify(override) existing XML files.
Unfortunately the UI scripting is extremely basic. There is no innate flow logic, no parametrized methods, no string manipulation, no arrays and only simple comparisons. Offline storage is completely hackish. Anything resembling the above is done by taking advantage of what little we do have and using it in unique ways.
|