<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

	<xsd:element name="ADdata">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="aliens">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="alien" type="alienType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="maps">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="map" type="mapType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="waves">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="wave" type="waveType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="levels">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="level" type="levelType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="waveParts">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="wavePart" type="wavePartType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="wavesOnLevels">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="waveOnLevel" type="waveOnLevelType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="splashes">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="splash" type="splashType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="towers">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="tower" type="towerType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="triggers">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="trigger" type="triggerType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="chains">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="chain" type="chainType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="towersOnLevels">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="towerOnLevel" type="towerOnLevelType" maxOccurs="unbounded"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
    </xsd:element>

    <xsd:complexType name="alienType">
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="score" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="speed" type="xsd:float" use="required"/>
		<xsd:attribute name="health" type="xsd:float" use="required"/>
		<xsd:attribute name="prise" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
		<xsd:attribute name="armor" type="xsd:float" use="optional"/>
		<xsd:attribute name="regeneration" type="xsd:float" use="optional"/>
		<xsd:attribute name="flying" type="xsd:boolean" use="optional"/>
	</xsd:complexType>

    <xsd:complexType name="splashType">
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="speed" type="xsd:float" use="required"/>
		<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
		<xsd:attribute name="lifetime" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="autoControl" type="xsd:boolean" use="optional"/>
	</xsd:complexType>

    <xsd:complexType name="triggerType">
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="count" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="timer" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="chance" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="randomPosRadius" type="xsd:float" use="optional"/>
		<xsd:attribute name="damage" type="xsd:float" use="optional"/>
		<xsd:attribute name="radius" type="xsd:float" use="optional"/>
		<xsd:attribute name="delParent" type="xsd:boolean" use="optional"/>
		<xsd:attribute name="type" use="required">
           <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="onDestination"/>
                    <xsd:enumeration value="onTimer"/>
                    <xsd:enumeration value="onAlienInRadius"/>
                </xsd:restriction>
            </xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="childAim" use="optional">
           <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="noAim"/>
                    <xsd:enumeration value="parentAim"/>
                    <xsd:enumeration value="allSide"/>
                    <xsd:enumeration value="nearlestAlien"/>
                </xsd:restriction>
            </xsd:simpleType>
		</xsd:attribute>
	</xsd:complexType>

    <xsd:complexType name="towerType">
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
		<xsd:attribute name="buildTime" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="cost" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="splash" type="xsd:integer" use="required"/>
		<xsd:attribute name="reload" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="radius" type="xsd:float" use="required"/>
		<xsd:attribute name="expByShot" type="xsd:float" use="optional"/>
		<xsd:attribute name="expByKill" type="xsd:float" use="optional"/>
		<xsd:attribute name="expByDamage" type="xsd:float" use="optional"/>
	</xsd:complexType>

    <xsd:complexType name="mapType">
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="maxPlayers" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="width" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="height" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="imageType" type="xsd:integer" use="required"/>
		<xsd:attribute name="data" type="xsd:string" use="required"/>
	</xsd:complexType>

    <xsd:complexType name="morphType">
		<xsd:attribute name="from" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="to" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="cost" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="expRequired" type="xsd:float" use="required"/>
	</xsd:complexType>

    <xsd:complexType name="upgradeType">
		<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="trigger" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="cost" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="radius" type="xsd:float" use="optional"/>
		<xsd:attribute name="reload" type="xsd:positiveInteger" use="optional"/>
		<xsd:attribute name="damage" type="xsd:float" use="optional"/>
		<xsd:attribute name="damageRadius" type="xsd:float" use="optional"/>
	</xsd:complexType>

    <xsd:complexType name="wavePartType">
		<xsd:attribute name="alien" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="wave" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="count" type="xsd:positiveInteger" use="required"/>
	</xsd:complexType>

    <xsd:complexType name="chainType">
		<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="parent" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="trigger" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="child" type="xsd:positiveInteger" use="optional"/>
	</xsd:complexType>

    <xsd:complexType name="waveType">
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="timeout" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="prise" type="xsd:nonNegativeInteger" use="required"/>
		<!--xsd:attribute name="type" type="xsd:nonNegativeInteger" use="required"-->
	</xsd:complexType>

    <xsd:complexType name="waveOnLevelType">
		<xsd:attribute name="level" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="wave" type="xsd:positiveInteger" use="required"/>
	</xsd:complexType>

    <xsd:complexType name="towerOnLevelType">
		<xsd:attribute name="level" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="tower" type="xsd:positiveInteger" use="required"/>
		<!--xsd:attribute name="enableWave" type="xsd:nonNegativeInteger" use="optional"-->
	</xsd:complexType>

    <xsd:complexType name="levelType">
		<xsd:attribute name="id" type="xsd:positiveInteger" use="required"/>
		<xsd:attribute name="name" type="xsd:string" use="required"/>
		<xsd:attribute name="map" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="score" type="xsd:positiveInteger" use="required"/>
	</xsd:complexType>

</xsd:schema>

