Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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!");
            }
        }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
 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);
 }
Exemplo n.º 6
0
        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);

        }
Exemplo n.º 7
0
 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);
 }
Exemplo n.º 8
0
 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);
 }
Exemplo n.º 9
0
 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);
 }
Exemplo n.º 10
0
        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());
        }
Exemplo n.º 11
0
 public static void BeginSendPackage(RemoteInvokeMethod remoteMethod)
 {
     var bytes = RemoteInvokeMethod.WriteToStream(remoteMethod);
     Network.Instance.Client.Send(bytes, bytes.Length, 0);
 }