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)); }