public static RemoteInvokeMethod ReadFromStream(MemoryStream from) { var reader = new BinaryReader(from); reader.BaseStream.Seek(0, SeekOrigin.Begin); var className = reader.ReadString(); var methodName = reader.ReadString(); var count = reader.ReadString(); var paramsCount = Convert.ToInt32(count); var parameters = new List <SerializableType>(); for (var i = 0; i < paramsCount; i++) { var type = reader.ReadString(); var objectType = Type.GetType(type); var item = Activator.CreateInstance(objectType) as SerializableType; if (UseJsonSerialization) { var json = reader.ReadString(); item = JsonToObject(json, objectType); } else { item.Deserialize(reader, objectType, item); } parameters.Add(item); } var instance = new RemoteInvokeMethod(className, methodName, parameters); return(instance); }
public void OnRecievedData(IAsyncResult ar) { var sock = (Socket)ar.AsyncState; try { var nBytesRec = sock.EndReceive(ar); if (nBytesRec > 0) { var stream = new MemoryStream(); stream.Write(Buffer, 0, Buffer.Length); object o = RemoteInvokeMethod.ReadFromStream(stream); var remoteInvoke = (RemoteInvokeMethod)o; var command = remoteInvoke.MethodName; var parameters = remoteInvoke.Parameters; var serviceName = remoteInvoke.ServiceClassName; Handler.Execute(command, serviceName, parameters); SetupRecieveCallback(sock); } else { Debug.Log("Client , disconnected" + sock.RemoteEndPoint); sock.Shutdown(SocketShutdown.Both); sock.Close(); } } catch (Exception ex) { Debug.Log(ex.Message + "Unusual error druing Recieve!"); } }
public void ChangeTeam() { var parameters = new List<SerializableType>(); var room = new LobbyInfo(Network.Instance.ClientPlayer.Id, Helper.RoomNameDisplay.text, "aurica", 6, 1); parameters.Add(room); var remoteMethod = new RemoteInvokeMethod(Command.ChangeTeam, parameters); BeginSendPackage(remoteMethod); }
public void StartGame() { var parameters = new List<SerializableType>(); GameFlow.Instance.RoomName = Helper.RoomNameDisplay.text; var room = new LobbyInfo(Network.Instance.ClientPlayer.Id, Helper.RoomNameDisplay.text, GameType.Fast.ToString(), 2, 2); parameters.Add(room); var remoteMethod = new RemoteInvokeMethod(Command.Start, parameters); BeginSendPackage(remoteMethod); }
public void Create() { var parameters = new List<SerializableType>(); GameFlow.Instance.RoomName = Helper.RoomName.text; var room = new LobbyInfo( Network.Instance.ClientPlayer.Id, Helper.RoomName.text, "Fast", 2, 1); parameters.Add(room); var remoteMethod = new RemoteInvokeMethod(Command.Create, parameters); BeginSendPackage(remoteMethod); Helper.StartButton.SetActive(true); }
public void Join(string roomName) { var parameters = new List<SerializableType>(); var room = new LobbyInfo(Network.Instance.ClientPlayer.Id, roomName, "aurica", 6, 1); GameFlow.Instance.RoomName = roomName; parameters.Add(room); var remoteMethod = new RemoteInvokeMethod(Command.Join, parameters); BeginSendPackage(remoteMethod); Helper.StartButton.SetActive(false); }
public void Logout() { var parameters = new List<SerializableType>(); var authetification = new Gambler() { Name = Network.Instance.ClientPlayer.Name, Id = Network.Instance.ClientPlayer.Id }; parameters.Add(authetification); var remoteMethod = new RemoteInvokeMethod(Command.Logout, parameters); BeginSendPackage(remoteMethod); }
public void Register() { var parameters = new List<SerializableType>(); var authetification = new Authentication { Name = Helper.Name.text, Pass = Helper.Pass.text }; parameters.Add(authetification); var remoteMethod = new RemoteInvokeMethod(Command.Register, parameters); BeginSendPackage(remoteMethod); }
public void SelectUnits() { var parameters = new List<SerializableType>() { new Units() { Creature1 = _unitsSelected.CreaturesName[1], Creature2 = _unitsSelected.CreaturesName[2], Creature3 = _unitsSelected.CreaturesName[3], Creature4 = _unitsSelected.CreaturesName[4], HeroName = _unitsSelected.HeroName, Team = Network.Instance.ClientPlayer.Team } }; var remoteMethod = new RemoteInvokeMethod("BoardBehavior", Command.SelectUnits, parameters); BeginSendPackage(remoteMethod); }
public static byte[] WriteToStream(RemoteInvokeMethod toWrite) { var stream = new MemoryStream(); var writer = new BinaryWriter(stream); writer.Write(toWrite.ServiceClassName); writer.Write(toWrite.MethodName); writer.Write(toWrite.Parameters.Count.ToString()); foreach (var parameter in toWrite.Parameters) { var type = parameter.GetType(); writer.Write(type.ToString()); if (UseJsonSerialization) { writer.Write(JsonConvert.SerializeObject(parameter)); continue; } parameter.Serialize(writer, type, parameter); } return(stream.GetBuffer()); }
public static void BeginSendPackage(RemoteInvokeMethod remoteMethod) { var bytes = RemoteInvokeMethod.WriteToStream(remoteMethod); Network.Instance.Client.Send(bytes, bytes.Length, 0); }