changeset 276:d576034ad1dd

Re #290: Migrate to using key/keyref definitions instead of ID/IDREF type * Migrate to using keys and keyrefs for default stats sets Also: * Make sure that getting the default ID fully loads the file
author IBBoard <dev@ibboard.co.uk>
date Sun, 04 Jul 2010 19:10:33 +0000
parents 10fb73206bd2
children c7a95912c1e8
files api/Objects/GameSystem.cs schemas/system.xsd
diffstat 2 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/api/Objects/GameSystem.cs	Sun Jul 04 13:52:26 2010 +0000
+++ b/api/Objects/GameSystem.cs	Sun Jul 04 19:10:33 2010 +0000
@@ -87,7 +87,8 @@
 		public string StandardSystemStatsID
 		{
 			get
-			{				
+			{
+				EnsureFullyLoaded();
 				return defaultStats;
 			}
 			
--- a/schemas/system.xsd	Sun Jul 04 13:52:26 2010 +0000
+++ b/schemas/system.xsd	Sun Jul 04 19:10:33 2010 +0000
@@ -1,6 +1,6 @@
 <?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/system" xmlns="http://ibboard.co.uk/warfoundry/system" elementFormDefault="qualified">
+targetNamespace="http://ibboard.co.uk/warfoundry/system" xmlns="http://ibboard.co.uk/warfoundry/system" xmlns:sys="http://ibboard.co.uk/warfoundry/system" elementFormDefault="qualified">
 <xs:element name="system">
 	<xs:complexType>
 		<xs:sequence>
@@ -21,22 +21,30 @@
 										</xs:complexType>
 									</xs:element>
 								</xs:sequence>
-								<xs:attribute name="id" type="xs:ID" />
+								<xs:attribute name="id" type="xs:string" />
 								<xs:anyAttribute processContents="lax"/>
 							</xs:complexType>
 						</xs:element>
 					</xs:sequence>
-					<xs:attribute name="defaultStats" type="xs:IDREF" use="required" />
+					<xs:attribute name="defaultStats" type="xs:string" use="required" />
 					<xs:anyAttribute processContents="lax"/>
 				</xs:complexType>
 			</xs:element>
 			<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
 		</xs:sequence>
-		<xs:attribute name="id" type="xs:ID" />
+		<xs:attribute name="id" type="xs:string" />
 		<xs:attribute name="name" type="xs:string" use="required"/>
 		<xs:attribute name="warn" type="xs:boolean" default="false"/>
 		<xs:attribute name="allowAllies" type="xs:boolean" default="true"/>
 		<xs:anyAttribute processContents="lax"/>
 	</xs:complexType>
+	<xs:keyref name="defaultStatsRef" refer="statsKey">
+		<xs:selector xpath="sys:sysStatsList"/>
+		<xs:field xpath="@defaultStats"/>
+	</xs:keyref>
+	<xs:key name="statsKey">
+		<xs:selector xpath="sys:sysStatsList/sys:sysStats"/>
+		<xs:field xpath="@id"/>
+	</xs:key>
 </xs:element>
 </xs:schema>
\ No newline at end of file