Skinning overview
There are several things the skin concerns itself with:
1. Sound
The skin configures various sounds used in the application. When the event is fired, the sound is played. This is pretty simple...
one sound for each event. See the Sound Section for more information regarding what events may be accompanied by sounds.
In addition, there is support for playback of sound by videos, and those settings are dealt with by the LayoutElement type "Image"
2. Music
Music is provided by soundtracks. The skin may define a local soundtrack, and overrides all other settings selectively using
parameters that the skin designer sets.
3. Configuration
This involves specific things like delays used by the title, screen saver, and loading screens and other miscellaneous items.
4. Resources
Sounds, Fonts and Images are resources. The skin designer has flexibility in how the images are defined, but fonts and sounds are
simple name loaded resources (loaded in this manner to cache commonly used resources). You'll want to define resources at the start
of the skin definition file, before layouts and sound events.
5. Layouts
This is the nuts and bolts of the skins... Layouts are where the skin designer determines the placement and content of various
elements of the screens. Currently, there are specific screens and specific behaviors for each.
Title: Displays the layout and awaits an event to end the title screen (key hit, video end, or time delay)
Loading: Displays the layout and can delay until time expires, video playback ends, or keystroke
Help: Displays global help screens. User can select screens horizontally (Left and Right) and back out of help.
Help has multiple screens.
GameHelp: Displays game help screens. User can elect screens horizontally (Left and Right) and back out of help or
launch the game from this screen. Multiple screens here... also launching a game can bypass the Loading screen, leaving
the help screen up as long as possible before the game runs.
PassCode: User enters the passcode here to enter secured areas (game entries or sub menus). The passcode gadget is required here
(one will default if it's not defined).
Menu: Classical preview menu screen. Now it may be defined as horizontally or vertically (default) oriented, giving skin designers
the ability to define radically different screens. A menu block will be required here, and there are several options available,
including two vertically-oriented menu blocks (MenuX and MXM), and a horizontally-oriented block. Many resources can be defined
as game-current here.
Thumbnail: Displays multiple selections in a grid. (Not implemented in 0.9i)
Layouts are comprised of a variety of LayoutElements. These are defined later in the guide, but they are highly configurable items
that can be displayed on the screen, including text fields (dynamic and static) that support scaling, fonts, justification and image
elements. There are even conditional modifiers and some limited animation parameters. Text elements can pull information from
various parts of the skin definition or the currently selected item entries (meaning you can extend these item entries to include
new information, such as publisher, dates, or ratings). The images can also be dynamic, meaning the resource can be defined to pull
an image filename dynamically from the item entry, for example.
What does this mean? More Power! Skinners will be able to have virtually complete control over the look and feel of MXM. Combined
with the fact that MXM can retrofit these new skins and still work with the old MenuX "XDI" files to grab game entry information,
provides the best of all possibilities.