summaryrefslogtreecommitdiff
path: root/client/config.xsd
diff options
context:
space:
mode:
Diffstat (limited to 'client/config.xsd')
-rw-r--r--client/config.xsd540
1 files changed, 540 insertions, 0 deletions
diff --git a/client/config.xsd b/client/config.xsd
new file mode 100644
index 0000000..ae9cc30
--- /dev/null
+++ b/client/config.xsd
@@ -0,0 +1,540 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- vim: set sts=2 sw=2: -->
+<!--
+ Last updated for ManaPlus v1.4.7.19-21-g58f499d
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:its="http://www.w3.org/2005/11/its" elementFormDefault="qualified">
+ <xs:import namespace="http://www.w3.org/2005/11/its" schemaLocation="dl/its.xsd"/>
+ <!--
+ XML::getBoolProperty
+ -->
+ <xs:simpleType name="bool">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="true"/>
+ <xs:enumeration value="false"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- roots, with their children nearby -->
+ <!--
+ This is used by local config files and by updates files
+ Configuration::init/ConfigurationObject::initFromXML
+ branding
+ portable.xml
+ command-line
+ config
+ <configdir>/test.xml
+ <configdir>/config.xml
+ serverConfig
+ <configdir>/<server>/config.xml
+ paths
+ paths.xml
+ features
+ featuresFile features.xml
+ -->
+ <xs:element name="configuration" type="root_configuration"/>
+ <xs:complexType name="root_configuration">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="list">
+ <xs:complexType>
+ <!-- what manaplus does is actually impossible to represent -->
+ <!-- TODO in a future version fix this horrible abuse of XML -->
+ <xs:choice>
+ <xs:element name="nested_conf_1" type="configuration" maxOccurs="unbounded"/>
+ <xs:element name="nested_conf_2" type="configuration" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:attribute name="name" type="nested_configuration" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="option">
+ <xs:complexType>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="nested_configuration">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="nested_conf_1"/>
+ <xs:enumeration value="nested_conf_2"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ Theme::readSkin
+ <lots of stuff>.xml
+ -->
+ <xs:element name="skinset" type="root_skinset"/>
+ <xs:complexType name="root_skinset">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="widget">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="part">
+ <xs:complexType>
+ <xs:attribute name="type" type="widget_part_type" use="required"/>
+ <xs:attribute name="xpos" type="xs:int" default="0"/>
+ <xs:attribute name="ypos" type="xs:int" default="0"/>
+ <xs:attribute name="width" type="xs:int" default="1"/>
+ <xs:attribute name="height" type="xs:int" default="1"/>
+ </xs:complexType>
+ </xs:element>
+ <!-- only if full skin (?) -->
+ <xs:element name="option">
+ <xs:complexType>
+ <!-- some of these are handled specially, but it's still stringy -->
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="value" type="xs:int" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ <xs:attribute name="type" type="widget_type" use="required"/>
+ <xs:attribute name="xpos" type="xs:int" default="0"/>
+ <xs:attribute name="ypos" type="xs:int" default="0"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ <xs:attribute name="image" type="xs:string" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="widget_type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Window"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="widget_part_type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ <xs:enumeration value="top-left-corner"/>
+ <xs:enumeration value="standart"/>
+ <xs:enumeration value="up"/>
+ <xs:enumeration value="hstart"/>
+ <xs:enumeration value="in"/>
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="top-edge"/>
+ <xs:enumeration value="highlighted"/>
+ <xs:enumeration value="down"/>
+ <xs:enumeration value="hmiddle"/>
+ <xs:enumeration value="in-highlighted"/>
+ <xs:enumeration value="checked"/>
+ <xs:enumeration value="top-right-corner"/>
+ <xs:enumeration value="pressed"/>
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="hend"/>
+ <xs:enumeration value="out"/>
+ <xs:enumeration value="disabled"/>
+ <xs:enumeration value="left-edge"/>
+ <xs:enumeration value="disabled"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="hgrip"/>
+ <xs:enumeration value="out-highlighted"/>
+ <xs:enumeration value="disabled-checked"/>
+ <xs:enumeration value="bg-quad"/>
+ <xs:enumeration value="vstart"/>
+ <xs:enumeration value="normal-highlighted"/>
+ <xs:enumeration value="right-edge"/>
+ <xs:enumeration value="vmiddle"/>
+ <xs:enumeration value="checked-highlighted"/>
+ <xs:enumeration value="bottom-left-corner"/>
+ <xs:enumeration value="vend"/>
+ <xs:enumeration value="bottom-edge"/>
+ <xs:enumeration value="vgrip"/>
+ <xs:enumeration value="bottom-right-corner"/>
+ <xs:enumeration value="closeImage"/>
+ <xs:enumeration value="closeImageHighlighted"/>
+ <xs:enumeration value="stickyImageUp"/>
+ <xs:enumeration value="stickyImageDown"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ Theme::loadColors
+ colors.xml
+ -->
+ <xs:element name="colors" type="root_colors"/>
+ <xs:complexType name="root_colors">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="progressbar">
+ <xs:complexType>
+ <xs:attribute name="id" type="colors_progressbar_id" use="required"/>
+ <xs:attribute name="color" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="palette">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="color">
+ <xs:complexType>
+ <xs:attribute name="id" type="colors_palette_id" use="required"/>
+ <xs:attribute name="color" type="xs:string" use="required"/>
+ <xs:attribute name="effect" type="colors_palette_effect" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:int" use="required"/>
+ <xs:attribute name="color" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ <xs:simpleType name="colors_progressbar_id">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="HP"/>
+ <xs:enumeration value="HP_POISON"/>
+ <xs:enumeration value="MP"/>
+ <xs:enumeration value="NO_MP"/>
+ <xs:enumeration value="EXP"/>
+ <xs:enumeration value="INVY_SLOTS"/>
+ <xs:enumeration value="WEIGHT"/>
+ <xs:enumeration value="JOB"/>
+ <xs:enumeration value="UPDATE"/>
+ <xs:enumeration value="MONEY"/>
+ <xs:enumeration value="ARROWS"/>
+ <xs:enumeration value="STATUS"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="colors_palette_id">
+ <xs:restriction base="xs:string">
+ <!-- colors.xml, the _OUTLINE version must come after the base -->
+ <xs:enumeration value="BROWSERBOX"/>
+ <xs:enumeration value="BROWSERBOX_OUTLINE"/>
+ <xs:enumeration value="SELFNICK"/>
+ <xs:enumeration value="SELFNICK_OUTLINE"/>
+ <xs:enumeration value="TEXT"/>
+ <xs:enumeration value="TEXT_OUTLINE"/>
+ <xs:enumeration value="CARET"/>
+ <xs:enumeration value="SHADOW"/>
+ <xs:enumeration value="OUTLINE"/>
+ <xs:enumeration value="BORDER"/>
+ <xs:enumeration value="PROGRESS_BAR"/>
+ <xs:enumeration value="PROGRESS_BAR_OUTLINE"/>
+ <xs:enumeration value="BUTTON"/>
+ <xs:enumeration value="BUTTON_OUTLINE"/>
+ <xs:enumeration value="BUTTON_DISABLED"/>
+ <xs:enumeration value="BUTTON_DISABLED_OUTLINE"/>
+ <xs:enumeration value="BUTTON_HIGHLIGHTED"/>
+ <xs:enumeration value="BUTTON_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="BUTTON_PRESSED"/>
+ <xs:enumeration value="BUTTON_PRESSED_OUTLINE"/>
+ <xs:enumeration value="CHECKBOX"/>
+ <xs:enumeration value="CHECKBOX_OUTLINE"/>
+ <xs:enumeration value="DROPDOWN"/>
+ <xs:enumeration value="DROPDOWN_OUTLINE"/>
+ <xs:enumeration value="LABEL"/>
+ <xs:enumeration value="LABEL_OUTLINE"/>
+ <xs:enumeration value="LISTBOX"/>
+ <xs:enumeration value="LISTBOX_OUTLINE"/>
+ <xs:enumeration value="LISTBOX_SELECTED"/>
+ <xs:enumeration value="LISTBOX_SELECTED_OUTLINE"/>
+ <xs:enumeration value="RADIOBUTTON"/>
+ <xs:enumeration value="RADIOBUTTON_OUTLINE"/>
+ <xs:enumeration value="POPUP"/>
+ <xs:enumeration value="POPUP_OUTLINE"/>
+ <xs:enumeration value="TAB"/>
+ <xs:enumeration value="TAB_OUTLINE"/>
+ <xs:enumeration value="TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="TAB_SELECTED"/>
+ <xs:enumeration value="TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="TEXTBOX"/>
+ <xs:enumeration value="TEXTFIELD"/>
+ <xs:enumeration value="TEXTFIELD_OUTLINE"/>
+ <xs:enumeration value="WINDOW"/>
+ <xs:enumeration value="WINDOW_OUTLINE"/>
+ <xs:enumeration value="PARTY_CHAT_TAB"/>
+ <xs:enumeration value="PARTY_CHAT_TAB_OUTLINE"/>
+ <xs:enumeration value="PARTY_SOCIAL_TAB"/>
+ <xs:enumeration value="PARTY_SOCIAL_TAB_OUTLINE"/>
+ <xs:enumeration value="GUILD_CHAT_TAB"/>
+ <xs:enumeration value="GUILD_CHAT_TAB_OUTLINE"/>
+ <xs:enumeration value="GUILD_SOCIAL_TAB"/>
+ <xs:enumeration value="GUILD_SOCIAL_TAB_OUTLINE"/>
+ <xs:enumeration value="GM_CHAT_TAB"/>
+ <xs:enumeration value="GM_CHAT_TAB_OUTLINE"/>
+ <xs:enumeration value="PARTY_CHAT_TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="PARTY_CHAT_TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="PARTY_SOCIAL_TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="PARTY_SOCIAL_TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="GUILD_CHAT_TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="GUILD_CHAT_TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="GUILD_SOCIAL_TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="GUILD_SOCIAL_TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="GM_CHAT_TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="GM_CHAT_TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="PARTY_CHAT_TAB_SELECTED"/>
+ <xs:enumeration value="PARTY_CHAT_TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="PARTY_SOCIAL_TAB_SELECTED"/>
+ <xs:enumeration value="PARTY_SOCIAL_TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="GUILD_CHAT_TAB_SELECTED"/>
+ <xs:enumeration value="GUILD_CHAT_TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="GUILD_SOCIAL_TAB_SELECTED"/>
+ <xs:enumeration value="GUILD_SOCIAL_TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="GM_CHAT_TAB_SELECTED"/>
+ <xs:enumeration value="GM_CHAT_TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="BACKGROUND"/>
+ <xs:enumeration value="BACKGROUND_GRAY"/>
+ <xs:enumeration value="SCROLLBAR_GRAY"/>
+ <xs:enumeration value="DROPDOWN_SHADOW"/>
+ <xs:enumeration value="HIGHLIGHT"/>
+ <xs:enumeration value="HIGHLIGHT_OUTLINE"/>
+ <xs:enumeration value="TAB_FLASH"/>
+ <xs:enumeration value="TAB_FLASH_OUTLINE"/>
+ <xs:enumeration value="TAB_PLAYER_FLASH"/>
+ <xs:enumeration value="TAB_PLAYER_FLASH_OUTLINE"/>
+ <xs:enumeration value="SHOP_WARNING"/>
+ <xs:enumeration value="ITEM_EQUIPPED"/>
+ <xs:enumeration value="ITEM_EQUIPPED_OUTLINE"/>
+ <xs:enumeration value="ITEM_NOT_EQUIPPED"/>
+ <xs:enumeration value="ITEM_NOT_EQUIPPED_OUTLINE"/>
+ <xs:enumeration value="CHAT"/>
+ <xs:enumeration value="CHAT_OUTLINE"/>
+ <xs:enumeration value="GM"/>
+ <xs:enumeration value="GM_OUTLINE"/>
+ <xs:enumeration value="GLOBAL"/>
+ <xs:enumeration value="GLOBAL_OUTLINE"/>
+ <xs:enumeration value="PLAYER"/>
+ <xs:enumeration value="PLAYER_OUTLINE"/>
+ <xs:enumeration value="WHISPER_TAB"/>
+ <xs:enumeration value="WHISPER_TAB_OUTLINE"/>
+ <xs:enumeration value="WHISPER_TAB_OFFLINE"/>
+ <xs:enumeration value="WHISPER_TAB_OFFLINE_OUTLINE"/>
+ <xs:enumeration value="WHISPER_TAB_HIGHLIGHTED"/>
+ <xs:enumeration value="WHISPER_TAB_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="WHISPER_TAB_OFFLINE_HIGHLIGHTED"/>
+ <xs:enumeration value="WHISPER_TAB_OFFLINE_HIGHLIGHTED_OUTLINE"/>
+ <xs:enumeration value="WHISPER_TAB_SELECTED"/>
+ <xs:enumeration value="WHISPER_TAB_SELECTED_OUTLINE"/>
+ <xs:enumeration value="WHISPER_TAB_OFFLINE_SELECTED"/>
+ <xs:enumeration value="WHISPER_TAB_OFFLINE_SELECTED_OUTLINE"/>
+ <xs:enumeration value="IS"/>
+ <xs:enumeration value="IS_OUTLINE"/>
+ <xs:enumeration value="SERVER"/>
+ <xs:enumeration value="SERVER_OUTLINE"/>
+ <xs:enumeration value="LOGGER"/>
+ <xs:enumeration value="LOGGER_OUTLINE"/>
+ <xs:enumeration value="HYPERLINK"/>
+ <xs:enumeration value="HYPERLINK_OUTLINE"/>
+ <xs:enumeration value="UNKNOWN_ITEM"/>
+ <xs:enumeration value="UNKNOWN_ITEM_OUTLINE"/>
+ <xs:enumeration value="GENERIC"/>
+ <xs:enumeration value="GENERIC_OUTLINE"/>
+ <xs:enumeration value="HEAD"/>
+ <xs:enumeration value="HEAD_OUTLINE"/>
+ <xs:enumeration value="USABLE"/>
+ <xs:enumeration value="USABLE_OUTLINE"/>
+ <xs:enumeration value="TORSO"/>
+ <xs:enumeration value="TORSO_OUTLINE"/>
+ <xs:enumeration value="ONEHAND"/>
+ <xs:enumeration value="ONEHAND_OUTLINE"/>
+ <xs:enumeration value="LEGS"/>
+ <xs:enumeration value="LEGS_OUTLINE"/>
+ <xs:enumeration value="FEET"/>
+ <xs:enumeration value="FEET_OUTLINE"/>
+ <xs:enumeration value="TWOHAND"/>
+ <xs:enumeration value="TWOHAND_OUTLINE"/>
+ <xs:enumeration value="SHIELD"/>
+ <xs:enumeration value="SHIELD_OUTLINE"/>
+ <xs:enumeration value="RING"/>
+ <xs:enumeration value="RING_OUTLINE"/>
+ <xs:enumeration value="NECKLACE"/>
+ <xs:enumeration value="NECKLACE_OUTLINE"/>
+ <xs:enumeration value="ARMS"/>
+ <xs:enumeration value="ARMS_OUTLINE"/>
+ <xs:enumeration value="AMMO"/>
+ <xs:enumeration value="AMMO_OUTLINE"/>
+ <xs:enumeration value="SERVER_VERSION_NOT_SUPPORTED"/>
+ <xs:enumeration value="SERVER_VERSION_NOT_SUPPORTED_OUTLINE"/>
+ <xs:enumeration value="WARNING"/>
+ <xs:enumeration value="WARNING_OUTLINE"/>
+ <xs:enumeration value="CHARM"/>
+ <xs:enumeration value="CHARM_OUTLINE"/>
+ <xs:enumeration value="PLAYER_ADVANCED"/>
+ <xs:enumeration value="PLAYER_ADVANCED_OUTLINE"/>
+ <xs:enumeration value="BUBBLE_NAME"/>
+ <xs:enumeration value="BUBBLE_NAME_OUTLINE"/>
+ <xs:enumeration value="BUBBLE_TEXT"/>
+ <xs:enumeration value="BUBBLE_TEXT_OUTLINE"/>
+ <xs:enumeration value="BLACK"/>
+ <xs:enumeration value="BLACK_OUTLINE"/>
+ <xs:enumeration value="RED"/>
+ <xs:enumeration value="RED_OUTLINE"/>
+ <xs:enumeration value="GREEN"/>
+ <xs:enumeration value="GREEN_OUTLINE"/>
+ <xs:enumeration value="BLUE"/>
+ <xs:enumeration value="BLUE_OUTLINE"/>
+ <xs:enumeration value="ORANGE"/>
+ <xs:enumeration value="ORANGE_OUTLINE"/>
+ <xs:enumeration value="YELLOW"/>
+ <xs:enumeration value="YELLOW_OUTLINE"/>
+ <xs:enumeration value="PINK"/>
+ <xs:enumeration value="PINK_OUTLINE"/>
+ <xs:enumeration value="PURPLE"/>
+ <xs:enumeration value="PURPLE_OUTLINE"/>
+ <xs:enumeration value="GRAY"/>
+ <xs:enumeration value="GRAY_OUTLINE"/>
+ <xs:enumeration value="BROWN"/>
+ <xs:enumeration value="BROWN_OUTLINE"/>
+ <xs:enumeration value="STATUSBAR_ON"/>
+ <xs:enumeration value="STATUSBAR_OFF"/>
+ <xs:enumeration value="TABLE_BACKGROUND"/>
+ <xs:enumeration value="SLOTS_BAR"/>
+ <xs:enumeration value="SLOTS_BAR_OUTLINE"/>
+ <xs:enumeration value="HP_BAR"/>
+ <xs:enumeration value="HP_BAR_OUTLINE"/>
+ <xs:enumeration value="MP_BAR"/>
+ <xs:enumeration value="MP_BAR_OUTLINE"/>
+ <xs:enumeration value="NO_MP_BAR"/>
+ <xs:enumeration value="NO_MP_BAR_OUTLINE"/>
+ <xs:enumeration value="XP_BAR"/>
+ <xs:enumeration value="XP_BAR_OUTLINE"/>
+ <xs:enumeration value="WEIGHT_BAR"/>
+ <xs:enumeration value="WEIGHT_BAR_OUTLINE"/>
+ <xs:enumeration value="MONEY_BAR"/>
+ <xs:enumeration value="MONEY_BAR_OUTLINE"/>
+ <xs:enumeration value="ARROWS_BAR"/>
+ <xs:enumeration value="ARROWS_BAR_OUTLINE"/>
+ <xs:enumeration value="STATUS_BAR"/>
+ <xs:enumeration value="STATUS_BAR_OUTLINE"/>
+ <xs:enumeration value="JOB_BAR"/>
+ <xs:enumeration value="JOB_BAR_OUTLINE"/>
+ <xs:enumeration value="OLDCHAT"/>
+ <xs:enumeration value="OLDCHAT_OUTLINE"/>
+ <xs:enumeration value="AWAYCHAT"/>
+ <xs:enumeration value="AWAYCHAT_OUTLINE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="colors_palette_effect">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="STATIC"/>
+ <xs:enumeration value="PULSE"/>
+ <xs:enumeration value="SPECTRUM"/>
+ <xs:enumeration value="RAINBOW"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ Theme::loadInfo
+ info.xml
+ -->
+ <xs:element name="info" type="root_info"/>
+ <xs:complexType name="root_info">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="name" type="xs:string"/>
+ <xs:element name="copyright" type="xs:string"/>
+ <xs:element name="font" type="xs:string"/>
+ <xs:element name="boldFont" type="xs:string"/>
+ <xs:element name="particleFont" type="xs:string"/>
+ <xs:element name="helpFont" type="xs:string"/>
+ <xs:element name="secureFont" type="xs:string"/>
+ <xs:element name="npcFont" type="xs:string"/>
+ <xs:element name="japanFont" type="xs:string"/>
+ <xs:element name="chinaFont" type="xs:string"/>
+ <xs:element name="fontSize" type="xs:int"/>
+ <xs:element name="npcfontSize" type="xs:int"/>
+ <xs:element name="guialpha" type="xs:float"/>
+ <!-- the below must not occur before the default ones above -->
+ <!-- TODO in a future version fix this moderate abuse of XML -->
+ <!-- <= 120 dpi -->
+ <xs:element name="fontSize_low" type="xs:int"/>
+ <xs:element name="npcfontSize_low" type="xs:int"/>
+ <!-- <= 160 dpi -->
+ <xs:element name="fontSize_medium" type="xs:int"/>
+ <xs:element name="npcfontSize_medium" type="xs:int"/>
+ <!-- <= 213 dpi -->
+ <xs:element name="fontSize_tv" type="xs:int"/>
+ <xs:element name="npcfontSize_tv" type="xs:int"/>
+ <!-- <= 240 dpi -->
+ <xs:element name="fontSize_high" type="xs:int"/>
+ <xs:element name="npcfontSize_high" type="xs:int"/>
+ <!-- <= 320 dpi -->
+ <xs:element name="fontSize_xhigh" type="xs:int"/>
+ <xs:element name="npcfontSize_xhigh" type="xs:int"/>
+ <!-- <= 480 dpi (max) -->
+ <xs:element name="fontSize_xxhigh" type="xs:int"/>
+ <xs:element name="npcfontSize_xxhigh" type="xs:int"/>
+ </xs:choice>
+ </xs:complexType>
+ <!--
+ ServerDialog::loadServers
+ serverlistplus.xml
+ -->
+ <xs:element name="serverlist" type="root_serverlist"/>
+ <xs:complexType name="root_serverlist">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="server">
+ <xs:complexType>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="connection">
+ <xs:complexType>
+ <xs:attribute name="hostname" type="xs:string" use="required"/>
+ <xs:attribute name="althostname" type="xs:string" use="optional"/>
+ <xs:attribute name="port" type="xs:ushort" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="description" type="xs:string"/>
+ <xs:element name="registerUrl" type="xs:string"/>
+ <xs:element name="onlineListUrl" type="xs:string"/>
+ <xs:element name="support" type="xs:string"/>
+ <xs:element name="persistentIp" type="xs:boolean"/>
+ <xs:element name="updateMirror" type="xs:string"/>
+ <!-- TODO in a future version fix this horrible abuse of XML -->
+ <xs:element name="description_ru" type="xs:string"/>
+ <xs:element name="description_fr" type="xs:string"/>
+ <xs:element name="description_pt" type="xs:string"/>
+ <xs:element name="description_es" type="xs:string"/>
+ <xs:element name="description_ja" type="xs:string"/>
+ <xs:element name="description_de" type="xs:string"/>
+ <xs:element name="description_pl" type="xs:string"/>
+ <xs:element name="description_pt_BR" type="xs:string"/>
+ <xs:element name="description_it" type="xs:string"/>
+ <xs:element name="description_vls" type="xs:string"/>
+ <xs:element name="description_id" type="xs:string"/>
+ <xs:element name="description_zh_CN" type="xs:string"/>
+ <xs:element name="description_nl_BE" type="xs:string"/>
+ <xs:element name="description_nl" type="xs:string"/>
+ </xs:choice>
+ <xs:attribute name="type" type="serverlist_server_type" use="required"/>
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="minVersion" type="xs:string" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ </xs:choice>
+ <xs:attribute name="version" type="xs:int" use="required"/>
+ </xs:complexType>
+ <xs:simpleType name="serverlist_server_type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="tmwathena"/>
+ <xs:enumeration value="evol"/>
+ <xs:enumeration value="eathena"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!--
+ <updaterwindow>:loadXMLFile
+ resources.xml
+ -->
+ <xs:element name="updates" type="root_updates"/>
+ <xs:complexType name="root_updates">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="update" type="updates_update"/>
+ <xs:element name="mod" type="updates_update"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:complexType name="updates_update">
+ <xs:attribute name="name" type="xs:string" use="required"/>
+ <xs:attribute name="hash" type="xs:string" use="required"/>
+ <xs:attribute name="type" type="updates_update_type" use="required"/>
+ <xs:attribute name="description" type="xs:string" use="optional"/>
+ <xs:attribute name="group" type="xs:string" use="optional"/> <!-- only for 'mod'? -->
+ <xs:attribute name="version" type="xs:string" use="optional"/>
+ <xs:attribute name="notVersion" type="xs:string" use="optional"/>
+ <xs:attribute name="required" type="yesno" default="yes"/>
+ </xs:complexType>
+ <xs:simpleType name="updates_update_type">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="data"/>
+ <xs:enumeration value="music"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="yesno">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="yes"/>
+ <xs:enumeration value="no"/>
+ </xs:restriction>
+ </xs:simpleType>
+</xs:schema>