﻿//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.18444
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Pong.WebService {
    using System.Runtime.Serialization;
    using System;
    
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="GameMode", Namespace="http://schemas.datacontract.org/2004/07/GMRPongWCF")]
    public enum GameMode : int {
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        Classical = 0,
        
        [System.Runtime.Serialization.EnumMemberAttribute()]
        PingPong = 1,
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Game", Namespace="http://schemas.datacontract.org/2004/07/GMRPongWCF")]
    [System.SerializableAttribute()]
    public partial class Game : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Ball _ballField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.GameMode _gameModeField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int _hField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Paddle _leftPaddleField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Paddle _rightPaddleField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int _wField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int paddleHField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int paddleWField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int score1Field;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int score2Field;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Ball _ball {
            get {
                return this._ballField;
            }
            set {
                if ((object.ReferenceEquals(this._ballField, value) != true)) {
                    this._ballField = value;
                    this.RaisePropertyChanged("_ball");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.GameMode _gameMode {
            get {
                return this._gameModeField;
            }
            set {
                if ((this._gameModeField.Equals(value) != true)) {
                    this._gameModeField = value;
                    this.RaisePropertyChanged("_gameMode");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int _h {
            get {
                return this._hField;
            }
            set {
                if ((this._hField.Equals(value) != true)) {
                    this._hField = value;
                    this.RaisePropertyChanged("_h");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Paddle _leftPaddle {
            get {
                return this._leftPaddleField;
            }
            set {
                if ((object.ReferenceEquals(this._leftPaddleField, value) != true)) {
                    this._leftPaddleField = value;
                    this.RaisePropertyChanged("_leftPaddle");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Paddle _rightPaddle {
            get {
                return this._rightPaddleField;
            }
            set {
                if ((object.ReferenceEquals(this._rightPaddleField, value) != true)) {
                    this._rightPaddleField = value;
                    this.RaisePropertyChanged("_rightPaddle");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int _w {
            get {
                return this._wField;
            }
            set {
                if ((this._wField.Equals(value) != true)) {
                    this._wField = value;
                    this.RaisePropertyChanged("_w");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int paddleH {
            get {
                return this.paddleHField;
            }
            set {
                if ((this.paddleHField.Equals(value) != true)) {
                    this.paddleHField = value;
                    this.RaisePropertyChanged("paddleH");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int paddleW {
            get {
                return this.paddleWField;
            }
            set {
                if ((this.paddleWField.Equals(value) != true)) {
                    this.paddleWField = value;
                    this.RaisePropertyChanged("paddleW");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int score1 {
            get {
                return this.score1Field;
            }
            set {
                if ((this.score1Field.Equals(value) != true)) {
                    this.score1Field = value;
                    this.RaisePropertyChanged("score1");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int score2 {
            get {
                return this.score2Field;
            }
            set {
                if ((this.score2Field.Equals(value) != true)) {
                    this.score2Field = value;
                    this.RaisePropertyChanged("score2");
                }
            }
        }
        
        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.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Ball", Namespace="http://schemas.datacontract.org/2004/07/GMRPongWCF")]
    [System.SerializableAttribute()]
    public partial class Ball : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Position _positionField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int _rField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Speed _speedField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Position _position {
            get {
                return this._positionField;
            }
            set {
                if ((object.ReferenceEquals(this._positionField, value) != true)) {
                    this._positionField = value;
                    this.RaisePropertyChanged("_position");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int _r {
            get {
                return this._rField;
            }
            set {
                if ((this._rField.Equals(value) != true)) {
                    this._rField = value;
                    this.RaisePropertyChanged("_r");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Speed _speed {
            get {
                return this._speedField;
            }
            set {
                if ((object.ReferenceEquals(this._speedField, value) != true)) {
                    this._speedField = value;
                    this.RaisePropertyChanged("_speed");
                }
            }
        }
        
        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.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Paddle", Namespace="http://schemas.datacontract.org/2004/07/GMRPongWCF")]
    [System.SerializableAttribute()]
    public partial class Paddle : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int _hField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Position _positionField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private Pong.WebService.Speed _speedField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private int _wField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int _h {
            get {
                return this._hField;
            }
            set {
                if ((this._hField.Equals(value) != true)) {
                    this._hField = value;
                    this.RaisePropertyChanged("_h");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Position _position {
            get {
                return this._positionField;
            }
            set {
                if ((object.ReferenceEquals(this._positionField, value) != true)) {
                    this._positionField = value;
                    this.RaisePropertyChanged("_position");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public Pong.WebService.Speed _speed {
            get {
                return this._speedField;
            }
            set {
                if ((object.ReferenceEquals(this._speedField, value) != true)) {
                    this._speedField = value;
                    this.RaisePropertyChanged("_speed");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public int _w {
            get {
                return this._wField;
            }
            set {
                if ((this._wField.Equals(value) != true)) {
                    this._wField = value;
                    this.RaisePropertyChanged("_w");
                }
            }
        }
        
        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.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Position", Namespace="http://schemas.datacontract.org/2004/07/GMRPongWCF")]
    [System.SerializableAttribute()]
    public partial class Position : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private float _xField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private float _yField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public float _x {
            get {
                return this._xField;
            }
            set {
                if ((this._xField.Equals(value) != true)) {
                    this._xField = value;
                    this.RaisePropertyChanged("_x");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public float _y {
            get {
                return this._yField;
            }
            set {
                if ((this._yField.Equals(value) != true)) {
                    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));
            }
        }
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
    [System.Runtime.Serialization.DataContractAttribute(Name="Speed", Namespace="http://schemas.datacontract.org/2004/07/GMRPongWCF")]
    [System.SerializableAttribute()]
    public partial class Speed : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
        
        [System.NonSerializedAttribute()]
        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private float _xField;
        
        [System.Runtime.Serialization.OptionalFieldAttribute()]
        private float _yField;
        
        [global::System.ComponentModel.BrowsableAttribute(false)]
        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
            get {
                return this.extensionDataField;
            }
            set {
                this.extensionDataField = value;
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public float _x {
            get {
                return this._xField;
            }
            set {
                if ((this._xField.Equals(value) != true)) {
                    this._xField = value;
                    this.RaisePropertyChanged("_x");
                }
            }
        }
        
        [System.Runtime.Serialization.DataMemberAttribute()]
        public float _y {
            get {
                return this._yField;
            }
            set {
                if ((this._yField.Equals(value) != true)) {
                    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));
            }
        }
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    [System.ServiceModel.ServiceContractAttribute(ConfigurationName="WebService.IGMRPongService")]
    public interface IGMRPongService {
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/AddGame", ReplyAction="http://tempuri.org/IGMRPongService/AddGameResponse")]
        void AddGame(string name, int width, int height);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/JoinGame", ReplyAction="http://tempuri.org/IGMRPongService/JoinGameResponse")]
        void JoinGame(string name);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/SetGameMode", ReplyAction="http://tempuri.org/IGMRPongService/SetGameModeResponse")]
        void SetGameMode(string name, Pong.WebService.GameMode mode);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/LeaveGame", ReplyAction="http://tempuri.org/IGMRPongService/LeaveGameResponse")]
        void LeaveGame(string name);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/CheckActiveGame", ReplyAction="http://tempuri.org/IGMRPongService/CheckActiveGameResponse")]
        bool CheckActiveGame(string name);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/RemoveGame", ReplyAction="http://tempuri.org/IGMRPongService/RemoveGameResponse")]
        void RemoveGame(string name);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/GetGameNames", ReplyAction="http://tempuri.org/IGMRPongService/GetGameNamesResponse")]
        string[] GetGameNames();
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/IsFull", ReplyAction="http://tempuri.org/IGMRPongService/IsFullResponse")]
        bool IsFull(string name);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/GetGame", ReplyAction="http://tempuri.org/IGMRPongService/GetGameResponse")]
        Pong.WebService.Game GetGame(string name);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/GetScore", ReplyAction="http://tempuri.org/IGMRPongService/GetScoreResponse")]
        int GetScore(string name, int player);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/MoveBall", ReplyAction="http://tempuri.org/IGMRPongService/MoveBallResponse")]
        void MoveBall(string name, int speedX, int speedY);
        
        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IGMRPongService/MovePaddle", ReplyAction="http://tempuri.org/IGMRPongService/MovePaddleResponse")]
        void MovePaddle(string name, int playerIndex, int newYValue);
    }
    
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public interface IGMRPongServiceChannel : Pong.WebService.IGMRPongService, System.ServiceModel.IClientChannel {
    }
    
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
    public partial class GMRPongServiceClient : System.ServiceModel.ClientBase<Pong.WebService.IGMRPongService>, Pong.WebService.IGMRPongService {
        
        public GMRPongServiceClient() {
        }
        
        public GMRPongServiceClient(string endpointConfigurationName) : 
                base(endpointConfigurationName) {
        }
        
        public GMRPongServiceClient(string endpointConfigurationName, string remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public GMRPongServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(endpointConfigurationName, remoteAddress) {
        }
        
        public GMRPongServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
                base(binding, remoteAddress) {
        }
        
        public void AddGame(string name, int width, int height) {
            base.Channel.AddGame(name, width, height);
        }
        
        public void JoinGame(string name) {
            base.Channel.JoinGame(name);
        }
        
        public void SetGameMode(string name, Pong.WebService.GameMode mode) {
            base.Channel.SetGameMode(name, mode);
        }
        
        public void LeaveGame(string name) {
            base.Channel.LeaveGame(name);
        }
        
        public bool CheckActiveGame(string name) {
            return base.Channel.CheckActiveGame(name);
        }
        
        public void RemoveGame(string name) {
            base.Channel.RemoveGame(name);
        }
        
        public string[] GetGameNames() {
            return base.Channel.GetGameNames();
        }
        
        public bool IsFull(string name) {
            return base.Channel.IsFull(name);
        }
        
        public Pong.WebService.Game GetGame(string name) {
            return base.Channel.GetGame(name);
        }
        
        public int GetScore(string name, int player) {
            return base.Channel.GetScore(name, player);
        }
        
        public void MoveBall(string name, int speedX, int speedY) {
            base.Channel.MoveBall(name, speedX, speedY);
        }
        
        public void MovePaddle(string name, int playerIndex, int newYValue) {
            base.Channel.MovePaddle(name, playerIndex, newYValue);
        }
    }
}
