view dtds/race.xsd @ 203:df4e56e2ee71

Re #208: equipment slot issues * Consolidate some code in to one line * Make min/max percentage methods get the min/max of the calculated percentage and the percentage based on the numeric limit to ensure percentage is never greater than or less than (as appropriate) the numeric limit Also: * Remove Math.Min and Math.Max calls from Min/Max equipment count methods - we're assuming min < max in the percentages, so assume it here as well
author IBBoard <dev@ibboard.co.uk>
date Fri, 06 Nov 2009 20:48:07 +0000
parents 36adabb1c3ea
children 1f39e325deee
line wrap: on
line source

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:core="http://ibboard.co.uk/warfoundry/core" xmlns:cats="http://ibboard.co.uk/warfoundry/cats"
targetNamespace="http://ibboard.co.uk/warfoundry/race" xmlns="http://ibboard.co.uk/warfoundry/race" elementFormDefault="qualified">
<xs:element name="race">
	<xs:complexType>
		<xs:all>
			<xs:element name="units">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="unit" maxOccurs="unbounded">
							<xs:complexType>
								<xs:all>
									<xs:element name="stats">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="stat" maxOccurs="unbounded">
													<xs:complexType>
														<xs:simpleContent>
															<xs:extension base="xs:string">
																<xs:attribute name="name" type="xs:string" use="required"/>
																<xs:anyAttribute/>
															</xs:extension>
														</xs:simpleContent>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											<xs:attribute name="statSet" type="xs:string" default="" />
											<xs:anyAttribute/>
										</xs:complexType>
									</xs:element>
									<xs:element name="equipmentSlots" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="equipmentSlot" maxOccurs="unbounded">
													<xs:complexType>
														<xs:all>
															<xs:element name="maxLimit" minOccurs="0" type="core:limit" />
															<xs:element ref="core:extension" minOccurs="0" />													
														</xs:all>
														<xs:attribute name="name" type="xs:string" use="required"/>
														<xs:anyAttribute/>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="unitEquipment" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="unitEquipmentItem" maxOccurs="unbounded">
													<xs:complexType>
														<xs:all>
															<xs:element name="minLimit" minOccurs="0" type="core:limit" />
															<xs:element name="maxLimit" minOccurs="0" type="core:limit" />
															<xs:element ref="core:extension" minOccurs="0" />
														</xs:all>
														<xs:attribute name="id" type="xs:IDREF" />
														<xs:attribute name="required" type="xs:boolean" default="false"/>
														<!-- exclusivityGroup is deprecated in favour of the comma-separated exclusivityGroups -->
														<xs:attribute name="exclusivityGroup" type="xs:string" default=""/>
														<xs:attribute name="exclusivityGroups" type="xs:string" default=""/>
														<xs:attribute name="equipmentSlot" type="xs:string"/>
														<xs:attribute name="roundDirection" type="core:updowntype" default="up"/>
														<xs:attribute name="costMultiplier" type="core:nonNegativeDouble" default="1"/>
														<xs:attribute name="costRounding" type="costroundingtype" default="UpToHalf"/>
														<xs:anyAttribute/>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											<xs:anyAttribute/>
										</xs:complexType>
									</xs:element>
									<xs:element name="unitAbilities" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="unitAbility" maxOccurs="unbounded">
													<xs:complexType>
														<xs:attribute name="abilityID" type="xs:IDREF" />
														<xs:attribute name="required" type="xs:boolean" default="true"/>
														<xs:anyAttribute/>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											<xs:anyAttribute/>
										</xs:complexType>
									</xs:element>
									<xs:element name="requirements" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="requirement">
													<xs:complexType>
														<xs:simpleContent>
															<xs:extension base="xs:string">
																<xs:attribute name="requirementName" type="xs:string" use="required"/>
																<xs:anyAttribute/>
															</xs:extension>
														</xs:simpleContent>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											<xs:anyAttribute/>
										</xs:complexType>
									</xs:element>
									<xs:element name="contains" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="containedUnit">
													<xs:complexType>
														<xs:attribute name="containedID" type="xs:IDREF" use="required"/>
														<xs:anyAttribute/>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											<xs:anyAttribute/>
										</xs:complexType>
									</xs:element>
									<xs:element name="extraData" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="data">
													<xs:complexType>
														<xs:simpleContent>
															<xs:extension base="xs:string">
																<xs:attribute name="id" type="xs:ID" use="required"/>
																<xs:anyAttribute/>
															</xs:extension>
														</xs:simpleContent>
													</xs:complexType>
												</xs:element>
											</xs:sequence>
											<xs:anyAttribute/>
										</xs:complexType>
									</xs:element>
									<xs:element name="notes" type="xs:string" minOccurs="0" />
									<xs:element ref="core:extension" minOccurs="0" />
								</xs:all>
								<xs:attribute name="id" type="xs:ID" />
								<xs:attribute name="typeName" type="xs:string" use="required"/>
								<xs:attribute name="cat" type="xs:string" use="required"/>
								<xs:attribute name="unitPoints" type="core:nonNegativeNonInfiniteDouble" default="0"/>
								<xs:attribute name="points" type="core:nonNegativeNonInfiniteDouble" use="required"/>
								<xs:attribute name="minNum" type="xs:nonNegativeInteger" default="0"/>
								<xs:attribute name="maxNum" type="core:positiveOrInfiniteInteger" default="-1"/>
								<xs:attribute name="minSize" type="xs:nonNegativeInteger" default="5"/>
								<xs:attribute name="maxSize" type="core:positiveOrInfiniteInteger" default="-1"/>
								<xs:attribute name="baseSize" type="xs:nonNegativeInteger" default="0"/>
								<xs:anyAttribute/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="categories" type="cats:categoriestype" minOccurs="0" />
			<xs:element name="equipment" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="equipmentItem" maxOccurs="unbounded">
							<xs:complexType>
								<xs:all>
									<xs:element name="description" type="xs:string" minOccurs="0" />
									<xs:element ref="core:extension" minOccurs="0" />
								</xs:all>
								<xs:attribute name="id" type="xs:ID" use="required"/>
								<xs:attribute name="name" type="xs:string" use="required"/>
								<xs:attribute name="cost" type="core:nonNegativeNonInfiniteDouble" use="required"/>
								<xs:attribute name="armourType" type="armourtype" default="None"/>
								<xs:anyAttribute/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:anyAttribute/>
				</xs:complexType>
			</xs:element>
			<xs:element name="abilities" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="ability">
							<xs:complexType>
								<xs:all>
									<xs:element name="description" type="xs:string" />
									<xs:element ref="core:extension" minOccurs="0" />
								</xs:all>
								<xs:attribute name="id" type="xs:ID" use="required"/>
								<xs:attribute name="name" type="xs:string" use="required"/>
								<xs:anyAttribute/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:anyAttribute/>
				</xs:complexType>
			</xs:element>
			<xs:element ref="core:extension" minOccurs="0" />
		</xs:all>
		<xs:attribute name="id" type="xs:ID" />
		<xs:attribute name="subid" type="xs:string" default=""/>
		<xs:attribute name="name" type="xs:string" use="required"/>
		<xs:attribute name="system" type="xs:string" use="required"/>
		<xs:anyAttribute/>
	</xs:complexType>
</xs:element>
<xs:simpleType name="costroundingtype">
	<xs:restriction base="xs:string">
		<xs:enumeration value="Up"/>
		<xs:enumeration value="Down"/>
		<xs:enumeration value="Banker"/>
		<xs:enumeration value="UpToHalf"/>
		<xs:enumeration value="DownToHalf"/>
		<xs:enumeration value="BankerToHalf"/>
	</xs:restriction>
</xs:simpleType>
<xs:simpleType name="armourtype">
	<xs:restriction base="xs:string">
		<xs:enumeration value="None"/>
		<xs:enumeration value="Shield"/>
		<xs:enumeration value="LightArmour"/>
		<xs:enumeration value="LightArmourShield"/>
		<xs:enumeration value="HeavyArmour"/>
		<xs:enumeration value="HeavyArmourShield"/>
		<xs:enumeration value="Barding"/>
		<xs:enumeration value="BardingShield"/>
		<xs:enumeration value="BardingLightArmour"/>
		<xs:enumeration value="BardingLightArmourShield"/>
		<xs:enumeration value="BardingHeavyArmour"/>
		<xs:enumeration value="BardingHeavyArmourShield"/>
	</xs:restriction>
</xs:simpleType>
</xs:schema>