Post by Freiegeister on Jul 25, 2004 1:50:07 GMT
Here's the Status schema for my LoM multi-user web service. This defines what is returned in response to any action command. The level of detail returned will be dependent on the client application. An application that can store game details will be able to receive simple updates, though a completely state-less application or a program such as the Campaign Manager could request a complete status update.
Some example Action commands and their returned Status output without SOAP wrapper. The application is assumed to store all current game state information:
The uid returned is a random 4byte word to be passed with the next Action command.
The complete schema is below:
Some example Action commands and their returned Status output without SOAP wrapper. The application is assumed to store all current game state information:
<action uid="ajdj46dj693kfmh28dglei38jkhdw376ekd" character="12345">
<move direction="NE" />
<look direction="NE" />
</action>
<status uid="rj2j46dj6f33fmh26dglei31jkddw3f6ek4">
<character id="12345" health="200" time="5.5" location="13461" direction="NE" />
<army id="11564" health="185" location="13461" />
<location id="13231" name="Plains of Blood" terrain="1" xcoord="-20" ycoord="15" xcoord="0" />
<location id="13232" name="Plains of Blood" terrain="1" xcoord="-19" ycoord="15" xcoord="0" />
<location id="13292" name="Forest of Thrall" terrain="2" xcoord="-19" ycoord="14" xcoord="0" />
</status>
<action uid="bwd316au693irfh2gtgse1y8fkhg13h6d13" character="12345">
<seek />
<think />
</action>
<status uid="rj2j46dj6f33fmh26dglei31jkddw3f6ek4">
<character id="12345" health="255" time="7" />
<army id="11564" health="255" />
<object id="22" name="Waters of Life" description="You have found the Waters of Life that restore your vigour." />
</status>
The uid returned is a random 4byte word to be passed with the next Action command.
The complete schema is below:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema id="mule_status" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="status">
<xs:complexType>
<xs:sequence>
<xs:element name="character" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:long" />
<xs:attribute name="name" use="optional" type="xs:string" />
<xs:attribute name="characterimage" use="optional" type="xs:long" />
<xs:attribute name="shieldimage" use="optional" type="xs:long" />
<xs:attribute name="genderpronoun" use="optional" type="xs:string" />
<xs:attribute name="race" use="optional" type="xs:string" />
<xs:attribute name="courage" use="optional" type="xs:integer" />
<xs:attribute name="health" use="optional" type="xs:integer" />
<xs:attribute name="time" use="optional" type="xs:decimal" />
<xs:attribute name="location" use="optional" type="xs:long" />
<xs:attribute name="hidden" use="optional" type="xs:boolean" />
<xs:attribute name="selected" use="optional" type="xs:boolean" />
<xs:attribute name="direction" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="N" />
<xs:enumeration value="NE" />
<xs:enumeration value="E" />
<xs:enumeration value="SE" />
<xs:enumeration value="S" />
<xs:enumeration value="SW" />
<xs:enumeration value="W" />
<xs:enumeration value="NW" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="object" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="modifier" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:integer" />
<xs:attribute name="operator" use="required" type="xs:long" />
<xs:attribute name="value" use="required" type="xs:integer" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" use="required" type="xs:long" />
<xs:attribute name="name" use="optional" type="xs:string" />
<xs:attribute name="description" use="optional" type="xs:string" />
<xs:attribute name="image" use="optional" type="xs:long" />
<xs:attribute name="location" use="optional" type="xs:long" />
<xs:attribute name="owner" use="optional" type="xs:long" />
</xs:complexType>
</xs:element>
<xs:element name="army" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:long" />
<xs:attribute name="image" use="optional" type="xs:long" />
<xs:attribute name="number" use="optional" type="xs:integer" />
<xs:attribute name="type" use="optional" type="xs:string" />
<xs:attribute name="race" use="optional" type="xs:string" />
<xs:attribute name="courage" use="optional" type="xs:integer" />
<xs:attribute name="health" use="optional" type="xs:integer" />
<xs:attribute name="location" use="optional" type="xs:long" />
<xs:attribute name="owner" use="optional" type="xs:long" />
</xs:complexType>
</xs:element>
<xs:element name="location" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:long" />
<xs:attribute name="name" use="required" type="xs:string" />
<xs:attribute name="image" use="optional" type="xs:long" />
<xs:attribute name="terrain" use="required" type="xs:long" />
<xs:attribute name="xcoord" use="required" type="xs:integer" />
<xs:attribute name="ycoord" use="required" type="xs:integer" />
<xs:attribute name="zcoord" use="required" type="xs:integer" />
<xs:attribute name="weather" use="optional" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="diplomacy" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="character" use="required" type="xs:long" />
<xs:attribute name="opponent" use="required" type="xs:long" />
<xs:attribute name="relationship" use="required" type="xs:integer" />
</xs:complexType>
</xs:element>
<xs:element name="task" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" use="required" type="xs:long" />
<xs:attribute name="character" use="required" type="xs:long" />
<xs:attribute name="priority" use="required" type="xs:integer" />
<xs:attribute name="action" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="follow" />
<xs:enumeration value="goto" />
<xs:enumeration value="approach" />
<xs:enumeration value="attack" />
<xs:enumeration value="find" />
<xs:enumeration value="wander" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="targetid" use="required" type="xs:long" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="uid" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>