Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="https://se2.mini.pw.edu.pl/17-results/" targetNamespace="https://se2.mini.pw.edu.pl/17-results/">
- <xs:simpleType name="guid">
- <xs:restriction base="xs:string">
- <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="GameName">
- <xs:restriction base="xs:string">
- <xs:pattern value="[A-Za-z][a-z0-9]*( [a-z0-9]+)*" />
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="Location">
- <xs:attribute name="x" type="xs:unsignedInt" use="required" />
- <xs:attribute name="y" type="xs:unsignedInt" use="required" />
- </xs:complexType>
- <xs:complexType name="Field" abstract="true">
- <xs:complexContent>
- <xs:extension base="Location">
- <xs:attribute name="timestamp" type="xs:dateTime" use="required" />
- <xs:attribute name="playerId" type="xs:unsignedLong" use="optional" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="TaskField">
- <xs:complexContent>
- <xs:extension base="Field">
- <xs:attribute name="distanceToPiece" type="xs:int" use="required" />
- <xs:attribute name="pieceId" type="xs:unsignedLong" use="optional" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:simpleType name="GoalFieldType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="unknown" />
- <xs:enumeration value="goal" />
- <xs:enumeration value="non-goal" />
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="GoalField">
- <xs:complexContent>
- <xs:extension base="Field">
- <xs:attribute name="type" type="GoalFieldType" use="required" />
- <xs:attribute name="team" type="TeamColour" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:simpleType name="PieceType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="unknown" />
- <xs:enumeration value="sham" />
- <xs:enumeration value="normal" />
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="Piece">
- <xs:attribute name="id" type="xs:unsignedLong" use="required" />
- <xs:attribute name="type" type="PieceType" use="required" />
- <xs:attribute name="timestamp" type="xs:dateTime" use="required" />
- <xs:attribute name="playerId" type="xs:unsignedLong" use="optional" />
- </xs:complexType>
- <xs:simpleType name="TeamColour">
- <xs:restriction base="xs:string">
- <xs:enumeration value="red" />
- <xs:enumeration value="blue" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="MoveType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="up" />
- <xs:enumeration value="down" />
- <xs:enumeration value="left" />
- <xs:enumeration value="right" />
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="PlayerType">
- <xs:restriction base="xs:string">
- <xs:enumeration value="leader" />
- <xs:enumeration value="member" />
- </xs:restriction>
- </xs:simpleType>
- <xs:complexType name="PlayerMessage">
- <xs:attribute name="playerId" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- <xs:complexType name="BetweenPlayersMessage" abstract="true">
- <xs:complexContent>
- <xs:extension base="PlayerMessage">
- <xs:attribute name="senderPlayerId" type="xs:unsignedLong" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- <xs:complexType name="GameMessage" abstract="true">
- <xs:attribute name="playerGuid" type="guid" use="required" />
- <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- <xs:complexType name="GameInfo">
- <xs:attribute name="gameName" type="GameName" use="required" />
- <xs:attribute name="redTeamPlayers" type="xs:unsignedLong" use="required" />
- <xs:attribute name="blueTeamPlayers" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- <xs:complexType name="Player">
- <xs:attribute name="team" type="TeamColour" use="required" />
- <xs:attribute name="type" type="PlayerType" use="required" />
- <xs:attribute name="id" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- <xs:element name="Data">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="PlayerMessage">
- <xs:sequence>
- <xs:element name="TaskFields" minOccurs="0">
- <xs:annotation>
- <xs:documentation>The state of the fields in the Task Area</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="TaskField" type="TaskField" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="GoalFields" minOccurs="0">
- <xs:annotation>
- <xs:documentation>The state of the fields in the Goals Area</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="GoalField" type="GoalField" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="Pieces" minOccurs="0" >
- <xs:annotation>
- <xs:documentation>The state of occuring pieces</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Piece" type="Piece" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="PlayerLocation" type="Location" minOccurs="0">
- <xs:annotation>
- <xs:documentation>The location in which player should place himself</xs:documentation>
- </xs:annotation>
- </xs:element>
- </xs:sequence>
- <xs:attribute type="xs:boolean" name="gameFinished" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="TestPiece">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="GameMessage" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="PlacePiece">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="GameMessage" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="PickUpPiece">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="GameMessage" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="Move">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="GameMessage">
- <xs:attribute name="direction" type="MoveType" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="Discover">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="GameMessage" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="AuthorizeKnowledgeExchange">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="GameMessage">
- <xs:attribute name="withPlayerId" type="xs:unsignedLong" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="KnowledgeExchangeRequest">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="BetweenPlayersMessage" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="AcceptExchangeRequest">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="BetweenPlayersMessage" />
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="RejectKnowledgeExchange">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="BetweenPlayersMessage">
- <xs:attribute name="permanent" type="xs:boolean" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="Game">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="PlayerMessage">
- <xs:sequence>
- <xs:element name="Players">
- <xs:complexType>
- <xs:sequence>
- <xs:element maxOccurs="unbounded" name="Player" type="Player" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="Board">
- <xs:complexType>
- <xs:attribute name="width" type="xs:unsignedInt" use="required" />
- <xs:attribute name="tasksHeight" type="xs:unsignedInt" use="required" />
- <xs:attribute name="goalsHeight" type="xs:unsignedInt" use="required" />
- </xs:complexType>
- </xs:element>
- <xs:element name="PlayerLocation" type="Location" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="RegisterGame">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="NewGameInfo" type="GameInfo" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="ConfirmGameRegistration">
- <xs:complexType>
- <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- </xs:element>
- <xs:element name="RejectGameRegistration">
- <xs:annotation>
- <xs:documentation>
- Used to inform Game Master that the proposed game cannot be added
- to the list served by Communication Server.
- The typical reason would be that the game with the same
- name already exists.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="gameName" type="GameName" use="required" />
- </xs:complexType>
- </xs:element>
- <xs:element name="GameStarted">
- <xs:annotation>
- <xs:documentation>
- Used for informing the Communication Server that a given game is started
- and should be deregistered from the list of games available on server
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- </xs:element>
- <xs:element name="GetGames">
- <xs:complexType>
- </xs:complexType>
- </xs:element>
- <xs:element name="RegisteredGames">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="GameInfo" type="GameInfo" minOccurs="0" maxOccurs="unbounded" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="JoinGame">
- <xs:complexType>
- <xs:attribute name="gameName" type="GameName" use="required" />
- <xs:attribute name="preferredTeam" type="TeamColour" use="required">
- <xs:annotation>
- <xs:documentation>Possible values: red|blue</xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="preferredRole" type="PlayerType" use="required">
- <xs:annotation>
- <xs:documentation>Possible values: leader|member</xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="playerId" type="xs:unsignedLong" use="optional">
- <xs:annotation>
- <xs:documentation>Id is assigned by a communication server when player wishes to join a game and that way passed to a game master</xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- </xs:element>
- <xs:element name="ConfirmJoiningGame">
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="PlayerMessage">
- <xs:sequence>
- <xs:element name="PlayerDefinition" type="Player" />
- </xs:sequence>
- <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
- <xs:attribute name="privateGuid" type="guid" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="RejectJoiningGame">
- <xs:annotation>
- <xs:documentation>
- Used to inform Player that he cannot join a game of a given name.
- The typical reason would be that the game has no vacant positions.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:complexContent>
- <xs:extension base="PlayerMessage">
- <xs:attribute name="gameName" type="GameName" use="required" />
- </xs:extension>
- </xs:complexContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="GameMasterDisconnected">
- <xs:annotation>
- <xs:documentation>
- A message used to inform Players that Game Master has disconnected
- (or otherwise failed). Player should react as if the game had been
- properly finished: reset its state and try to join another game
- with the same name.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- </xs:element>
- <xs:element name="PlayerDisconnected">
- <xs:annotation>
- <xs:documentation>
- A message used to inform Game Master that a Player has disconnected
- (or otherwise failed). Game Master should react by logging that fact
- as a Disconnected event in its games CSV log.
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="playerId" type="xs:unsignedLong" use="required" />
- </xs:complexType>
- </xs:element>
- </xs:schema>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement