XML:WMDD

From OniGalore
Revision as of 15:56, 9 October 2023 by Iritscen (talk | contribs) (→‎General information: wording)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
WMDD : WM Dialog Data
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

WMCL << Other file types >> WMM

switch to OBD page

General information

Changed Load Menu.png
  • The XML on this page is compatible with OniSplit v0.9.61.0.
  • The "WM" in "WM Dialog Data" stands for "Window Manager", the name of the UI subsystem.
  • WMDD files are global (level0_Final.dat).
  • A WMDD file contains either a screen with controls (e.g. WMDDdialog_mainmenu) or a dialog with buttons (e.g. WMDDdialog_ChangeRestart).
  • Open question: Does WMDDdialog_text_console define the size of "text consoles" as 460x410?
  • Oni's out-of-game windows overlay each other. The parent window becomes visible if you remove the background (see image on right).

XML structure

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <WMDD id="0">
       <Caption>Options</Caption>
       <Id>152</Id>
       <State>Visible</State>
       <Style>Center</Style>
       <X>0</X>
       <Y>0</Y>
       <Width>640</Width>
       <Height>480</Height>
       <Controls>
           [...]
       </Controls>
   </Instance>
</Oni>

[...] means at least one WMDDControl block.

Example

<WMDDControl>
   <Text>Options</Text>
   <Class>Label</Class>
   <Id>0</Id>
   <State>1</State>
   <Style>1114112</Style>
   <X>5</X>
   <Y>10</Y>
   <Width>70</Width>
   <Height>20</Height>
   <Font>
       <Family>TSFFTahoma</Family>
       <Style>Bold</Style>
       <Color>255 127 0</Color>
       <Size>10</Size>
   </Font>
</WMDDControl>
  • If you have a TXMB in your WMDD, don't put additional <WMDDControl> blocks under the block with the TXMB or your new blocks will be hidden.
  • The block is always the same if <Text> contains "outline":
<Text>outline</Text>
<Class>Title</Class>
<Id>0</Id>
<State>5</State>
<Style>65536</Style>

Header

XML tag Type Flags and descriptions
<Caption> char[256] page name/title
<Id> int16 page ID, looked up by the game application
<State> flag
Visible
Disabled
State04
<Style> flag/int32
ThinBorder (01 00 00 00)
ThickBorder (02 00 00 00)
TitleBar (04 00 00 00)
Title (08 00 00 00)
CloseButton (10 00 00 00)
RestoreButton (20 00 00 00)
MinimizeButton (40 00 00 00)
Center (00 00 01 00)

65536 (00 00 01 00)
131072 (00 00 02 00)
262144 (00 00 04 00)
524288 (00 00 08 00)
1048576 (00 00 10 00)
2097152 (00 00 20 00)
4194304 (00 00 40 00)
8388608 (00 00 80 00)
<X> int16 align (always 0 in the header)
<Y> int16 align (always 0 in the header)
<Width> int16 X dimension (always 640 in the header?)
<Height> int16 Y dimension (always 480 in the header?)

<WMDDControl>

XML tag Type Flags and descriptions
<Text> char[256]
  • Can contain text
  • "outline" was always used by Bungie West for <Class>Title</Class> (it's invisible)
  • "WMM_filename"
<Class> flag
Desktop (01 00)
Title (03 00) ("groupbox" or "box" that groups elements together visually)
Button (04 00) (button text like "OK" or "Close")
Checkbox (05 00)
Dialog (06 00)
Textbox (07 00)
Listbox (08 00)
MenuBar (09 00)
Menu (0A 00)
Image (0B 00) (a TXMB, TXMP or PSpc)
Dropdown (0C 00) (WMM_ drop-down menu)
ProgressBar (0D 00)
RadioButton (0E 00)
16 (10 00) (scrollbar; not used in dialogs)
Slider (11 00)
Label (14 00) (a <Width> value smaller than the text forces a linebreak) ("text")
<Id> int16 page ID, looked up by game application
<State> flag
1 (visible)
2 (disabled)
4 (unknown, probably "change texture on click" (used by checkbox))
<Style> flag
ThinBorder (01 00 00 00)
ThickBorder (02 00 00 00)
TitleBar (04 00 00 00)
Title (08 00 00 00)
CloseButton (10 00 00 00)
RestoreButton (20 00 00 00)
MinimizeButton (40 00 00 00)
Center (00 00 01 00)

Control specific styles

Groupbox/box:

131072 (00 00 02 00) (draw text background)
262144 (00 00 04 00) (draw text)

Button:

65536 (00 00 01 00) (draw button)
131072 (00 00 02 00) (draw button text)
524288 (00 00 08 00) (toggle button, like the ones used in-game on the Help screen, Diary screen, etc.)
1048576 (00 00 10 00) (default button, triggered by the Enter key)

Checkbox:

65536 (00 00 01 00) (draw label)

Radio button:

65536 (00 00 01 00) (draw label)

Edit field:

65536 (00 00 01 00) (number only)

Listbox:

65536 (00 00 01 00) (draw scrollbar)
131072 (00 00 02 00) (alphabetize items)
262144 (00 00 04 00) (items are not selectable)
524288 (00 00 08 00) (contains text, without this it contains only "custom" data)
1048576 (00 00 10 00) (owner window will draw the list item)
2097152 (00 00 20 00) (draw file/folder icons)

Picture:

131072 (00 00 02 00) (ignore the picture name; the displayed picture is set at runtime)

Popup menu:

65536 (00 00 01 00) (use menu width; doesn't work)
131072 (00 00 02 00) (ignore the menu name; the menu is set at runtime)

Text field:

131072 (00 00 02 00) (horizontally-centered text)
262144 (00 00 04 00) (right-aligned text)
1048576 (00 00 10 00) (vertically-centered text)
8388608 (00 00 80 00) (owner draw (hides text))
<X> int16 align (relative to the top left corner of the window)
<Y> int16 align (relative to the top left corner of the window)
<Width> int16 X dimension
<Height> int16 Y dimension
<Family> link32 link to TSFF, usually "TSFFTahoma"
<Style> flag
Normal (00 00 00 00)
Bold (01 00 00 00)
Italic (02 00 00 00)
<Color> color32 RGB range, e.g. 255 127 0 (for orange)
<Size> int16 font size is usually 10; 7 for "<Text>outline</Text>"