summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Worthe <justin.worthe@entelect.co.za>2013-10-14 19:33:05 +0200
committerJustin Worthe <justin.worthe@entelect.co.za>2013-10-14 19:33:05 +0200
commit26210d7b73f37e30d1b5ca88e2275fd01caf5d72 (patch)
treeadb848e49b7d55456ae3a86957f4c9f09eb68913
Initial commit with the Mono Rot Bot
-rw-r--r--Entelect.BattleCity.Challenge.sln20
-rw-r--r--Entelect.BattleCity.Challenge/AiAgent.cs98
-rw-r--r--Entelect.BattleCity.Challenge/App.config21
-rw-r--r--Entelect.BattleCity.Challenge/ChallengeService.wsdl316
-rw-r--r--Entelect.BattleCity.Challenge/Entelect.BattleCity.Challenge.csproj109
-rw-r--r--Entelect.BattleCity.Challenge/GameInProgress.cs64
-rw-r--r--Entelect.BattleCity.Challenge/Move.cs19
-rw-r--r--Entelect.BattleCity.Challenge/Program.cs16
-rw-r--r--Entelect.BattleCity.Challenge/Properties/AssemblyInfo.cs36
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/ChallengeService.wsdl294
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.delta.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.game.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.loginResponse.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionResponse.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.state.datasource10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.cs1104
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.svcmap31
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration.svcinfo10
-rw-r--r--Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration91.svcinfo201
-rw-r--r--Entelect.BattleCity.Challenge/compile.bat1
-rw-r--r--Entelect.BattleCity.Challenge/start.bat1
23 files changed, 2411 insertions, 0 deletions
diff --git a/Entelect.BattleCity.Challenge.sln b/Entelect.BattleCity.Challenge.sln
new file mode 100644
index 0000000..2b5f5ea
--- /dev/null
+++ b/Entelect.BattleCity.Challenge.sln
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Entelect.BattleCity.Challenge", "Entelect.BattleCity.Challenge\Entelect.BattleCity.Challenge.csproj", "{B9BDD8BB-6AB8-47A9-810C-F689C5CE3259}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B9BDD8BB-6AB8-47A9-810C-F689C5CE3259}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B9BDD8BB-6AB8-47A9-810C-F689C5CE3259}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B9BDD8BB-6AB8-47A9-810C-F689C5CE3259}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B9BDD8BB-6AB8-47A9-810C-F689C5CE3259}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Entelect.BattleCity.Challenge/AiAgent.cs b/Entelect.BattleCity.Challenge/AiAgent.cs
new file mode 100644
index 0000000..e577bcb
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/AiAgent.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+
+namespace Entelect.BattleCity.Challenge
+{
+ class AiAgent
+ {
+ private int _tankId;
+
+ public AiAgent()
+ {
+
+ }
+
+ public AiAgent(int tankId)
+ {
+ _tankId = tankId;
+ }
+
+ public Move GetBestMove(ChallengeService.state?[][] state, ChallengeService.game game, int tankIndex)
+ {
+ ChallengeService.player me = null;
+ ChallengeService.player enemy = null;
+ ChallengeService.unit tank = null;
+ bool bulletInAir = false;
+
+ string playerName = game.playerName;
+ foreach (ChallengeService.player player in game.players)
+ {
+ if (player.name.Equals(playerName))
+ {
+ me = player;
+ }
+ else
+ {
+ enemy = player;
+ }
+ }
+ if (me.units.Length <= tankIndex)
+ {
+ return null;
+ }
+ tank = me.units[tankIndex];
+
+ if (me.bullets != null)
+ {
+ foreach (var bullet in me.bullets)
+ {
+ if (Math.Abs(bullet.x - tank.x) < state.Length / 4)
+ {
+ bulletInAir = true;
+ }
+ }
+ }
+
+ var enemyBase = enemy.@base;
+
+ ChallengeService.direction chosenDirection =
+ tank.y != enemyBase.y ?
+ (
+ tank.y > enemyBase.y ?
+ ChallengeService.direction.UP :
+ ChallengeService.direction.DOWN
+ ) :
+ (
+ tank.x > enemyBase.x ?
+ ChallengeService.direction.LEFT :
+ ChallengeService.direction.RIGHT
+ );
+
+ if (chosenDirection != tank.direction || bulletInAir)
+ {
+ return MoveInDirection(tank.id, chosenDirection);
+ }
+ else
+ {
+ return new Move(tank.id, ChallengeService.action.FIRE);
+ }
+ }
+
+ public Move MoveInDirection(int tankId, ChallengeService.direction direction)
+ {
+ switch (direction)
+ {
+ case ChallengeService.direction.UP:
+ return new Move(tankId, ChallengeService.action.UP);
+ case ChallengeService.direction.DOWN:
+ return new Move(tankId, ChallengeService.action.DOWN);
+ case ChallengeService.direction.LEFT:
+ return new Move(tankId, ChallengeService.action.LEFT);
+ case ChallengeService.direction.RIGHT:
+ return new Move(tankId, ChallengeService.action.RIGHT);
+ default:
+ return new Move(tankId, ChallengeService.action.NONE);
+ }
+ }
+ }
+}
diff --git a/Entelect.BattleCity.Challenge/App.config b/Entelect.BattleCity.Challenge/App.config
new file mode 100644
index 0000000..ef162fd
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/App.config
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
+ </startup>
+ <system.serviceModel>
+ <bindings>
+ <basicHttpBinding>
+ <binding name="ChallengeServiceSoapBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
+ <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
+ maxArrayLength="16348" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+ </binding>
+ </basicHttpBinding>
+ </bindings>
+ <client>
+ <endpoint address="http://localhost:9090/ChallengePort" binding="basicHttpBinding"
+ bindingConfiguration="ChallengeServiceSoapBinding" contract="ChallengeService.Challenge"
+ name="ChallengePort" />
+ </client>
+ </system.serviceModel>
+</configuration> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/ChallengeService.wsdl b/Entelect.BattleCity.Challenge/ChallengeService.wsdl
new file mode 100644
index 0000000..225faee
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/ChallengeService.wsdl
@@ -0,0 +1,316 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions name="ChallengeService" targetNamespace="http://challenge.entelect.co.za/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://challenge.entelect.co.za/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <wsdl:types>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://challenge.entelect.co.za/" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://challenge.entelect.co.za/">
+ <xs:element name="getStatus" type="tns:getStatus"/>
+ <xs:element name="getStatusResponse" type="tns:getStatusResponse"/>
+ <xs:element name="login" type="tns:login"/>
+ <xs:element name="loginResponse" type="tns:loginResponse"/>
+ <xs:element name="setAction" type="tns:setAction"/>
+ <xs:element name="setActionResponse" type="tns:setActionResponse"/>
+ <xs:element name="setActions" type="tns:setActions"/>
+ <xs:element name="setActionsResponse" type="tns:setActionsResponse"/>
+ <xs:complexType name="getStatus">
+ <xs:sequence/>
+ </xs:complexType>
+ <xs:complexType name="getStatusResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:game"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="game">
+ <xs:sequence>
+ <xs:element name="currentTick" type="xs:int"/>
+ <xs:element minOccurs="0" name="events" type="tns:events"/>
+ <xs:element name="millisecondsToNextTick" type="xs:long"/>
+ <xs:element minOccurs="0" name="nextTickTime" type="xs:dateTime"/>
+ <xs:element minOccurs="0" name="playerName" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="players" nillable="true" type="tns:player"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="events">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="blockEvents" nillable="true" type="tns:blockEvent"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="unitEvents" nillable="true" type="tns:unitEvent"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="blockEvent">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="newState" type="tns:state"/>
+ <xs:element minOccurs="0" name="point" type="tns:point"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="point">
+ <xs:sequence>
+ <xs:element name="x" type="xs:int"/>
+ <xs:element name="y" type="xs:int"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="unitEvent">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="bullet" type="tns:bullet"/>
+ <xs:element name="tickTime" type="xs:int"/>
+ <xs:element minOccurs="0" name="unit" type="tns:unit"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="bullet">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="direction" type="tns:direction"/>
+ <xs:element name="id" type="xs:int"/>
+ <xs:element name="x" type="xs:int"/>
+ <xs:element name="y" type="xs:int"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="unit">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="action" type="tns:action"/>
+ <xs:element minOccurs="0" name="direction" type="tns:direction"/>
+ <xs:element name="id" type="xs:int"/>
+ <xs:element name="x" type="xs:int"/>
+ <xs:element name="y" type="xs:int"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="player">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="base" type="tns:base"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="bullets" nillable="true" type="tns:bullet"/>
+ <xs:element minOccurs="0" name="name" type="xs:string"/>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="units" nillable="true" type="tns:unit"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="base">
+ <xs:sequence>
+ <xs:element name="x" type="xs:int"/>
+ <xs:element name="y" type="xs:int"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType abstract="true" name="abstractCollection">
+ <xs:sequence/>
+ </xs:complexType>
+ <xs:complexType abstract="true" name="abstractList">
+ <xs:complexContent>
+ <xs:extension base="tns:abstractCollection">
+ <xs:sequence/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="arrayList">
+ <xs:complexContent>
+ <xs:extension base="tns:abstractList">
+ <xs:sequence/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="setAction">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:int"/>
+ <xs:element minOccurs="0" name="arg1" type="tns:action"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="setActionResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:delta"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="delta">
+ <xs:sequence>
+ <xs:element name="millisecondsToNextTick" type="xs:long"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="login">
+ <xs:sequence/>
+ </xs:complexType>
+ <xs:complexType name="loginResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:board"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="board">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="states" nillable="true" type="tns:stateArray"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="setActions">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="arg0" type="tns:action"/>
+ <xs:element minOccurs="0" name="arg1" type="tns:action"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="setActionsResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:delta"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="state">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="FULL"/>
+ <xs:enumeration value="EMPTY"/>
+ <xs:enumeration value="OUT_OF_BOUNDS"/>
+ <xs:enumeration value="NONE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="direction">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="NONE"/>
+ <xs:enumeration value="UP"/>
+ <xs:enumeration value="DOWN"/>
+ <xs:enumeration value="LEFT"/>
+ <xs:enumeration value="RIGHT"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="action">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="NONE"/>
+ <xs:enumeration value="UP"/>
+ <xs:enumeration value="DOWN"/>
+ <xs:enumeration value="LEFT"/>
+ <xs:enumeration value="RIGHT"/>
+ <xs:enumeration value="FIRE"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType final="#all" name="stateArray">
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="item" nillable="true" type="tns:state"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="EndOfGameException" type="tns:EndOfGameException"/>
+ <xs:complexType name="EndOfGameException">
+ <xs:sequence/>
+ </xs:complexType>
+ <xs:element name="NoBlameException" type="tns:NoBlameException"/>
+ <xs:complexType name="NoBlameException">
+ <xs:sequence/>
+ </xs:complexType>
+</xs:schema>
+ </wsdl:types>
+ <wsdl:message name="setAction">
+ <wsdl:part name="parameters" element="tns:setAction">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="EndOfGameException">
+ <wsdl:part name="EndOfGameException" element="tns:EndOfGameException">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="setActions">
+ <wsdl:part name="parameters" element="tns:setActions">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="login">
+ <wsdl:part name="parameters" element="tns:login">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="setActionsResponse">
+ <wsdl:part name="parameters" element="tns:setActionsResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="setActionResponse">
+ <wsdl:part name="parameters" element="tns:setActionResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="loginResponse">
+ <wsdl:part name="parameters" element="tns:loginResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="NoBlameException">
+ <wsdl:part name="NoBlameException" element="tns:NoBlameException">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="getStatus">
+ <wsdl:part name="parameters" element="tns:getStatus">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="getStatusResponse">
+ <wsdl:part name="parameters" element="tns:getStatusResponse">
+ </wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="Challenge">
+ <wsdl:operation name="getStatus">
+ <wsdl:input name="getStatus" message="tns:getStatus">
+ </wsdl:input>
+ <wsdl:output name="getStatusResponse" message="tns:getStatusResponse">
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="setAction">
+ <wsdl:input name="setAction" message="tns:setAction">
+ </wsdl:input>
+ <wsdl:output name="setActionResponse" message="tns:setActionResponse">
+ </wsdl:output>
+ <wsdl:fault name="EndOfGameException" message="tns:EndOfGameException">
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="login">
+ <wsdl:input name="login" message="tns:login">
+ </wsdl:input>
+ <wsdl:output name="loginResponse" message="tns:loginResponse">
+ </wsdl:output>
+ <wsdl:fault name="NoBlameException" message="tns:NoBlameException">
+ </wsdl:fault>
+ <wsdl:fault name="EndOfGameException" message="tns:EndOfGameException">
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="setActions">
+ <wsdl:input name="setActions" message="tns:setActions">
+ </wsdl:input>
+ <wsdl:output name="setActionsResponse" message="tns:setActionsResponse">
+ </wsdl:output>
+ <wsdl:fault name="EndOfGameException" message="tns:EndOfGameException">
+ </wsdl:fault>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="ChallengeServiceSoapBinding" type="tns:Challenge">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <wsdl:operation name="getStatus">
+ <soap:operation soapAction="" style="document"/>
+ <wsdl:input name="getStatus">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="getStatusResponse">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="setAction">
+ <soap:operation soapAction="" style="document"/>
+ <wsdl:input name="setAction">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="setActionResponse">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="EndOfGameException">
+ <soap:fault name="EndOfGameException" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="login">
+ <soap:operation soapAction="" style="document"/>
+ <wsdl:input name="login">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="loginResponse">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="NoBlameException">
+ <soap:fault name="NoBlameException" use="literal"/>
+ </wsdl:fault>
+ <wsdl:fault name="EndOfGameException">
+ <soap:fault name="EndOfGameException" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="setActions">
+ <soap:operation soapAction="" style="document"/>
+ <wsdl:input name="setActions">
+ <soap:body use="literal"/>
+ </wsdl:input>
+ <wsdl:output name="setActionsResponse">
+ <soap:body use="literal"/>
+ </wsdl:output>
+ <wsdl:fault name="EndOfGameException">
+ <soap:fault name="EndOfGameException" use="literal"/>
+ </wsdl:fault>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="ChallengeService">
+ <wsdl:port name="ChallengePort" binding="tns:ChallengeServiceSoapBinding">
+ <soap:address location="http://localhost:9090/ChallengePort"/>
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions>
diff --git a/Entelect.BattleCity.Challenge/Entelect.BattleCity.Challenge.csproj b/Entelect.BattleCity.Challenge/Entelect.BattleCity.Challenge.csproj
new file mode 100644
index 0000000..83bc159
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Entelect.BattleCity.Challenge.csproj
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+ <PropertyGroup>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProjectGuid>{B9BDD8BB-6AB8-47A9-810C-F689C5CE3259}</ProjectGuid>
+ <OutputType>Exe</OutputType>
+ <AppDesignerFolder>Properties</AppDesignerFolder>
+ <RootNamespace>Entelect.BattleCity.Challenge</RootNamespace>
+ <AssemblyName>Entelect.BattleCity.Challenge</AssemblyName>
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugSymbols>true</DebugSymbols>
+ <DebugType>full</DebugType>
+ <Optimize>false</Optimize>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>DEBUG;TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ <DebugType>pdbonly</DebugType>
+ <Optimize>true</Optimize>
+ <OutputPath>bin\Release\</OutputPath>
+ <DefineConstants>TRACE</DefineConstants>
+ <ErrorReport>prompt</ErrorReport>
+ <WarningLevel>4</WarningLevel>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Runtime.Serialization" />
+ <Reference Include="System.ServiceModel" />
+ <Reference Include="System.Xml.Linq" />
+ <Reference Include="System.Data.DataSetExtensions" />
+ <Reference Include="Microsoft.CSharp" />
+ <Reference Include="System.Data" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="AiAgent.cs" />
+ <Compile Include="GameInProgress.cs" />
+ <Compile Include="Move.cs" />
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Service References\ChallengeService\Reference.cs">
+ <AutoGen>True</AutoGen>
+ <DesignTime>True</DesignTime>
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </Compile>
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="App.config" />
+ <None Include="ChallengeService.wsdl" />
+ <None Include="Service References\ChallengeService\ChallengeService.wsdl" />
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.delta.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.game.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.loginResponse.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.setActionResponse.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ <None Include="Service References\ChallengeService\Entelect.BattleCity.Challenge.ChallengeService.state.datasource">
+ <DependentUpon>Reference.svcmap</DependentUpon>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadata Include="Service References\" />
+ </ItemGroup>
+ <ItemGroup>
+ <WCFMetadataStorage Include="Service References\ChallengeService\" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\ChallengeService\configuration91.svcinfo" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\ChallengeService\configuration.svcinfo" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="Service References\ChallengeService\Reference.svcmap">
+ <Generator>WCF Proxy Generator</Generator>
+ <LastGenOutput>Reference.cs</LastGenOutput>
+ </None>
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+ <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
+ Other similar extension points exist, see Microsoft.Common.targets.
+ <Target Name="BeforeBuild">
+ </Target>
+ <Target Name="AfterBuild">
+ </Target>
+ -->
+</Project> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/GameInProgress.cs b/Entelect.BattleCity.Challenge/GameInProgress.cs
new file mode 100644
index 0000000..61fa436
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/GameInProgress.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Windows;
+using System.Collections.Generic;
+using System.Threading;
+
+namespace Entelect.BattleCity.Challenge
+{
+ class GameInProgress
+ {
+ public static void run(ChallengeService.ChallengeClient service, ChallengeService.state?[][] state)
+ {
+ AiAgent agent = new AiAgent();
+
+ while (true)
+ {
+ var game = service.getStatus();
+ long currentTick = DateTime.Now.Ticks;
+ long nextTick = game.nextTickTime.Ticks;
+ if (currentTick > nextTick)
+ {
+ continue;
+ }
+
+ // AI logic here
+ Move tank1Move = agent.GetBestMove(state, game, 0);
+ Move tank2Move = agent.GetBestMove(state, game, 1);
+
+ if (tank1Move != null)
+ {
+ service.setActionAsync(tank1Move.Tank, tank1Move.Action);
+ }
+ if (tank2Move != null)
+ {
+ service.setActionAsync(tank2Move.Tank, tank2Move.Action);
+ }
+
+ currentTick = DateTime.Now.Ticks;
+
+ long sleepTime = nextTick - currentTick;
+ if (sleepTime < 0L)
+ {
+ Console.Error.WriteLine("ERROR: Gone passed the next tick time");
+ }
+ else
+ {
+ Console.WriteLine("Sleeping until {1} for {0}ms", sleepTime, game.nextTickTime.ToString());
+ }
+
+ try
+ {
+ Thread.Sleep(TimeSpan.FromTicks(sleepTime));
+ }
+ catch (Exception)
+ {
+ continue;
+ }
+ //while (startTick < nextTick)
+ //{
+ // startTick += (DateTime.Now.Ticks - startTick);
+ //}
+ }
+ }
+ }
+}
diff --git a/Entelect.BattleCity.Challenge/Move.cs b/Entelect.BattleCity.Challenge/Move.cs
new file mode 100644
index 0000000..1813c59
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Move.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Entelect.BattleCity.Challenge
+{
+ class Move
+ {
+ public int Tank { get; private set; }
+ public ChallengeService.action Action { get; private set; }
+
+ public Move(int tank, ChallengeService.action action)
+ {
+ Tank = tank;
+ Action = action;
+ }
+ }
+}
diff --git a/Entelect.BattleCity.Challenge/Program.cs b/Entelect.BattleCity.Challenge/Program.cs
new file mode 100644
index 0000000..5764426
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Program.cs
@@ -0,0 +1,16 @@
+using System.ServiceModel;
+
+namespace Entelect.BattleCity.Challenge
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ var endpointConfigurationName = "ChallengePort";
+ var address = new EndpointAddress(args[0]);
+ var service = new ChallengeService.ChallengeClient(endpointConfigurationName, address);
+ var state = service.login();
+ GameInProgress.run(service, state);
+ }
+ }
+}
diff --git a/Entelect.BattleCity.Challenge/Properties/AssemblyInfo.cs b/Entelect.BattleCity.Challenge/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..97397b4
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Entelect.BattleCity.Challenge")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Microsoft")]
+[assembly: AssemblyProduct("Entelect.BattleCity.Challenge")]
+[assembly: AssemblyCopyright("Copyright © Microsoft 2013")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("8e9e513d-3232-4b92-83dd-13ec54131857")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/ChallengeService.wsdl b/Entelect.BattleCity.Challenge/Service References/ChallengeService/ChallengeService.wsdl
new file mode 100644
index 0000000..0d7d4a9
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/ChallengeService.wsdl
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://challenge.entelect.co.za/" name="ChallengeService" targetNamespace="http://challenge.entelect.co.za/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <wsdl:types>
+ <xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://challenge.entelect.co.za/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="getStatus" type="tns:getStatus" />
+ <xs:element name="getStatusResponse" type="tns:getStatusResponse" />
+ <xs:element name="login" type="tns:login" />
+ <xs:element name="loginResponse" type="tns:loginResponse" />
+ <xs:element name="setAction" type="tns:setAction" />
+ <xs:element name="setActionResponse" type="tns:setActionResponse" />
+ <xs:element name="setActions" type="tns:setActions" />
+ <xs:element name="setActionsResponse" type="tns:setActionsResponse" />
+ <xs:complexType name="getStatus">
+ <xs:sequence />
+ </xs:complexType>
+ <xs:complexType name="getStatusResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:game" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="game">
+ <xs:sequence>
+ <xs:element name="currentTick" type="xs:int" />
+ <xs:element minOccurs="0" name="events" type="tns:events" />
+ <xs:element name="millisecondsToNextTick" type="xs:long" />
+ <xs:element minOccurs="0" name="nextTickTime" type="xs:dateTime" />
+ <xs:element minOccurs="0" name="playerName" type="xs:string" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="players" nillable="true" type="tns:player" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="events">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="blockEvents" nillable="true" type="tns:blockEvent" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="unitEvents" nillable="true" type="tns:unitEvent" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="blockEvent">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="newState" type="tns:state" />
+ <xs:element minOccurs="0" name="point" type="tns:point" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="point">
+ <xs:sequence>
+ <xs:element name="x" type="xs:int" />
+ <xs:element name="y" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="unitEvent">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="bullet" type="tns:bullet" />
+ <xs:element name="tickTime" type="xs:int" />
+ <xs:element minOccurs="0" name="unit" type="tns:unit" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="bullet">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="direction" type="tns:direction" />
+ <xs:element name="id" type="xs:int" />
+ <xs:element name="x" type="xs:int" />
+ <xs:element name="y" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="unit">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="action" type="tns:action" />
+ <xs:element minOccurs="0" name="direction" type="tns:direction" />
+ <xs:element name="id" type="xs:int" />
+ <xs:element name="x" type="xs:int" />
+ <xs:element name="y" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="player">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="base" type="tns:base" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="bullets" nillable="true" type="tns:bullet" />
+ <xs:element minOccurs="0" name="name" type="xs:string" />
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="units" nillable="true" type="tns:unit" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="base">
+ <xs:sequence>
+ <xs:element name="x" type="xs:int" />
+ <xs:element name="y" type="xs:int" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="abstractCollection" abstract="true">
+ <xs:sequence />
+ </xs:complexType>
+ <xs:complexType name="abstractList" abstract="true">
+ <xs:complexContent mixed="false">
+ <xs:extension base="tns:abstractCollection">
+ <xs:sequence />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="arrayList">
+ <xs:complexContent mixed="false">
+ <xs:extension base="tns:abstractList">
+ <xs:sequence />
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:complexType name="setAction">
+ <xs:sequence>
+ <xs:element name="arg0" type="xs:int" />
+ <xs:element minOccurs="0" name="arg1" type="tns:action" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="setActionResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:delta" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="delta">
+ <xs:sequence>
+ <xs:element name="millisecondsToNextTick" type="xs:long" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="login">
+ <xs:sequence />
+ </xs:complexType>
+ <xs:complexType name="loginResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:board" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="board">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="states" nillable="true" type="tns:stateArray" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="setActions">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="arg0" type="tns:action" />
+ <xs:element minOccurs="0" name="arg1" type="tns:action" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:complexType name="setActionsResponse">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="return" type="tns:delta" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:simpleType name="state">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="FULL" />
+ <xs:enumeration value="EMPTY" />
+ <xs:enumeration value="OUT_OF_BOUNDS" />
+ <xs:enumeration value="NONE" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="direction">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="NONE" />
+ <xs:enumeration value="UP" />
+ <xs:enumeration value="DOWN" />
+ <xs:enumeration value="LEFT" />
+ <xs:enumeration value="RIGHT" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="action">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="NONE" />
+ <xs:enumeration value="UP" />
+ <xs:enumeration value="DOWN" />
+ <xs:enumeration value="LEFT" />
+ <xs:enumeration value="RIGHT" />
+ <xs:enumeration value="FIRE" />
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="stateArray" final="#all">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" name="item" nillable="true" type="tns:state" />
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element name="EndOfGameException" type="tns:EndOfGameException" />
+ <xs:complexType name="EndOfGameException">
+ <xs:sequence />
+ </xs:complexType>
+ <xs:element name="NoBlameException" type="tns:NoBlameException" />
+ <xs:complexType name="NoBlameException">
+ <xs:sequence />
+ </xs:complexType>
+ </xs:schema>
+ </wsdl:types>
+ <wsdl:message name="setAction">
+ <wsdl:part name="parameters" element="tns:setAction" />
+ </wsdl:message>
+ <wsdl:message name="EndOfGameException">
+ <wsdl:part name="EndOfGameException" element="tns:EndOfGameException" />
+ </wsdl:message>
+ <wsdl:message name="setActions">
+ <wsdl:part name="parameters" element="tns:setActions" />
+ </wsdl:message>
+ <wsdl:message name="login">
+ <wsdl:part name="parameters" element="tns:login" />
+ </wsdl:message>
+ <wsdl:message name="setActionsResponse">
+ <wsdl:part name="parameters" element="tns:setActionsResponse" />
+ </wsdl:message>
+ <wsdl:message name="setActionResponse">
+ <wsdl:part name="parameters" element="tns:setActionResponse" />
+ </wsdl:message>
+ <wsdl:message name="loginResponse">
+ <wsdl:part name="parameters" element="tns:loginResponse" />
+ </wsdl:message>
+ <wsdl:message name="NoBlameException">
+ <wsdl:part name="NoBlameException" element="tns:NoBlameException" />
+ </wsdl:message>
+ <wsdl:message name="getStatus">
+ <wsdl:part name="parameters" element="tns:getStatus" />
+ </wsdl:message>
+ <wsdl:message name="getStatusResponse">
+ <wsdl:part name="parameters" element="tns:getStatusResponse" />
+ </wsdl:message>
+ <wsdl:portType name="Challenge">
+ <wsdl:operation name="getStatus">
+ <wsdl:input name="getStatus" message="tns:getStatus" />
+ <wsdl:output name="getStatusResponse" message="tns:getStatusResponse" />
+ </wsdl:operation>
+ <wsdl:operation name="setAction">
+ <wsdl:input name="setAction" message="tns:setAction" />
+ <wsdl:output name="setActionResponse" message="tns:setActionResponse" />
+ <wsdl:fault name="EndOfGameException" message="tns:EndOfGameException" />
+ </wsdl:operation>
+ <wsdl:operation name="login">
+ <wsdl:input name="login" message="tns:login" />
+ <wsdl:output name="loginResponse" message="tns:loginResponse" />
+ <wsdl:fault name="NoBlameException" message="tns:NoBlameException" />
+ <wsdl:fault name="EndOfGameException" message="tns:EndOfGameException" />
+ </wsdl:operation>
+ <wsdl:operation name="setActions">
+ <wsdl:input name="setActions" message="tns:setActions" />
+ <wsdl:output name="setActionsResponse" message="tns:setActionsResponse" />
+ <wsdl:fault name="EndOfGameException" message="tns:EndOfGameException" />
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="ChallengeServiceSoapBinding" type="tns:Challenge">
+ <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="getStatus">
+ <soap:operation soapAction="" style="document" />
+ <wsdl:input name="getStatus">
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="getStatusResponse">
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ <wsdl:operation name="setAction">
+ <soap:operation soapAction="" style="document" />
+ <wsdl:input name="setAction">
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="setActionResponse">
+ <soap:body use="literal" />
+ </wsdl:output>
+ <wsdl:fault name="EndOfGameException">
+ <soap:fault use="literal" name="EndOfGameException" namespace="" />
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="login">
+ <soap:operation soapAction="" style="document" />
+ <wsdl:input name="login">
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="loginResponse">
+ <soap:body use="literal" />
+ </wsdl:output>
+ <wsdl:fault name="NoBlameException">
+ <soap:fault use="literal" name="NoBlameException" namespace="" />
+ </wsdl:fault>
+ <wsdl:fault name="EndOfGameException">
+ <soap:fault use="literal" name="EndOfGameException" namespace="" />
+ </wsdl:fault>
+ </wsdl:operation>
+ <wsdl:operation name="setActions">
+ <soap:operation soapAction="" style="document" />
+ <wsdl:input name="setActions">
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output name="setActionsResponse">
+ <soap:body use="literal" />
+ </wsdl:output>
+ <wsdl:fault name="EndOfGameException">
+ <soap:fault use="literal" name="EndOfGameException" namespace="" />
+ </wsdl:fault>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="ChallengeService">
+ <wsdl:port name="ChallengePort" binding="tns:ChallengeServiceSoapBinding">
+ <soap:address location="http://localhost:9090/ChallengePort" />
+ </wsdl:port>
+ </wsdl:service>
+</wsdl:definitions> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.delta.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.delta.datasource
new file mode 100644
index 0000000..ba30593
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.delta.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="delta" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.delta, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.game.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.game.datasource
new file mode 100644
index 0000000..295ea08
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.game.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="game" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.game, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse.datasource
new file mode 100644
index 0000000..6701b3e
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="getStatusResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.loginResponse.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.loginResponse.datasource
new file mode 100644
index 0000000..edbecd4
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.loginResponse.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="loginResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.loginResponse, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionResponse.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionResponse.datasource
new file mode 100644
index 0000000..4992e1b
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionResponse.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="setActionResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.setActionResponse, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse.datasource
new file mode 100644
index 0000000..4ea2b14
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="setActionsResponse" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.state.datasource b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.state.datasource
new file mode 100644
index 0000000..caa94f3
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Entelect.BattleCity.Challenge.ChallengeService.state.datasource
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ This file is automatically generated by Visual Studio .Net. It is
+ used to store generic object data source configuration information.
+ Renaming the file extension or editing the content of this file may
+ cause the file to be unrecognizable by the program.
+-->
+<GenericObjectDataSource DisplayName="state" Version="1.0" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
+ <TypeInfo>Entelect.BattleCity.Challenge.ChallengeService.state, Service References.ChallengeService.Reference.cs, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null</TypeInfo>
+</GenericObjectDataSource> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.cs b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.cs
new file mode 100644
index 0000000..f7fda50
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.cs
@@ -0,0 +1,1104 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.18051
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace Entelect.BattleCity.Challenge.ChallengeService {
+
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class EndOfGameException : object, System.ComponentModel.INotifyPropertyChanged {
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class delta : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private long millisecondsToNextTickField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public long millisecondsToNextTick {
+ get {
+ return this.millisecondsToNextTickField;
+ }
+ set {
+ this.millisecondsToNextTickField = value;
+ this.RaisePropertyChanged("millisecondsToNextTick");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class @base : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private int xField;
+
+ private int yField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public int x {
+ get {
+ return this.xField;
+ }
+ set {
+ this.xField = value;
+ this.RaisePropertyChanged("x");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public int y {
+ get {
+ return this.yField;
+ }
+ set {
+ this.yField = value;
+ this.RaisePropertyChanged("y");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class player : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private @base baseField;
+
+ private bullet[] bulletsField;
+
+ private string nameField;
+
+ private unit[] unitsField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public @base @base {
+ get {
+ return this.baseField;
+ }
+ set {
+ this.baseField = value;
+ this.RaisePropertyChanged("base");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute("bullets", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true, Order=1)]
+ public bullet[] bullets {
+ get {
+ return this.bulletsField;
+ }
+ set {
+ this.bulletsField = value;
+ this.RaisePropertyChanged("bullets");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]
+ public string name {
+ get {
+ return this.nameField;
+ }
+ set {
+ this.nameField = value;
+ this.RaisePropertyChanged("name");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute("units", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true, Order=3)]
+ public unit[] units {
+ get {
+ return this.unitsField;
+ }
+ set {
+ this.unitsField = value;
+ this.RaisePropertyChanged("units");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class bullet : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private direction directionField;
+
+ private bool directionFieldSpecified;
+
+ private int idField;
+
+ private int xField;
+
+ private int yField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public direction direction {
+ get {
+ return this.directionField;
+ }
+ set {
+ this.directionField = value;
+ this.RaisePropertyChanged("direction");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool directionSpecified {
+ get {
+ return this.directionFieldSpecified;
+ }
+ set {
+ this.directionFieldSpecified = value;
+ this.RaisePropertyChanged("directionSpecified");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public int id {
+ get {
+ return this.idField;
+ }
+ set {
+ this.idField = value;
+ this.RaisePropertyChanged("id");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]
+ public int x {
+ get {
+ return this.xField;
+ }
+ set {
+ this.xField = value;
+ this.RaisePropertyChanged("x");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]
+ public int y {
+ get {
+ return this.yField;
+ }
+ set {
+ this.yField = value;
+ this.RaisePropertyChanged("y");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public enum direction {
+
+ /// <remarks/>
+ NONE,
+
+ /// <remarks/>
+ UP,
+
+ /// <remarks/>
+ DOWN,
+
+ /// <remarks/>
+ LEFT,
+
+ /// <remarks/>
+ RIGHT,
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class unit : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private action actionField;
+
+ private bool actionFieldSpecified;
+
+ private direction directionField;
+
+ private bool directionFieldSpecified;
+
+ private int idField;
+
+ private int xField;
+
+ private int yField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public action action {
+ get {
+ return this.actionField;
+ }
+ set {
+ this.actionField = value;
+ this.RaisePropertyChanged("action");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool actionSpecified {
+ get {
+ return this.actionFieldSpecified;
+ }
+ set {
+ this.actionFieldSpecified = value;
+ this.RaisePropertyChanged("actionSpecified");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public direction direction {
+ get {
+ return this.directionField;
+ }
+ set {
+ this.directionField = value;
+ this.RaisePropertyChanged("direction");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool directionSpecified {
+ get {
+ return this.directionFieldSpecified;
+ }
+ set {
+ this.directionFieldSpecified = value;
+ this.RaisePropertyChanged("directionSpecified");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]
+ public int id {
+ get {
+ return this.idField;
+ }
+ set {
+ this.idField = value;
+ this.RaisePropertyChanged("id");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]
+ public int x {
+ get {
+ return this.xField;
+ }
+ set {
+ this.xField = value;
+ this.RaisePropertyChanged("x");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=4)]
+ public int y {
+ get {
+ return this.yField;
+ }
+ set {
+ this.yField = value;
+ this.RaisePropertyChanged("y");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public enum action {
+
+ /// <remarks/>
+ NONE,
+
+ /// <remarks/>
+ UP,
+
+ /// <remarks/>
+ DOWN,
+
+ /// <remarks/>
+ LEFT,
+
+ /// <remarks/>
+ RIGHT,
+
+ /// <remarks/>
+ FIRE,
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class unitEvent : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private bullet bulletField;
+
+ private int tickTimeField;
+
+ private unit unitField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public bullet bullet {
+ get {
+ return this.bulletField;
+ }
+ set {
+ this.bulletField = value;
+ this.RaisePropertyChanged("bullet");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public int tickTime {
+ get {
+ return this.tickTimeField;
+ }
+ set {
+ this.tickTimeField = value;
+ this.RaisePropertyChanged("tickTime");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]
+ public unit unit {
+ get {
+ return this.unitField;
+ }
+ set {
+ this.unitField = value;
+ this.RaisePropertyChanged("unit");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class point : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private int xField;
+
+ private int yField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public int x {
+ get {
+ return this.xField;
+ }
+ set {
+ this.xField = value;
+ this.RaisePropertyChanged("x");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public int y {
+ get {
+ return this.yField;
+ }
+ set {
+ this.yField = value;
+ this.RaisePropertyChanged("y");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class blockEvent : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private state newStateField;
+
+ private bool newStateFieldSpecified;
+
+ private point pointField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public state newState {
+ get {
+ return this.newStateField;
+ }
+ set {
+ this.newStateField = value;
+ this.RaisePropertyChanged("newState");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool newStateSpecified {
+ get {
+ return this.newStateFieldSpecified;
+ }
+ set {
+ this.newStateFieldSpecified = value;
+ this.RaisePropertyChanged("newStateSpecified");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public point point {
+ get {
+ return this.pointField;
+ }
+ set {
+ this.pointField = value;
+ this.RaisePropertyChanged("point");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public enum state {
+
+ /// <remarks/>
+ FULL,
+
+ /// <remarks/>
+ EMPTY,
+
+ /// <remarks/>
+ OUT_OF_BOUNDS,
+
+ /// <remarks/>
+ NONE,
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class events : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private blockEvent[] blockEventsField;
+
+ private unitEvent[] unitEventsField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute("blockEvents", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true, Order=0)]
+ public blockEvent[] blockEvents {
+ get {
+ return this.blockEventsField;
+ }
+ set {
+ this.blockEventsField = value;
+ this.RaisePropertyChanged("blockEvents");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute("unitEvents", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true, Order=1)]
+ public unitEvent[] unitEvents {
+ get {
+ return this.unitEventsField;
+ }
+ set {
+ this.unitEventsField = value;
+ this.RaisePropertyChanged("unitEvents");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class game : object, System.ComponentModel.INotifyPropertyChanged {
+
+ private int currentTickField;
+
+ private events eventsField;
+
+ private long millisecondsToNextTickField;
+
+ private System.DateTime nextTickTimeField;
+
+ private bool nextTickTimeFieldSpecified;
+
+ private string playerNameField;
+
+ private player[] playersField;
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=0)]
+ public int currentTick {
+ get {
+ return this.currentTickField;
+ }
+ set {
+ this.currentTickField = value;
+ this.RaisePropertyChanged("currentTick");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=1)]
+ public events events {
+ get {
+ return this.eventsField;
+ }
+ set {
+ this.eventsField = value;
+ this.RaisePropertyChanged("events");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=2)]
+ public long millisecondsToNextTick {
+ get {
+ return this.millisecondsToNextTickField;
+ }
+ set {
+ this.millisecondsToNextTickField = value;
+ this.RaisePropertyChanged("millisecondsToNextTick");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]
+ public System.DateTime nextTickTime {
+ get {
+ return this.nextTickTimeField;
+ }
+ set {
+ this.nextTickTimeField = value;
+ this.RaisePropertyChanged("nextTickTime");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlIgnoreAttribute()]
+ public bool nextTickTimeSpecified {
+ get {
+ return this.nextTickTimeFieldSpecified;
+ }
+ set {
+ this.nextTickTimeFieldSpecified = value;
+ this.RaisePropertyChanged("nextTickTimeSpecified");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=4)]
+ public string playerName {
+ get {
+ return this.playerNameField;
+ }
+ set {
+ this.playerNameField = value;
+ this.RaisePropertyChanged("playerName");
+ }
+ }
+
+ /// <remarks/>
+ [System.Xml.Serialization.XmlElementAttribute("players", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true, Order=5)]
+ public player[] players {
+ get {
+ return this.playersField;
+ }
+ set {
+ this.playersField = value;
+ this.RaisePropertyChanged("players");
+ }
+ }
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ /// <remarks/>
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.18053")]
+ [System.SerializableAttribute()]
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.ComponentModel.DesignerCategoryAttribute("code")]
+ [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://challenge.entelect.co.za/")]
+ public partial class NoBlameException : object, System.ComponentModel.INotifyPropertyChanged {
+
+ public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+
+ protected void RaisePropertyChanged(string propertyName) {
+ System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+ if ((propertyChanged != null)) {
+ propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+ }
+ }
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ServiceModel.ServiceContractAttribute(Namespace="http://challenge.entelect.co.za/", ConfigurationName="ChallengeService.Challenge")]
+ public interface Challenge {
+
+ // CODEGEN: Parameter 'return' requires additional schema information that cannot be captured using the parameter mode. The specific attribute is 'System.Xml.Serialization.XmlElementAttribute'.
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ [return: System.ServiceModel.MessageParameterAttribute(Name="return")]
+ Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse getStatus(Entelect.BattleCity.Challenge.ChallengeService.getStatus request);
+
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse> getStatusAsync(Entelect.BattleCity.Challenge.ChallengeService.getStatus request);
+
+ // CODEGEN: Parameter 'return' requires additional schema information that cannot be captured using the parameter mode. The specific attribute is 'System.Xml.Serialization.XmlElementAttribute'.
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ [System.ServiceModel.FaultContractAttribute(typeof(Entelect.BattleCity.Challenge.ChallengeService.EndOfGameException), Action="", Name="EndOfGameException")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ [return: System.ServiceModel.MessageParameterAttribute(Name="return")]
+ Entelect.BattleCity.Challenge.ChallengeService.setActionResponse setAction(Entelect.BattleCity.Challenge.ChallengeService.setAction request);
+
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.setActionResponse> setActionAsync(Entelect.BattleCity.Challenge.ChallengeService.setAction request);
+
+ // CODEGEN: Parameter 'return' requires additional schema information that cannot be captured using the parameter mode. The specific attribute is 'System.Xml.Serialization.XmlArrayAttribute'.
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ [System.ServiceModel.FaultContractAttribute(typeof(Entelect.BattleCity.Challenge.ChallengeService.NoBlameException), Action="", Name="NoBlameException")]
+ [System.ServiceModel.FaultContractAttribute(typeof(Entelect.BattleCity.Challenge.ChallengeService.EndOfGameException), Action="", Name="EndOfGameException")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ [return: System.ServiceModel.MessageParameterAttribute(Name="return")]
+ Entelect.BattleCity.Challenge.ChallengeService.loginResponse login(Entelect.BattleCity.Challenge.ChallengeService.login request);
+
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.loginResponse> loginAsync(Entelect.BattleCity.Challenge.ChallengeService.login request);
+
+ // CODEGEN: Parameter 'return' requires additional schema information that cannot be captured using the parameter mode. The specific attribute is 'System.Xml.Serialization.XmlElementAttribute'.
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ [System.ServiceModel.FaultContractAttribute(typeof(Entelect.BattleCity.Challenge.ChallengeService.EndOfGameException), Action="", Name="EndOfGameException")]
+ [System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
+ [return: System.ServiceModel.MessageParameterAttribute(Name="return")]
+ Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse setActions(Entelect.BattleCity.Challenge.ChallengeService.setActions request);
+
+ [System.ServiceModel.OperationContractAttribute(Action="", ReplyAction="*")]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse> setActionsAsync(Entelect.BattleCity.Challenge.ChallengeService.setActions request);
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="getStatus", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class getStatus {
+
+ public getStatus() {
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="getStatusResponse", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class getStatusResponse {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=0)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public Entelect.BattleCity.Challenge.ChallengeService.game @return;
+
+ public getStatusResponse() {
+ }
+
+ public getStatusResponse(Entelect.BattleCity.Challenge.ChallengeService.game @return) {
+ this.@return = @return;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="setAction", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class setAction {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=0)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public int arg0;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=1)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public Entelect.BattleCity.Challenge.ChallengeService.action arg1;
+
+ public setAction() {
+ }
+
+ public setAction(int arg0, Entelect.BattleCity.Challenge.ChallengeService.action arg1) {
+ this.arg0 = arg0;
+ this.arg1 = arg1;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="setActionResponse", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class setActionResponse {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=0)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public Entelect.BattleCity.Challenge.ChallengeService.delta @return;
+
+ public setActionResponse() {
+ }
+
+ public setActionResponse(Entelect.BattleCity.Challenge.ChallengeService.delta @return) {
+ this.@return = @return;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="login", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class login {
+
+ public login() {
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="loginResponse", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class loginResponse {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=0)]
+ [System.Xml.Serialization.XmlArrayAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ [System.Xml.Serialization.XmlArrayItemAttribute("states", Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ [System.Xml.Serialization.XmlArrayItemAttribute("item", Form=System.Xml.Schema.XmlSchemaForm.Unqualified, NestingLevel=1)]
+ public System.Nullable<state>[][] @return;
+
+ public loginResponse() {
+ }
+
+ public loginResponse(System.Nullable<state>[][] @return) {
+ this.@return = @return;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="setActions", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class setActions {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=0)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public Entelect.BattleCity.Challenge.ChallengeService.action arg0;
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=1)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public Entelect.BattleCity.Challenge.ChallengeService.action arg1;
+
+ public setActions() {
+ }
+
+ public setActions(Entelect.BattleCity.Challenge.ChallengeService.action arg0, Entelect.BattleCity.Challenge.ChallengeService.action arg1) {
+ this.arg0 = arg0;
+ this.arg1 = arg1;
+ }
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ [System.ServiceModel.MessageContractAttribute(WrapperName="setActionsResponse", WrapperNamespace="http://challenge.entelect.co.za/", IsWrapped=true)]
+ public partial class setActionsResponse {
+
+ [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://challenge.entelect.co.za/", Order=0)]
+ [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
+ public Entelect.BattleCity.Challenge.ChallengeService.delta @return;
+
+ public setActionsResponse() {
+ }
+
+ public setActionsResponse(Entelect.BattleCity.Challenge.ChallengeService.delta @return) {
+ this.@return = @return;
+ }
+ }
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public interface ChallengeChannel : Entelect.BattleCity.Challenge.ChallengeService.Challenge, System.ServiceModel.IClientChannel {
+ }
+
+ [System.Diagnostics.DebuggerStepThroughAttribute()]
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+ public partial class ChallengeClient : System.ServiceModel.ClientBase<Entelect.BattleCity.Challenge.ChallengeService.Challenge>, Entelect.BattleCity.Challenge.ChallengeService.Challenge {
+
+ public ChallengeClient() {
+ }
+
+ public ChallengeClient(string endpointConfigurationName) :
+ base(endpointConfigurationName) {
+ }
+
+ public ChallengeClient(string endpointConfigurationName, string remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public ChallengeClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(endpointConfigurationName, remoteAddress) {
+ }
+
+ public ChallengeClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) :
+ base(binding, remoteAddress) {
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse Entelect.BattleCity.Challenge.ChallengeService.Challenge.getStatus(Entelect.BattleCity.Challenge.ChallengeService.getStatus request) {
+ return base.Channel.getStatus(request);
+ }
+
+ public Entelect.BattleCity.Challenge.ChallengeService.game getStatus() {
+ Entelect.BattleCity.Challenge.ChallengeService.getStatus inValue = new Entelect.BattleCity.Challenge.ChallengeService.getStatus();
+ Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse retVal = ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).getStatus(inValue);
+ return retVal.@return;
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse> Entelect.BattleCity.Challenge.ChallengeService.Challenge.getStatusAsync(Entelect.BattleCity.Challenge.ChallengeService.getStatus request) {
+ return base.Channel.getStatusAsync(request);
+ }
+
+ public System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.getStatusResponse> getStatusAsync() {
+ Entelect.BattleCity.Challenge.ChallengeService.getStatus inValue = new Entelect.BattleCity.Challenge.ChallengeService.getStatus();
+ return ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).getStatusAsync(inValue);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ Entelect.BattleCity.Challenge.ChallengeService.setActionResponse Entelect.BattleCity.Challenge.ChallengeService.Challenge.setAction(Entelect.BattleCity.Challenge.ChallengeService.setAction request) {
+ return base.Channel.setAction(request);
+ }
+
+ public Entelect.BattleCity.Challenge.ChallengeService.delta setAction(int arg0, Entelect.BattleCity.Challenge.ChallengeService.action arg1) {
+ Entelect.BattleCity.Challenge.ChallengeService.setAction inValue = new Entelect.BattleCity.Challenge.ChallengeService.setAction();
+ inValue.arg0 = arg0;
+ inValue.arg1 = arg1;
+ Entelect.BattleCity.Challenge.ChallengeService.setActionResponse retVal = ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).setAction(inValue);
+ return retVal.@return;
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.setActionResponse> Entelect.BattleCity.Challenge.ChallengeService.Challenge.setActionAsync(Entelect.BattleCity.Challenge.ChallengeService.setAction request) {
+ return base.Channel.setActionAsync(request);
+ }
+
+ public System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.setActionResponse> setActionAsync(int arg0, Entelect.BattleCity.Challenge.ChallengeService.action arg1) {
+ Entelect.BattleCity.Challenge.ChallengeService.setAction inValue = new Entelect.BattleCity.Challenge.ChallengeService.setAction();
+ inValue.arg0 = arg0;
+ inValue.arg1 = arg1;
+ return ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).setActionAsync(inValue);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ Entelect.BattleCity.Challenge.ChallengeService.loginResponse Entelect.BattleCity.Challenge.ChallengeService.Challenge.login(Entelect.BattleCity.Challenge.ChallengeService.login request) {
+ return base.Channel.login(request);
+ }
+
+ public System.Nullable<state>[][] login() {
+ Entelect.BattleCity.Challenge.ChallengeService.login inValue = new Entelect.BattleCity.Challenge.ChallengeService.login();
+ Entelect.BattleCity.Challenge.ChallengeService.loginResponse retVal = ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).login(inValue);
+ return retVal.@return;
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.loginResponse> Entelect.BattleCity.Challenge.ChallengeService.Challenge.loginAsync(Entelect.BattleCity.Challenge.ChallengeService.login request) {
+ return base.Channel.loginAsync(request);
+ }
+
+ public System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.loginResponse> loginAsync() {
+ Entelect.BattleCity.Challenge.ChallengeService.login inValue = new Entelect.BattleCity.Challenge.ChallengeService.login();
+ return ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).loginAsync(inValue);
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse Entelect.BattleCity.Challenge.ChallengeService.Challenge.setActions(Entelect.BattleCity.Challenge.ChallengeService.setActions request) {
+ return base.Channel.setActions(request);
+ }
+
+ public Entelect.BattleCity.Challenge.ChallengeService.delta setActions(Entelect.BattleCity.Challenge.ChallengeService.action arg0, Entelect.BattleCity.Challenge.ChallengeService.action arg1) {
+ Entelect.BattleCity.Challenge.ChallengeService.setActions inValue = new Entelect.BattleCity.Challenge.ChallengeService.setActions();
+ inValue.arg0 = arg0;
+ inValue.arg1 = arg1;
+ Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse retVal = ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).setActions(inValue);
+ return retVal.@return;
+ }
+
+ [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
+ System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse> Entelect.BattleCity.Challenge.ChallengeService.Challenge.setActionsAsync(Entelect.BattleCity.Challenge.ChallengeService.setActions request) {
+ return base.Channel.setActionsAsync(request);
+ }
+
+ public System.Threading.Tasks.Task<Entelect.BattleCity.Challenge.ChallengeService.setActionsResponse> setActionsAsync(Entelect.BattleCity.Challenge.ChallengeService.action arg0, Entelect.BattleCity.Challenge.ChallengeService.action arg1) {
+ Entelect.BattleCity.Challenge.ChallengeService.setActions inValue = new Entelect.BattleCity.Challenge.ChallengeService.setActions();
+ inValue.arg0 = arg0;
+ inValue.arg1 = arg1;
+ return ((Entelect.BattleCity.Challenge.ChallengeService.Challenge)(this)).setActionsAsync(inValue);
+ }
+ }
+}
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.svcmap b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.svcmap
new file mode 100644
index 0000000..8cd1468
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/Reference.svcmap
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="e8b44f4a-1597-4192-bc17-217131128c7c" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+ <ClientOptions>
+ <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
+ <GenerateTaskBasedAsynchronousMethod>true</GenerateTaskBasedAsynchronousMethod>
+ <EnableDataBinding>true</EnableDataBinding>
+ <ExcludedTypes />
+ <ImportXmlTypes>false</ImportXmlTypes>
+ <GenerateInternalTypes>false</GenerateInternalTypes>
+ <GenerateMessageContracts>false</GenerateMessageContracts>
+ <NamespaceMappings />
+ <CollectionMappings />
+ <GenerateSerializableTypes>true</GenerateSerializableTypes>
+ <Serializer>Auto</Serializer>
+ <UseSerializerForFaults>true</UseSerializerForFaults>
+ <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+ <ReferencedAssemblies />
+ <ReferencedDataContractTypes />
+ <ServiceContractMappings />
+ </ClientOptions>
+ <MetadataSources>
+ <MetadataSource Address="C:\Workspace\Development\Entelect\C#.bot - starter pack\Entelect.BattleCity.Challenge\ChallengeService.wsdl" Protocol="file" SourceId="1" />
+ </MetadataSources>
+ <Metadata>
+ <MetadataFile FileName="ChallengeService.wsdl" MetadataType="Wsdl" ID="8f3e4ac3-8695-416b-ac20-ca2048dd4ef5" SourceId="1" SourceUrl="file:///C:/Workspace/Development/Entelect/C%23.bot - starter pack/Entelect.BattleCity.Challenge/ChallengeService.wsdl" />
+ </Metadata>
+ <Extensions>
+ <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+ <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+ </Extensions>
+</ReferenceGroup> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration.svcinfo b/Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration.svcinfo
new file mode 100644
index 0000000..6bbf9a9
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration.svcinfo
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+ <behaviors />
+ <bindings>
+ <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data name=&quot;ChallengeServiceSoapBinding&quot; /&gt;" bindingType="basicHttpBinding" name="ChallengeServiceSoapBinding" />
+ </bindings>
+ <endpoints>
+ <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:9090/ChallengePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;ChallengeServiceSoapBinding&quot; contract=&quot;ChallengeService.Challenge&quot; name=&quot;ChallengePort&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:9090/ChallengePort&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;ChallengeServiceSoapBinding&quot; contract=&quot;ChallengeService.Challenge&quot; name=&quot;ChallengePort&quot; /&gt;" contractName="ChallengeService.Challenge" name="ChallengePort" />
+ </endpoints>
+</configurationSnapshot> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration91.svcinfo b/Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration91.svcinfo
new file mode 100644
index 0000000..fea37b0
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/Service References/ChallengeService/configuration91.svcinfo
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="ClmKNZHJo7S7Ca55qfTBnf2SHrs=">
+ <bindingConfigurations>
+ <bindingConfiguration bindingType="basicHttpBinding" name="ChallengeServiceSoapBinding">
+ <properties>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>ChallengeServiceSoapBinding</serializedValue>
+ </property>
+ <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>StrongWildcard</serializedValue>
+ </property>
+ <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>65536</serializedValue>
+ </property>
+ <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="false" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>0</serializedValue>
+ </property>
+ <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.Text.UTF8Encoding</serializedValue>
+ </property>
+ <property path="/transferMode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Buffered</serializedValue>
+ </property>
+ <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Text</serializedValue>
+ </property>
+ <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
+ </property>
+ <property path="/security/mode" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
+ </property>
+ <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>None</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Never</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>TransportSelected</serializedValue>
+ </property>
+ <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>(Collection)</serializedValue>
+ </property>
+ <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
+ </property>
+ <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>UserName</serializedValue>
+ </property>
+ <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="false" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>Default</serializedValue>
+ </property>
+ </properties>
+ </bindingConfiguration>
+ </bindingConfigurations>
+ <endpoints>
+ <endpoint name="ChallengePort" contract="ChallengeService.Challenge" bindingType="basicHttpBinding" address="http://localhost:9090/ChallengePort" bindingConfiguration="ChallengeServiceSoapBinding">
+ <properties>
+ <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>http://localhost:9090/ChallengePort</serializedValue>
+ </property>
+ <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>basicHttpBinding</serializedValue>
+ </property>
+ <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>ChallengeServiceSoapBinding</serializedValue>
+ </property>
+ <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>ChallengeService.Challenge</serializedValue>
+ </property>
+ <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+ </property>
+ <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>&lt;Header /&gt;</serializedValue>
+ </property>
+ <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+ </property>
+ <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+ </property>
+ <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+ </property>
+ <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+ </property>
+ <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>My</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>LocalMachine</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+ </property>
+ <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>False</serializedValue>
+ </property>
+ <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue>ChallengePort</serializedValue>
+ </property>
+ <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+ <serializedValue />
+ </property>
+ </properties>
+ </endpoint>
+ </endpoints>
+</SavedWcfConfigurationInformation> \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/compile.bat b/Entelect.BattleCity.Challenge/compile.bat
new file mode 100644
index 0000000..4f3d152
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/compile.bat
@@ -0,0 +1 @@
+MSBuild.exe /property:Configuration=Release Entelect.BattleCity.Challenge.csproj \ No newline at end of file
diff --git a/Entelect.BattleCity.Challenge/start.bat b/Entelect.BattleCity.Challenge/start.bat
new file mode 100644
index 0000000..521c376
--- /dev/null
+++ b/Entelect.BattleCity.Challenge/start.bat
@@ -0,0 +1 @@
+"bin/Release/Entelect.BattleCity.Challenge.exe" %1 \ No newline at end of file