Exemplo n.º 1
0
        public void OnNext(Notification value)
        {
            ushort command;

            byte[] payload;
            switch (value)
            {
            case EntityNotification entityNotification:
                command = (ushort)OfficialCommand.EntityNotification;
                payload = Serializer.Serialize(entityNotification);
                break;

            case BlockChangedNotification chunkNotification:
                command = (ushort)OfficialCommand.ChunkNotification;
                payload = Serializer.Serialize(chunkNotification);
                break;

            default:
                return;
            }
            var package = packagePool.Get();

            package.Command = command;
            package.Payload = payload;
            client.SendPackageAndRelase(package);
        }
Exemplo n.º 2
0
        private void BuildAndSendPackage(byte[] data, OfficialCommand officialCommand)
        {
            var package = packagePool.Get();

            package.Payload = data;
            package.Command = (ushort)officialCommand;
            SendPackageAndRelase(package);
        }
        public Awaiter Load(out IChunkColumn column, Guid universeGuid, IPlanet planet, Index2 columnIndex)
        {
            var package = packagePool.Get();

            package.Command = (ushort)OfficialCommand.LoadColumn;

            using (var memoryStream = new MemoryStream())
                using (var binaryWriter = new BinaryWriter(memoryStream))
                {
                    binaryWriter.Write(universeGuid.ToByteArray());
                    binaryWriter.Write(planet.Id);
                    binaryWriter.Write(columnIndex.X);
                    binaryWriter.Write(columnIndex.Y);

                    package.Payload = memoryStream.ToArray();
                }
            column = new ChunkColumn(planet);
            var awaiter = GetAwaiter(column, package.UId);

            client.SendPackageAndRelase(package);

            return(awaiter);
        }