Voici donc la transcription litérale du texte concernant les interfaces en
XML de camelot herald pour l'addon de D.A.O.C ==> T.O.A le bien nommé et
attendu.
NOTE IMPORTANTE :
Sachez que si vous rencontrez des problèmes avec cet outil , NOUS NE FOURNISSONS
AUCUNE aide personnelle. Nous vous recommandons fortement de ne pas essayer
de faire vos propres "SKINS" tant que vous ne maîtriserez pas
cet outil.
Si problèmes, utilisez la commande /appeal (les gars du CSR analiseront chaque
demande ùais ne vous répondrons pas dans l'immédiat). Ou bien utilisez l'interface
de Feedback du site.
Comment utiliser l'interface d'utilisateur d'XML :
Définitions :
avec T.O.A, nous vous ammennons un nouveau système d'interface. Nous nous
demandions qu'elles limites lui donner et quel en serait l'engouement pris par
les joueurs. Le résultat final donne un systeme d'interface puissant et hautement
reconfigurable piloté partiellement en XML.
Pour ce texte Nous allons donc prendre
les termes suivants avec ces définitions :
1 fenêtre
TRADUCTION
EN COURS
bien que les commandes resteront
les mêmes.
For the remainder of this document we use the following
terms: · A window is a single pane in the UI, usually displaying some data or
having some control widgets that has been converted to the new system. · A
panel is a window in the old system that has not been converted (see the
Continuing Work section for more details) · A control is a… well, a widget!
It could be a button, icon, image, etc. A window can also be described as a
collection of controls. · A skin is a set of texture data that redefines the
graphical look of the interface. This includes repositioning data within a
window. · A mod is a rearrangement of the data and controls on one or more
windows to suit a particular need. Functionality added to the interface through
the system can also be a mod. · An adapter is a piece of data used by the
interface to control or display a given thing on one or more windows. All
adapters are named. · A control template is the data needed to draw a given
control common to all controls of that type. · A control definition is the
specifics for a single control as that control is used in a particular
window. · A window template is the set of control definitions and window
attributes that let the system create that window.
1.2 Data Storage
& Adapters One of the biggest differences between the new and the old
systems are how they deal with data. For the new system, all of the “live” data
for the interface is stored in a place conveniently named the “data store”. The
data store is basically a set of data that can be used to populate any number of
different controls that make up the interface. Examples of the data stored here
are: the name of the object being crafted on the timer window, the lines in the
chat buffer, the color of each message type for the Chat Window, and the NPC
dialog in the Interact Window.
Each piece of data is stored in an
adapter. An adapter is a piece of data used by the interface to control
or display a given thing on one or more windows. Every adapter has a name and
can be accessed by a user mod. Furthermore, there are no hidden adapters in the
UI, i.e., every adapter is available to users. The same adapter can be
referenced any number of times by any number of controls on any window.
Adapters come in the following types distinguished by the type of data
they contain: · Scalar adapters contain numerical data, e.g., a
character’s strength, the percentage of a timer bar, or the icon number for the
right-click Mini-info Window. · Text adapters contain text data that
is either single line or multi-line. Examples of text adapters are the title of
the Timer Window when crafting and the data in the NPC Interact Window. · A
color adapter is RGBA color data that determines the color of something,
usually text. Examples of these are the message colors in the Chat Window and
the title color for the right-click Mini-info Window. · A list box
adapter is an adapter for a list box control that may or may not contain
icons. Examples of these are the wares on the Merchant Window, the “Additional
Info” area of the character Stats Window, and the Concentration Window
data. · A special type of scalar adapter is the time of day adapter
that runs the clock.
Certain controls can bind to certain types of
adapters in the XML data. A control’s display will change to reflect changes in
the adapter(s) it is bound to. Hence, a hitpoint bar will move when the target
takes damage. For the specifics of which controls can be bound to which
adapters, see Reference Section 4.
1.3 Control Templates A
control template can be thought of as the pattern on how to make a specific
flavor of a given type of control. This usually (but not always) contains font
assignments, texture coordinates, sizes and offsets. Control templates never
contain adapter bindings. The control template is what the system uses to draw
each control that makes up a window. In general, most control types (buttons,
image areas, status bars) have multiple templates to vary the look and feel of
these controls in the interface.
1.4 Window Templates A window
template is the pattern on how to make a specific window. Windows, unlike
controls, cannot be duplicated. The data in a window template includes a set of
window attributes like width and height, and a list of the controls that it
contains in the form of control definitions.
1.5 Control
Definitions A control definition is the specific instance data that is
needed to put a control on a given window. Control definitions always live in a
window template in the XML data. Control definitions always contain position
information and can also include size data, font names, and adapter bindings.
1.6 Events The ToA UI is partially event driven. This means
that when a button is clicked it sometimes fires off an event to the appropriate
game subsystem to affect the game in some way. This can be data driven which is
handy for modding since it means that event driven functionality can be
duplicated over multiple windows. Only certain controls can generate events and
not all events in the game are data driven. For a listing of data-drivable
events, see Reference Section 4.
1.7 Panels &
Skinning Because the entire UI has not yet been converted to the new
system, to make a completely new skin has a few extra steps. The old style
panels have their own set of textures that they share that live in the data
directory in the Atlantis folder. To skin panels, create versions of the
appropriate textures and put them in the appropriate directory. Note that the
positions of controls cannot be changed on panels. For a listing of which panels
use which graphics, see the Reference Section.
1.8 Data
Format In general, any XML data file can contain any set of window or
control templates in any order. In practice, most of the control templates are
gathered into styles.xml and each window lives in its own xml file, e.g.,
chat_window.xml. Control definitions must exist as children of a window template
otherwise they cannot be properly bound to a window.
Keywords in the XML
data are not case sensitive but are spelling sensitive. Name bindings for
templates and assets are also not case sensitive. Adapter names are case
sensitive. Templates and assets can be arranged in any order in any file. All
the XML data is loaded before any windows are instantiated to avoid unnecessary
data dependencies. There is a special XML element that can be used to include
other XML files. See the Reference section for Details.
Texture data can
be in either BMP or TGA format. If transparencies are needed, a format with an
alpha channel should be used. Font data has its own specific format (this will
be explained in section 4). A note to Photoshop 7 users: there is a bug
with early versions that prevents Photoshop to save TGA files correctly which
will cause texture data to be improperly displayed in the interface.
Any
file in the interface can be modified except uimain.xml which lives in the root
ui folder (usually Mythic/Atlantis/ui/uimain.xml). This is a file that will be
patched which controls which other files are loaded into the UI. This allows us
to add new windows without requiring mod authors to make changes every time we
patch. This has some caveats however, please refer to section 3.1: Getting
Started for more details.
1.9 The Loading Process When the ToA
interface starts up it looks for the uimain.xml file in the root UI directory
(usually Mythic/Atlantis/ui/uimain.xml). This file contains a listing of which
other files to read and allows us to add new windows without breaking a lot of
mods. Each file listed in uimain.xml is loaded each containing some subset of
the interface’s template and definition data.
If ever a file can’t be
found, the system looks in the Atlantis folder for it. Note that because of
this, only those files that need to be modified need be included in the custom
directory that holds the custom skin. Barring all else, the system prints an
error to ui.log in the root Atlantis directory if it still can’t find a file.
All XML data files are loaded before any windows are brought
up.
1.10 Continuing Work At the time of the creation of this
document, not all of the UI has been converted to the new system due to time
constraints. Work is continuing to convert the interface to the new system but
it is a time consuming project.
2.0 How-To This section
contains some hands-on information with more of the specifics of how to do
certain things. A general overview of the system can be found in section 2 and a
reference for most of the system can be found in section 4.
2.1
Getting Started Before creating a custom skin, do the following: 1)
Create a directory named “custom” in the ToA UI directory (usually
Mythic/Atlantis/ui) 2) Create a directory named “oldstyle” in the new custom
directory 3) Select the “Custom” skin in the options menu
All changes
made to the interface need to reside in the custom folder otherwise those
changes will be overwritten the next time you log into the game (since it will
patch them). Under no circumstances should the file
Mythic/atlantis/ui/uimain.xml be modified – as we said before, this file can and
will be changed by our patch process.
If no other changes are made and
the game is started, the interface should look exactly like the Atlantis skin.
This is because if the system can’t find a file, it defaults to look for it in
the Atlantis folder. The “oldstyle” directory is for the textures used for old
style panels. Again, if these files do not exist, the system will default to the
Atlantis skin versions of these that live in Mythic/data/Atlantis.
It is
highly recommended that one of the Atlantis or realm-specific skins be used as
the basis for custom skins especially given that the system defaults to the
Atlantis directory if it can’t find something. The templates for the
Transparent, Isles, and Classic skins are very different. Furthermore, to avoid
a lot of extra mod work when we convert or add a new window, it is recommended
that template names not be changed. We will use the old set of templates.
Other helpful hints: - get a good XML editor; it will make the
modding process much easier - keep backups of your files to avoid losing
changes - check the patch notes to see if any panels have been converted to
windows or any windows have been added
2.2 Adding New
Templates There isn’t anything tricky about adding a new template. New
templates exist at the top level and can exist in any file. There are no
ordering dependencies between templates since all XML data is loaded before any
window is instantiated. Note that if a new template is added that has the same
name as another template that has already been added, the system will discard
the first one and keep the second one.
For ease of maintenance and
development, the following things are recommended: - put custom templates in
their own file to avoid confusion - keep the base templates around to avoid
lots of rework when new windows are added
2.3 Adding Controls to
Windows Adding new controls to windows is as simple as adding a new
control definition to an existing window template. Make sure if you assign a
control ID to the new control that it isn’t one of the ones that the window
binds to in code. A listing of these is available in the reference section.
Also, note that while it is possible to have controls that are outside the
bounds of the window, these controls cannot be interacted with since interaction
events only occur inside the bounds of a window.
One potential pitfall to
adding controls to windows is that the order that they are listed in the window
template is the order in which they are drawn. This is one of the only places in
the new interface that ordering is important. Hence, if your background image is
last in the window template, no other controls will be shown since the
background will overdraw.
Common errors with adding new controls
are: - ordering issues can cause controls to not be seen - ordering issues
can cause controls to not receive events - most errors are naming
erors
2.4 Changing Textures Adding new textures to the
interface is a four step process (assuming that the assets already
exists): 1. Copy the textures to the custom directory for controls and
windows 2. Copy the old style textures to the custom/oldstyle directory for
panels 3. Modify the file assets.xml to load the textures in the custom
directory (the old style stuff doesn’t need to be included here) 4. Modify
the appropriate control templates to use the new textures
Texture
coordinates start at (0, 0) from the top left corner. Negative texture
coordinates and texture coordinates that are off the edge of the texture page
are undefined. Texture coordinates are integers and always map 1:1 pixel for
pixel in the interface (i.e., stretching textures is not
supported).
2.5 Changing Icons Icons in the game can be
changed. An icon sheet is a 10x10 page containing 100 icons. Icon sheets
should be bitmaps and have two resolutions: one that has 16x16 pixel icons and
one that has 32x32 pixel icons. The names of the icon sheets are hard coded and
can be found in the reference section.
Until all the old style panels
are converted to windows, modified icons need to be copied to both the custom
directory and the old style directory.
2.6 Adding a New
Font Fonts have their own very specific graphical requirements. Fonts
must have an alpha channel. In the alpha channel, each character needs to be
underlined precisely with a one pixel tall row of pure white. In the first pixel
column on the left hand side, one pixel must denote where the rows of underlines
are. It is important that all the rows on a given line be lined up exactly. It
also helps if the distance between the single pixels is the same
horizontally.
What all these special lines and pixels are doing is
denoting where each character is in the file. The single pixels in the left hand
column are denoting the line heights. If the line heights are different between
the rows, the tallest one is used as the height of the font. The rows are
denoting each character in the font. If there’s a break in the line it will try
to count the character as two. If there’s a line missing, that character will be
missing in the font. Each character must be present in the precise order that
the other fonts are in or the font will display garbled text.
Data can be
put in the RGB channels but color data will distort when changing font colors in
game. Once the graphic files are prepared, a new Font must be added to the
assets that the game loads. The file assets.xml has examples of this.
Note that the names “arial9”, “arial11”, and “arial14” are used for the
resize font selectable in the front end UI. If they are not present, the game
may not function properly.
3.0 Reference 3.1 Top Level
Tokens These are the top level tokens understood by the XML parser and
brief descriptions about what they are/mean. This list is subject to change.
· Include: specifies another XML data file to parse · Font: specifies a
font · Texture: specifies a texture asset · Canvas: specifies a canvas
asset · ButtonTemplate: specifies a control template ·
VerticalResizeImageTemplate: specifies a control template ·
HorizontalResizeImageTemplate: specifies a control template ·
FullResizeImageTemplate: specifies a control template ·
VerticalScrollbarTemplate: specifies a control template · MenuTemplate:
specifies a control template · ComboBoxTemplate: specifies a control
template · ListBoxTemplate: specifies a control template ·
TextAreaTemplate: specifies a control template · StatusBarTemplate: specifies
a control template · ImageAreaTemplate: specifies a control template ·
StatusIconTemplate: specifies a control template · IconTemplate: specifies a
control template · ChatControlTemplate: specifies a control template ·
CheckBoxTemplate: specifies a control template · VerticalStatusBarTemplate:
specifies a control template · CompassControlTemplate: specifies a control
template · WindowTemplate: specifies a window template
3.2 Adapter
Reference The following adapters and types are available. This list is
subject to change. Current 10-23-2003 · timer_text text adapter ·
interact_text text adapter · interact_title text adapter · quest_text text
adapter · info_text text adapter · info_title text adapter ·
mini_friends_text text adapter · group_name0 - group_name7 text adapter ·
group_class0 - group_class7 text adapter · group_power0 - group_power7 scalar
adapter · group_status0 - group_status7 scalar adapter · group_health0 -
group_health7 scalar adapter · group_color0 - group_color7 color adapter ·
group_level0 - group_level7 scalar adapter · group_0icon0 - group_7icon0
scalar adapter · group_0icon1 - group_7icon1 scalar adapter · group_0icon2
- group_7icon2 scalar adapter · group_0icon3 - group_7icon3 scalar
adapter · group_0icon4 - group_7icon4 scalar adapter · group_0icon5 -
group_7icon5 scalar adapter · group_number scalar adapter · group_mode
scalar adapter · mini_craft_title text adapter · mini_info_string0 - 7
text adapter · mini_info_title_color scalar adapter · mini_info_icon
scalar adapter · concentration scalar adapter · conc_list icon list
adapter · chat_tab0 - chat_tab4 text adapter · chat_entry text
adapter · chat0_color - chat63_color color adapter · system0_color -
system63_color color adapter · chat_config_title text adapter ·
chat_config_channel0 - 15 text adapter · chat_config_current_output text
adapter · chat_config_output_label text adapter · train_skills two column
list adapter · train_realm two column list adapter · train_skill_points
text adapter · train_realm_skill_points text adapter · compass_heading
scalar adapter · merchant_page0 - 4 icon list adapter · merchant_title
text adapter · merchant_max_pages scalar adapter · merchant_page_display
text adapter · merchant_mithril text adapter · merchant_platinum text
adapter · merchant_gold text adapter · merchant_silver text adapter ·
merchant_copper text adapter · merchant_quantity text adapter ·
summary_title text adapter · summary_target text adapter ·
summary_target_color color adapter · summary_player_hits scalar adapter ·
summary_player_end scalar adapter · summary_player_power scalar adapter ·
summary_exp_fine scalar adapter · summary_exp_coarse scalar adapter ·
summary_target_hits scalar adapter · summary_hit_label text adapter ·
stats_name text adapter · stats_level scalar adapter · stats_realm_points
scalar adapter · stats_race text adapter · stats_base_class text
adapter · stats_profession text adapter · stats_title text adapter ·
stats_weapon_damage scalar adapter · stats_weapon_skill scalar adapter ·
stats_hitpoints scalar adapter · stats_armor_factor scalar adapter ·
stats_strength scalar adapter · stats_strength_color color adapter ·
stats_constitution scalar adapter · stats_constitution_color color
adapter · stats_dexterity scalar adapter · stats_dexterity_color color
adapter · stats_quickness scalar adapter · stats_quickness_color color
adapter · stats_empathy scalar adapter · stats_empathy_color color
adapter · stats_piety scalar adapter · stats_piety_color color
adapter · stats_intelligence scalar adapter · stats_intelligence_color
color adapter · stats_charisma scalar adapter · stats_charisma_color color
adapter · stats_additional_info two column list adapter · craft_title text
adapter · guild_name text adapter · guild_rank text adapter ·
realm_title text adapter · realm_rank text adapter · realm_rank scalar
adapter · realm_level scalar adapter · realm_skillpoints scalar
adapter · bounty_points scalar adapter · house_lot scalar adapter ·
max_encumberance scalar adapter · cur_encumberance scalar adapter ·
realm_exp_fine scalar adapter · realm_exp_coarse scalar adapter ·
siege_title text adapter · siege_ammo icon list adapter ·
performance_meter scalar adapter · lag_meter scalar adapter ·
framerate_meter scalar adapter · master_exp scalar adapter · master_rp
scalar adapter · master_rank scalar adapter · master_list text
adapter · master_title text adapter · mini_pet_title text adapter ·
mini_pet_effect0 - 5 scalar adapter · mini_pet_life scalar adapter ·
mini_pet_combat0 scalar adapter · mini_pet_combat1 scalar adapter ·
mini_pet_combat2 scalar adapter · mini_pet_movement0 scalar adapter ·
mini_pet_movement1 scalar adapter · mini_pet_movement2 scalar adapter ·
mini_pet_movement3 scalar adapter
3.3 Control Templates This is
a listing of every option in every control template. Also included is a brief
description of what the control is for. This list is subject to change. Current
10-23-2003
Many templates contain one or more of the following compound
types. These are also used for definitions. Bool Boolean values can be
either “true” or “false”. All other values are parsed as “false”.
Color
R: 0-255 value for the red component of the color G: 0-255 value for the
green component of the color B: 0-255 value for the blue component of the
color A: 0-255 value for the alpha component of the
color
TextureCoordinate X: x-value of the upper left hand corner of
the texture coordinate Y: y-value of the upper left hand corner of the
texture coordinate
Size X: x-value of the size (must be
positive) Y: y-value of the size (must be positive)
Point X:
x-value of the point (can be negative) Y: y-value of the point (can be
negative)
Alignment Alignment flags determine how a component deals
with resizing and how to interpret its position. Multiple alignment flags can be
specified but some are conflicting. The behavior of conflicting alignment flags
is undefined. The values for alignment flags are either “true” or “false”.
TopLeft: default alignment, sticks to top left CenterHorizontally:
attempt to center horizontally CenterVertically: attempt to center
vertically OffsetBottom: y-coordinate is offset from the bottom of the
window OffsetRight: x-coordinate is offset from the right of the
window GrowWidth: control will resize horizontally with the
window GrowHeight: control will resize vertically with the window
The
following are the control templates. The type of the element is marked with
parenthesis. Note that when a “name” is supplied as the type, it denotes that it
corresponds to an asset or a template. Names must be 31 characters or less. Note
that where multiple texture coordinates are specified for a control, they must
come out of the same texture page.
ButtonTemplate This is the template
for a button control. Buttons have five states: normal, highlit, pressed,
pressed & highlit, and disabled. Name: (name) the name of this
template Size: (size) the size of the button Font Name: (name) the name
of the font ColorNormal: (color) the color of the font in the normal
state ColorPressed: (color) the color of the font in the pressed
state ColorHighlit: (color) the color of the font in the highlit state
(normal &pressed) ColorDisabled: (color) the color of the font in the
disabled state Texture TextureName: (name) the name of the texture
asset Normal: (texture coord) the coordinate for the normal state
texture Pressed: (texture coord) the coordinate for the pressed state
texture NormalHighlit: (texture coord) the coordinate for the normal highlit
state texture PressedHighlit: (texture coord) the coordinate for the pressed
highlit state texture Disabled: (texture coord) the coordinate for the
disabled state texture
VerticalResizeImageTemplate This is the
template for an image that can resize vertically. These are used for scrollbars
and vertical status bars. The image is constructed by adding the top piece and
tiling/repeating/truncating the repeating piece until the bottom piece can be
added. The top and bottom pieces are always present and never truncated or
repeated. Name: (name) the name of this template Width: (number) width of
the image in pixels TopHeight: (number) height of the top piece in
pixels RepeatHeight: (number) height of the repeat piece in
pixels BottomHeight: (number) height of the bottom piece in
pixels Texture TextureName: (name) the name of the texture asset Top:
(texture coord) the coordinate of the top piece Repeat: (texture coord) the
coordinate of the repeating piece Bottom: (texture coord) the coordinate of
the bottom piece
HorizontalResizeImageTemplate This is the template
for an image that can resize horizontally. These are used primarily for status
bars. The image is constructed by adding the left piece and
tiling/repeating/truncating the repeating piece until the right piece can be
added. The left and right pieces are always present and never truncated or
repeated. Name: (name) the name of this template Height: (number) height
of the image in pixels LeftWidth: (number) width of the left piece in
pixels RepeatWidth: (number) width of the repeating piece in
pixels RightWidth: (number) width of the right piece in
pixels Texture TextureName: (name) the name of the texture asset Left:
(texture coord) the coordinate of the left piece Repeat: (texture coord) the
coordinate of the repeating piece Right: (texture coord) the coordinate of
the right piece
FullResizeImageTemplate This is the template for an
image that can resize in both directions. These are used for backgrounds and
insets. The image is constructed from the upper left corner and each of the
middle/center pieces are tiled until the right hand side, bottom, and bottom
right corner can be placed. The upper left and bottom right pieces are never
tiled or truncated. The top and bottom middle pieces are tiled horizontally and
the left and right side middle pieces are tiled vertically. Name: (name) the
name of this template TopHeight: (number) the height of the top row of images
in pixels MiddleHeight: (number) the height of the repeating pieces in
pixels BottomHeight: (number) the height of the bottom row of images in
pixels LeftWidth: (number) the width of the leftmost column of images in
pixels MiddleWidth: (number) the width of the middle pieces in
pixels RightWidth: (number) the width of the rightmost column of images in
pixels Texture TextureName: (name) the name of the texture
asset TopLeft: (texture coord) the upper left corner coordinate TopMiddle:
(texture coord) TopRight: (texture coord) MiddleLeft: (texture
coord) MiddleMiddle: (texture coord) MiddleRight: (texture
coord) BottomLeft: (texture coord) BottomMiddle: (texture
coord) BottomRight: (texture coord)
VerticalScrollbarTemplate This
is the template for vertical scrollbars. Vertical scrollbars are often
subcomponents of other controls like list boxes and text areas. The active zone
is the area outside the scrollbar that it continues to scroll when dragging.
Outside this zone, the scrollbar will not drag. Name: (name) the name of this
template ThumbVResizeTemplate: (name) the name of the slider template
(vertical resize image) UpButtonTemplate: (name) the name of the up button
template DownButtonTemplate: (name) the name of the down button
template GutterVResizeTemplate: (name) the name of the gutter template
(vertical resize image) Width: (number) the width of the scrollbar in
pixels UpButtonOffset: (size) offset in pixels from top left of the up
button DownButtonOffset: (size) offset in pixels from the bottom left of the
down button ThumbOffset: (size) offset in pixels from the top left of the
thumb ActiveZoneOffset: (size) size of the active zone outside the area of
the scrollbar
ListBoxTemplate This is the template for a list box. A
list box is a multi-column multi-row control that shows a list of data. Examples
of this are the additional info area of the character stats window and the icon
list for a merchant’s wares. Name: (name) the name of this
template LinePadding: (number) blank rows of pixels between
rows CellPadding: (number) blank columns of pixels between
columns LabelLength: (number) number of characters per
label ScrollbarTemplate: (name) the name of the scrollbar
template ScrollbarTopOffset: (number) offset from the top of the list box to
the scrollbar ScrollbarBottomOffset: (number) offset from the bottom of the
list box to the scrollbar ScrollbarRightOffset: (number) offset from the
right of the list box to the scrollbar BackgroundTemplate: (name) background
image (full resize image) TextFont Name: (name) name of the
font ColorNormal: (color) color of the font in normal mode ColorHighlit:
(color) color of the font in highlit mode ColorGreyed: (color) color of the
font in greyed mode TextLeftOffset: (number) offset of the first column from
the left TextTopOffset: (number) offset of the first row from the
top TextBottomOffset:(number) offset of the last row from the
bottom LineOffset: (number) offset down in the row of the
text
TextAreaTemplate A text area is a multi-line text display. Text
areas support the bracketed text in the Help Window and the NPC Interact Window.
The active text is denoted with the active color specified in the
template. Name: (name) the name of this template ScrollbarTemplate: (name)
the name of the scrollbar template LinePadding: (number) blank rows of pixels
between rows BackgroundTemplate: (name) the name of the background image
(full resize image) Font Name: (name) name of the font
asset ColorNormal: (color) normal color of the text ColorActive: (color)
color of the active bracketed text TextOffset: (size) offset both top and
bottom of the text in the control ScrollbarOffset: (point) offset from the
top left corner of the scrollbar ScrollbarSizeOffset: (point) added to the
size of the scrollbar when resizing
StatusBarTemplate A status bar is
a horizontal bar indicator used for showing hit points, power, and other scalar
data. Name: (name) the name of this template BackgroundHResizeTemplate:
(name) the name of the background (empty) template ForegroundHResizeTemplate:
(name) the name of the foreground (full) template Height: (number) the height
of the status bar in pixels ForegroundOffset: (size) offset from the top left
of the foreground image
ImageAreaTemplate An image area is basically a
decal drawn from a texture page. Name: (name) the name of this
template TextureName: (name) the name of the texture asset Size: (size)
the size of the image in pixels TopLeft: (texture coord) the location of the
decal in the texture
StatusIconTemplate A status icon is a
statically-sized control that changes its appearance based on a scalar value.
Examples of this are the power indicator on the Mini-Group Window and the
Performance Meter. Status icons must have their frames next to each other in the
texture and must go from lowest to highest. They can be arranged horizontally or
vertically in the texture. Name: (name) the name of this
template TextureName: (name) the name of the texture Width: (number) width
of the status icon in pixels Height: (number) height of the status icon in
pixels MaxLevels: (number) number of frames in the status icon Horizontal:
(bool) true if the frames are arranged horizontally in the
texture TextureStart: (texture coord) location of the first frame in the
texture
IconTemplate An icon is a 16x16 or 32x32 image that is used to
represent a spell, style, ability, or effect. Other sizes are not
supported. Name: (name) the name of this template Size: (size) the size of
this icon FontName: (name) the name of the font FontColor: (color) the
color of the font IconSize: (number) 0 if 16x16, 32x32
otherwise
ChatControlTemplate The chat control makes the Chat Window
work. Name: (name) the name of this template FontName: (name) the name of
the font BackgroundTemplate: (name) the name of the background template (full
resize image) ScrollbarTemplate: (name) the name of the scrollbar
template
CheckBoxTemplate A check box is an on or off button. Name:
(name) the name of this template Size: (size) the size of the button area of
the control in pixels Font Name: (name) the name of the
font ColorNormal: (color) normal color of the text ColorPressed: (color)
pressed color of the text ColorHighlit: (color) highlit color of the
text ColorDisabled: (color) disabled color of the text TextOffset: (size)
offset of the text to the right of the button area TextAlignment: (alignment)
alignment of the text ChangeFontColor: (bool) if true, the font color changes
with the state Texture TexturName: (name) the name of the texture
asset Normal: (texture coord) location of the normal texture data Pressed:
(texture coord) location of the pressed texture data NormalHighlit: (texture
coord) location of the normal highlit texture data PressedHighlit: (texture
coord) location of the pressed highlit texture data Disabled: (texture coord)
location of the disabled texture data
VerticalStatusBarTemplate A
vertical status bar is a vertical version of the horizontal status bar used to
show scalar data. Name: (name) the name of this template BackgroundImage:
(name) the name of the background (empty) template ForegroundImage: (name) the
name of the foreground (full) template Width: (number) the width of the
control in pixels ForegroundOffset: (size) offset from the top left of the
foreground image
CompassControlTemplate This control works the
compass. Note that the texture needs to be its own separate file with no dead
space. Name: (name) the name of this template Texture: (name) the name of
the texture
3.4 Control Definitions This is a listing of every
option in every control definition. This list is subject to change. Current
10-23-2003
Every control definition shares the following
attributes: controlId: (id) an identifier for the control position:
(point) position relative to the top left corner of the parent
window alignment: (alignment) alignment of the control relative to the
window
ButtonDef templateName: (name) name of the template label:
(string) label on the button (if any) onClickEvent: (event) event that fires
when the button is not disabled and
clicked
InvisibleButtonDef Invisible buttons are buttons that have no
visual components. These are used in places where only an active area is needed
or where certain controls are not active and cannot generate an event to the
window. onClickEvent: (event) event that fires when the button is not
disabled and clicked width: (number) width of the control in
pixels height: (number) height of the control in
pixels
ComboBoxDef templateName: (name) name of the
template onChangeEvent: (event) name of the event generated when the
selection changes adapterName: (name) name of the adapter that the combo box
reads from
ListBoxDef templateName: (name) name of the
template adapterName: (name) name of the list box adapter this control
uses sorting: (bool) not used columns: (number) number of columns
supported by the list box width: (number) width of the control in
pixels height: (number) height of the control in
pixels
StaticFileImageDef A static file image is an image that does
not exist in a normal texture sheet. Static file images use an image file of
unrestricted dimensions and displays the entire image. These controls are
deprecated and not used by the ToA UI but may be useful in
modding. canvasName: (name) name of the canvas asset to
use
StatusBarDef The scalar adapter used by a status bar must have a
range from 0 to 100. templateName: (name) name of the
template adapterName: (name) name of the scalar adapter used by this
control width: (number) width of the control in
pixels
LabelDef Labels are single line text labels displaying string
data. Note that labels cannot display scalar data. Use a scalar label for
that. fontName: (name) name of the font asset used by this label adapter:
(name) name of the text adapter used by this label colorAdapter: (name) name
of the color adapter used by this label width: (number) width of the label in
pixels height: (number) height of the label in pixels maxCharacters:
(number) max number of characters the label can contain color: (color) color
used by this label if no color adapter is specified data: (string) text
displayed in this label unless a text adapter is specified endAligned: (bool)
true if the text should be right side
aligned
FullResizeImageDef templateName: (name) template used by this
control width: (number) width of the control in pixels height: (number)
height of the control in pixels
TextAreaDef See the text area template
description for more details on hotspots and active areas. templateName:
(name) template used by this control adapterName: (name) text adapter used by
this control hasHotspots: (bool) true if the active areas on the text area
should be lit maxCharacters: (number) the max number of characters that the
text area can hold width: (number) width of the control in pixels height:
(number) height of the control in pixels
ImageAreaDef templateName:
(name) template used by this control
StatusIconDef The scalar adapter
used by a status icon must have a range from 0 to 100. templateName: (name)
template used by this control adapterName: (name) scalar adapter used by this
control
IconDef iconId: (number) id of the icon to display if no
scalar adapter is specified data: (string) text to display templateName:
(name) template used by this control adapterName: (name) scalar adapter for
the id of the icon to display
ChatControlDef Chat controls use one of
two special chat adapters named “chat” and “system”. templateName: (name)
template used by this control linePadding: (number) blank pixel rows between
lines bufferName: (name) name of the chat adapter textOffset: (point)
offset from the left column for where the text starts width: (number) width
of the control in pixels height: (number) height of the control in
pixels
HorizontalResizeImageDef templateName: (name) template used by
this control width: (number) width of the control in
pixels
CheckBoxDef templateName: (name) template used by this
control adapterName: (name) scalar adapter used for the value (0 or 1 for off
or on) textAdapterName: (name) text adapter used for the label data:
(name) default data used for the label if no text adapter is
specified labelWidth: (name) max characters of storage for the
label
VerticalStatusBarDef Scalar adapters used for vertical status
bar must have a range from 0 to 100. templateName: (name) template used by
this control adapterName: (name) name of the scalar adapter used by this
control height: (number) height of the status bar in
pixels
CompassControlDef templateName: (name) template used by this
control adapterName: (name) scalar adapter used for heading height:
(number) height of the control in pixels width: (number) width of the control
in pixels
ScalarLabelDef Scalar labels are single line text labels
displaying a single number. Single line text data should be showing through a
label. fontName: (name) name of the font asset used for this
label adapter: (name) scalar adapter this control displays colorAdapter:
(name) color adapter for the text width: (number) width of this control in
pixels height: (number) height of this control in pixels maxCharacters:
(number) max character storage for this control color: (color) color of the
string if no color adapter is specified data: (string) default display for
the label endAligned: (bool) true if the text should be right side
aligned
3.5 Window Templates The following is a list of the
options available in window templates and their purpose in game. This list is
subject to change. Current 10-23-2003
Windows are allowed to have any
number and any combination of control definitions. Controls are drawn in order
from first to last with the last drawn controls displaying on top. Window
template tokens are not case sensitive.
Name This is the name of the
window. Names are typically all lowercase with words separated by underscores.
These are what the interface uses to find the template data for a given window.
These are not case sensitive.
CloseButton (bool) This Boolean
specifies whether the close button should be present or not. If this element is
not present, the button is not present. The close button always goes into the
upper right hand corner of the window.
MoveButton (bool) This Boolean
specifies whether the move button should be present or not. If this element is
not present, the button is not present. The move button always goes into the
upper left hand corner of the window.
TopRightResizeButton
(bool) This Boolean specifies whether the upper right resize button should be
present or not. If this element is not present, the button is not present. The
upper right resize button always goes into the upper right hand corner of the
window. The close button and top right resize button cannot coexist
peacefully.
BottomRightResizeButton (bool) This Boolean specifies
whether the bottom right resize button should be present or not. If this element
is not present, the button is not present. The bottom right resize button always
goes into the lower right hand corner of the window. This option supersedes
resizeable two way width and height.
BottomLeftResizeButton
(bool) This Boolean specifies whether the bottom left resize button should be
present or not. If this element is not present, the button is not present. The
bottom left resize button always goes into the bottom left hand corner of the
window. This option supersedes resizeable two way width and
height.
ResizeButtonOffsetX (number) This number specifies the X
offset in pixels of the bottom left and bottom right resize buttons (but not the
upper right resize button). For the bottom left resize button, the offset is
from the left. For the bottom right resize button, the offset is from the
right.
ResizeButtonOffsetY (number) This number specifies the Y offset
in pixels of the bottom left and bottom right resize buttons (but not the upper
right resize button). For both buttons it is the offset from the
bottom.
Width (number) This is the width of the window in
pixels.
Height (number) This is the height of the window in
pixels.
TitleWidth (number) This is the width of the title area in
pixels. The title area works the same way as the move button. If title area
dragging is not desired, either the title height or title width can be set to 0
to disable the feature.
TitleHeight (number) This is the height of the
title area in pixels. The title area works the same way as the move button. If
title area dragging is not desired, either the title height or title width can
be set to 0 to disable the feature.
ResizeableWidth (number) This is
the width in pixels to make a window resizable in the X direction (i.e. left and
right). Note that for the background to change width, it must have the alignment
flag GrowWidth specified.
ResizeableHeight (number) This is the height
in pixels to make a window resizable in the Y direction (i.e. up and down). Note
that for the background to change height, it must have the alignment flag
GrowHeight specified.
ResizeableTwoWayWidth (number) This number is
the width in pixels of the corner areas that resize in two dimensions. This
functionality has been replaced by the left and right bottom resize buttons.
ResizeableTwoWayHeight (number) This number is the height in pixels
of the corner areas that resize in two dimensions. This functionality ha been
replaced by the left and right bottom resize buttons.
WindowId
(id) This is the window id. Many windows have constants for them but many do
not. At the time of this writing, it is used only for debugging.
MinWidth
(number) This is the minimum width of a window in pixels. Strange visual
errors can be had if the minimum width of a window is set too small. The minimum
width of a window is computed as the minimum width of the most interior resize
element plus the difference between the width of the window and the width of the
element. A resize element in this case would be those controls that can resize
horizontally (e.g. status bars and full resize images). The minimum width of a
control that can be resized is the left width plus the right
width.
MinHeight (number) This is the minimum height of a window in
pixels. Strange visual errors can be had if the minimum height of a window is
set too small. The minimum height of a window is computed as the minimum height
of the most interior resize element plus the difference between the height of
the window and the height of the element. A resize element in this case would be
those controls that can resize vertically (e.g. vertical scroll bars and full
resize images). The minimum height of a control that can be resized is the top
height plus the bottom height.
3.6 Event Reference The
following is a list of the events available in the ToA interface and their
purpose in game. Many of these events require additional data that may not be
settable by the UI. Where possible this is indicated in the comments. This list
is subject to change. Current 10-23-2003
Command Window
Events ToggleAttackMode Toggles player attack mode Realm Shows the /realm
display Sprint Toggles sprint mode ToggleSitting Toggles sitting
mode Task Toggles task display Follow Toggles auto-follow mode Stick
Toggles auto-stick mode Afk Toggles AFK mode Face Toggles auto-face
mode Anon Toggles anon mode Pray Issues the /pray command Help Shows
the Help Window Release Issues the /release command Relic Shows the /relic
display Bonuses Shows the /bonus display (resists) ShowKeyboardConfig
Shows the keyboard configuration display Journal Shows the Quest Journal
Window Friends Shows the Mini-Friends Window Bind Issues the /bind
command ToggleCompass Toggles compass mode between off, small, and
large Quit Issues the /quit command
Interact Window Events Interact
Issues an interact event given the clickedhotspot; requires extra
data
Group and Mini-Group Window Events SelectGroupMember0 Selects the
group leader (first group member) SelectGroupMember1 Selects the second group
member SelectGroupMember2 Selects the third group
member SelectGroupMember3 Selects the fourth group
member SelectGroupMember4 Selects the fifth group
member SelectGroupMember5 Selects the sixth group
member SelectGroupMember6 Selects the seventh group
member SelectGroupMember7 Selects the last group member
(eighth) GroupQuerySolo Sends a “looking for group” query as a solo player to
the server GroupQueryGroup Sends a “looking for group” query as a group
leader to the server GroupSoloSeeking Sets a solo player’s “looking for
group” flag on the server GroupSoloNotSeeking Removes a solo player’s
“looking for group” flag on the server GroupSeekingNone Sets a group’s
“seeking members” flag to none GroupSeekingAll Sets a group’s “seeking
members” flag to all GroupSeekingFighter Sets a group’s “seeking members”
flag to fighter GroupSeekingMage Sets a group’s “seeking members” flag to
mage GroupSeekingHealer Sets a group’s “seeking members” flag to
healer GroupSeekingRogue Sets a group’s “seeking members” flag to
rogue GroupInvite Issues the /invite command GroupDisband Issues the
/disband command
Mini-Craft Window Events Repair Issues the /repair
command Craft Issues the /craft command Salvage Issues the /salvage
command
Concentration Window Events RemoveConc Removes the specified
concentration buff (requires the knowledge of which buff is
selected) ConcQuickDesc Displays the Mini-Info Window for a concentration
buff (requires the knowledge of which buff is selected)
Train Window
Events Train Trains the selected skill or realm ability (requires the
knowledge of which skill or realm ability is selected) TrainInfo Gets info on
the selected skill or realm ability (requires the knowledge of which skill or
realm ability is selected)
Merchant Window Events MerchantBuy Buys the
selected item (requires the knowledge of which item is selected) MerchantSell
Sells the selected object from a player’s inventory MerchantAppraise
Appraises the selected object from a player’s inventory MerchantQuickDesc
Displays the Mini-Info Window for the currently selected merchant item (requires
knowledge of which item is selected)
Chat Window
Events ChatChannelsChanged Issues a command to the server to filter chat
channels
Siege Window Events SiegeArm Issues a siege arm
command SiegeLoad Issues a siege load command (uses currently selected ammo
in the Siege Window or the first one if none are selected) SiegeAim Issues a
siege aim command SiegeFire Issues a siege fire command
Pet Window
Events PetSetMoveState Sets pet move state to the current state (requires
knowledge of the current value) PetSetCombatState Sets pet combat state to
the current state (requires knowledge of the current state) PetAttack Issues
the attack command to the pet PetRelease Issues the release pet
command PetTarget Issues the target pet command
Random
Events ShowWindow HideWindow ToggleWindow
3.7 Old Style
Panel Texture Assets The following is the listing of old style textures
and the panel(s) that they are used on. The data used for the ToA versions of
these panels is located in Atlantis/data/ and
Atlantis/phousing/data/. List is subject to change. Current
10-23-2003
vault.bmp Bank dialog_sm.bmp Dialog emblempick.bmp
Emblem picker npctalk.bmp Group picker (looking for group window), Help,
Housing big dialog leftbot.bmp Alpha picker, Value picker (coin, alpha),
Housing interior rotation options.bmp Options, Housing internal/external
options, market query, market results, friend permissions, housing friend
list hbar_horz.bmp Quickbar hbar_min.bmp Quickbar hbar_vert.bmp
Quickbar pperdoll.bmp Inventory hldbrite.bmp Inventory sacks.bmp
Inventory magicsheet.bmp Spells combstylesheet.bmp
Styles skillsheet.bmp Abilities trade.bmp Trade interact.bmp
Tradeskills edit_box.bmp Housing market query garden.bmp Housing garden
placement consignment.bmp Housing player merchant minipet.bmp Housing
money selector scrlbtns.bmp All old style scroll buttons listicon1.bmp All
old style checkboxes (located in Atlantis/data) buttons.bmp Old style
buttons buttons2.bmp Old style buttons buttons3.bmp Old style
buttons
Final Note If you have any problems with creating
interface skins, please be aware that as with all our XML features, we do not
provide personal assistance. We highly recommend that you not even attempt to
make your own skin unless you already have the knowledge necessary to use the
tools we provided.
If you encounter any bugs, please report them using
the /appeal system (our CSRs cannot help with custom UI questions or problems,
and will not respond to any appeals on the topic, so please file a bug appeal
only). Someone will look at the situation. You can also send a feedback form
(user interface category).
|