protected override PacketData ProcessData(IClient sender, Guid cid, object command, dynamic data)
        {
            var userCommand = (UserGameCommand)command;

            var dataToReturn = new PacketData(cid, command, data);

            switch (userCommand)
            {
                case UserGameCommand.Unknown:
                    break;
                case UserGameCommand.PlayerJoin:

                    sender.UserToken = cid;
                    var dataToSendOther = new PacketData(cid, command, data);
                    SendRespone(Clients.Where(x=>!x.Value.Equals(sender)).Select(x => x.Value), dataToSendOther);

                    foreach (var client in Clients.Where(x => !x.Value.Equals(sender)).Select(x => x.Value))
                    {
                        var dataToReturnSender = new PacketData((Guid?)client.UserToken, command, data);
                        SendRespone(Clients.Where(x => x.Value.Equals(sender)).Select(x => x.Value), dataToReturnSender);
                    }

                    return null;

                    break;
                case UserGameCommand.PlayerLeave:

                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            return dataToReturn;
        }
 protected virtual void SendRespone(IEnumerable<IClient> clientsToSend, PacketData userData, PacketDataType dataType = PacketDataType.Unknown)
 {
     if (OnResponseDataCallBack != null)
     {
         var e = new ResponseDataEventArgs() { ClientsToSend = clientsToSend, UserDataArgs = new PacketContainer(dataType, userData) };
         OnResponseDataCallBack(this, e);
     }
 }
        protected override PacketData ProcessData(IClient sender, Guid cid, object command, dynamic data)
        {
            var userCommand = (ActionGameCommand)command;

            var dataToReturn = new PacketData(cid, command, data);

            switch (userCommand)
            {
                case ActionGameCommand.Unknown:
                    break;
                case ActionGameCommand.Move:

                    SendRespone(Clients.All().Select(x => x.Value), dataToReturn);
                    return null;

                    break;
                default:
                    break;
            }

            return dataToReturn;
        }
 protected override PacketData ProcessData(IClient sender, Guid cid, object command, dynamic data)
 {
     var dataToReturn = new PacketData(cid, command, data);
     return dataToReturn;
 }
 public PacketContainer(PacketDataType dataType, PacketData data)
 {
     DataType = dataType;
     DataObject = data;
 }
 protected override sealed void SendRespone(IEnumerable<IClient> clientsToSend, PacketData userData, PacketDataType dataType = PacketDataType.Unknown)
 {
     base.SendRespone(clientsToSend, userData, DataType);
 }
 public PacketContainer ReceiveData(IClient sender, PacketData userData)
 {
     return new PacketContainer(DataType, ProcessData(sender, userData.Cid ?? Guid.Empty, Enum.ToObject(CommadType, userData.Command), userData.Data));
 }