Пример #1
0
        private void HandleJoinProject(NetPeer peer, NetDataReader reader)
        {
            var userId      = Guid.ParseExact(reader.GetString(), "N");
            var projectId   = Guid.ParseExact(reader.GetString(), "N");
            var projectHash = new byte[16];

            reader.GetBytes(projectHash, projectHash.Length);

            var result = _projectService
                         .JoinProjectAsync(projectId, userId, projectHash)
                         .GetAwaiter()
                         .GetResult();

            var writer = new NetDataWriter();

            if (result.IsSuccess)
            {
                var joinResult = result.Value;
                writer.Put((int)RequestIds.S2C.JoinProjectSuccess);
                writer.Put(projectId.ToString("N"));
                writer.Put((int)joinResult);
            }
            else
            {
                writer.Put((int)RequestIds.S2C.JoinProjectFailed);
                writer.Put(result.Error);
            }

            peer.Send(writer, DeliveryMethod.ReliableOrdered);
        }
Пример #2
0
        protected void ParseProtoBytes(NetDataReader reader, ref string name, ref byte[] bytes)
        {
            var protoName = reader.GetString();
            var count     = reader.GetInt();

            reader.GetBytes(bytes, count);
        }
Пример #3
0
        /// <summary>
        /// 更新插值字段
        /// </summary>
        public void ReadDirtyFields(NetDataReader reader)
        {
            ulong timestep = 0;

            reader.GetBytes(_readDirtyFlags, 1);
            if ((0x1 & _readDirtyFlags[0]) != 0)
            {
                if (positionInterpolation.Enabled)
                {
                    positionInterpolation.target   = reader.GetVector3();
                    positionInterpolation.Timestep = timestep;
                }
                else
                {
                    _position = reader.GetVector3();
                    this.RunChange_Position(timestep);
                }
            }
            if ((0x2 & _readDirtyFlags[0]) != 0)
            {
                if (rotationInterpolation.Enabled)
                {
                    rotationInterpolation.target   = reader.GetQuaternion();
                    rotationInterpolation.Timestep = timestep;
                }
                else
                {
                    _rotation = reader.GetQuaternion();
                    this.RunChange_Rotation(timestep);
                }
            }
        }
Пример #4
0
        public void Deserialize(NetDataReader reader)
        {
            TechBonuses      = new PlayerTechBonuses();
            Inventory        = new StorageComponent(4);
            ReactorStorage   = new StorageComponent(4);
            WarpStorage      = new StorageComponent(1);
            Forge            = new MechaForge();
            Forge.tasks      = new List <ForgeTask>();
            Forge.extraItems = new ItemPack();
            TechBonuses.Deserialize(reader);
            SandCount     = reader.GetInt();
            CoreEnergy    = reader.GetDouble();
            ReactorEnergy = reader.GetDouble();
            bool isPayloadPresent = reader.GetBool();

            if (isPayloadPresent)
            {
                int    mechaLength = reader.GetInt();
                byte[] mechaBytes  = new byte[mechaLength];
                reader.GetBytes(mechaBytes, mechaLength);
                using (MemoryStream ms = new MemoryStream(mechaBytes))
                    using (BinaryReader br = new BinaryReader(ms))
                    {
                        Inventory.Import(br);
                        ReactorStorage.Import(br);
                        WarpStorage.Import(br);
                        Forge.Import(br);
                    }
            }
        }
Пример #5
0
        public void Deserialize(NetDataReader reader)
        {
            int numQuadrants = reader.GetInt();

            byte[] bytes = new byte[ByteLength(numQuadrants)];
            reader.GetBytes(bytes, bytes.Length);
            this.QuadrantList = ByteArrayToQuadrantList(bytes, numQuadrants);
        }
Пример #6
0
        public static IPAddress GetIPAddress(this NetDataReader @this)
        {
            var bytes = new byte[@this.GetByte()];

            @this.GetBytes(bytes, bytes.Length);

            return(new IPAddress(bytes));
        }
Пример #7
0
        public void OnNetworkReceive(NetPeer peer, NetDataReader reader)
        {
            //Console.WriteLine("Data recieved");
            //Console.WriteLine(reader.GetString(100));
            var buf = new ByteBuffer(reader.GetBytes());
            var msg = ChatMessage.GetRootAsChatMessage(buf);

            Console.WriteLine(string.Format("-->{0}{1}", msg.Name, msg.Message));
        }
Пример #8
0
    public void Deserialize(NetDataReader reader)
    {
        byte[] raw = new byte[reader.AvailableBytes];
        reader.GetBytes(raw, reader.AvailableBytes);
        ClientInput inputBuf = Deserialize(raw);

        this.ClinetID   = inputBuf.ClinetID;
        this.Axis0_X    = inputBuf.Axis0_X;
        this.Axis0_Y    = inputBuf.Axis0_Y;
        this.Axis1_X    = inputBuf.Axis1_X;
        this.Axis1_Y    = inputBuf.Axis1_Y;
        this.ToogledBtn = inputBuf.ToogledBtn;
    }
Пример #9
0
        public static Key32 GetKey32(this NetDataReader @this)
        {
            var data = new byte[Key32.SIZE];

            @this.GetBytes(data, Key32.SIZE);

            if (!Key32.TryFromBytes(data, out var value))
            {
                throw new FormatException(nameof(Key32.TryFromBytes) + " returned false (should never happen; data buffer is fixed size).");
            }

            return(value);
        }
Пример #10
0
 public void OnNetworkReceive(NetPeer peer, NetDataReader reader, DeliveryMethod deliveryMethod)
 {
     if (ConnectedClient.Contains(peer))
     {
         _dataWriter.Reset();
         byte[] raw = new byte[reader.AvailableBytes];
         reader.GetBytes(raw, reader.AvailableBytes);
         _dataWriter.Put(raw);
         foreach (var client in ConnectedClient)
         {
             client.Send(_dataWriter, deliveryMethod);
         }
     }
 }
Пример #11
0
        public void OnNetworkReceive(NetPeer peer, NetDataReader reader)
        {
            try
            {
                var             type            = reader.GetByte();
                var             data            = reader.GetBytes();
                TimelineMessage timelineMessage = new TimelineMessage((TimelineMessageType)type, data);

                TimelineManager.Default.ProcessIncomingMessage(timelineMessage);
            }
            catch (Exception ex)
            {
                Console.WriteLine("[Client] Exception! " + ex.Message);
            }
        }
Пример #12
0
        public void WriteReadByteArray()
        {
            var ndw = new NetDataWriter();

            ndw.Put(new byte[] { 1, 2, 4, 8, 16, byte.MaxValue, byte.MinValue });

            var ndr           = new NetDataReader(ndw.Data);
            var readByteArray = new byte[7];

            ndr.GetBytes(readByteArray, 7);

            Assert.That(
                new byte[] { 1, 2, 4, 8, 16, byte.MaxValue, byte.MinValue },
                Is.EqualTo(readByteArray).AsCollection);
        }
Пример #13
0
        public void OnReceived(NetPeer peer, NetDataReader reader)
        {
            var key = reader.GetByte();

            if (mDispatchers.TryGetValue(key, out BaseDispatcher dispatcher))
            {
                if (dispatcher != null)
                {
                    var protoName = reader.GetString();
                    var count     = reader.GetInt();
                    var bytes     = new byte[count];
                    reader.GetBytes(bytes, count);
                    dispatcher.OnMessage(protoName, bytes);
                }
            }
        }
Пример #14
0
    public void OnNetworkReceive(NetPeer peer, NetDataReader reader, DeliveryMethod deliveryMethod)
    {
        //      byte[] raw = new byte[reader.AvailableBytes];
        //reader.GetBytes (raw, reader.AvailableBytes);
        //string str = System.Text.Encoding.ASCII.GetString (raw);
        //ClientInput input = new ClientInput ();
        //input.DecodeRawDataFromeString (str);

        //      if (input.ClinetID == _netClient.LocalPort) {
        //          Debug.Log("[YOU]  inputed>" + input.ToString());
        //      } else {
        //          Debug.Log("[OTHER]  inputed>"+ input.ToString());
        //      }
        byte[] raw = new byte[reader.AvailableBytes];
        reader.GetBytes(raw, reader.AvailableBytes);
        string str = NetdataUltility.DecodeRaw(raw);

        NetdataUltility.NetdataType dataType = NetdataUltility.NetdataType.UnknownData;
        string decoded = "";

        dataType = NetdataUltility.DepacketData(str, out decoded);
        switch (dataType)
        {
        case NetdataUltility.NetdataType.EventData:
            NetEvent nEvent = new NetEvent();
            nEvent.Decode(decoded);
            OnNetEvent(nEvent);
            break;

        case NetdataUltility.NetdataType.PlayerInputData:
            ClientInput cInput = new ClientInput();
            cInput.Decode(decoded);
            ExecuteInpute(cInput);
            break;

        case NetdataUltility.NetdataType.SyncableData:
            break;

        case NetdataUltility.NetdataType.UnknownData:
            //Maybe drop this data ??
            Debug.Log("[GameClient] receved a unknownData form server !");
            break;
        }
    }
Пример #15
0
        public override void OnMessage(NetPeer peer, NetDataReader reader)
        {
            var npcid = reader.GetLong();

            reader.GetBytes(_readDirtyFlags, 1);
            var npcView = NpcMgr.GetNpc(npcid);

            if (npcView != null)
            {
                if ((0x1 & _readDirtyFlags[0]) != 0)
                {
                    npcView.position = reader.GetVector3();
                }
                if ((0x2 & _readDirtyFlags[0]) != 0)
                {
                    npcView.rotation = reader.GetQuaternion();
                }
            }
            base.IntactTransterMessage(peer, reader);
        }
        public void OnNetworkReceive(NetPeer _netPeer, NetDataReader _netDataReader)
        {
            try
            {
                if (_netDataReader.Data == null)
                {
                    return;
                }

                NetworkTags networkTag = (NetworkTags)_netDataReader.GetInt();
                if (networkTag == NetworkTags.NT_S_Receiv_Player_Position)
                {
                    var bytes = new byte[_netDataReader.Data.Length - sizeof(int)];
                    _netDataReader.GetBytes(bytes, bytes.Length);
                    _dictionary_Server_Players_Pose[_netPeer.ConnectId].Bytes = bytes;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"OnNetworkReceive Error: {ex.Message}");
            }
        }
Пример #17
0
        public void OnNetworkReceive(NetPeer peer, NetDataReader reader)
        {
            //echo
            //peer.Send(reader.Data, SendOptions.ReliableUnordered);

            Console.WriteLine("[Server] NetworkReceive: ");

            try
            {
                ushort peerIndx = 0;
                foreach (var peerConection in TimelineServer._peerConnections)
                {
                    if (peerConection.Value.ConnectId == peer.ConnectId)
                    {
                        peerIndx = peerConection.Key;
                    }
                }

                var type = reader.GetByte();
                var data = reader.GetBytes();

                TimelineMessage timelineMessage = new TimelineMessage((TimelineMessageType)type, data);
                TimelineServer.TimelineSynchronizer.ProcessIncomingMessage(peerIndx, timelineMessage);
                TimelineManager.Default.ProcessIncomingMessage(timelineMessage);
            }
            catch (Exception ex)
            {
                Console.WriteLine("[Server] Exception! " + ex.Message);
            }

            //fragment log
            if (reader.AvailableBytes == 13218)
            {
                Console.WriteLine("[Server] TestFrag: {0}, {1}", reader.Data[0], reader.Data[13217]);
            }
        }