예제 #1
0
        public SendPacket CreatePacket()
        {
            byte[] returnBytes = new byte[4096];

            LongPlainPacketHeader head = new LongPlainPacketHeader
            {
                Type        = Type.LongPlain,
                HeadCode    = HeadCodeSc.ConnectServerData,
                HeadSubCode = HeadSubCodeSc.ServerList
            };

            ushort count = 0;

            foreach (ServerObject server in server.Servers)
            {
                if (server.Visible == false)
                {
                    continue;
                }

                if (server.LastUpdateDate.AddSeconds(5) < DateTime.Now)
                {
                    continue;
                }

                ServerListEntryPart serverListEntryPart = new ServerListEntryPart()
                {
                    ServerCode = server.ServerCode,
                    Percent    = server.Percent,
                    PlayType   = server.PlayType,
                };
                System.Buffer.BlockCopy(serverListEntryPart.GetBytes(), 0, returnBytes, Marshal.SizeOf(typeof(ServerListEntryPart)) * count, Marshal.SizeOf(typeof(ServerListEntryPart)));
                ++count;
            }

            int size = (Marshal.SizeOf(typeof(ScServerListPacket))
                        + Marshal.SizeOf(typeof(ServerListEntryPart)) * count);

            head.SetSize((ushort)size);

            ScServerListPacket packet = new ScServerListPacket {
                Head = head
            };

            packet.SetCount(count);

            return(new SendPacket {
                Size = size, Packet = packet.GetBytes()
                                      .Combine(returnBytes)
            });
        }
예제 #2
0
        public SendPacket CreatePacket()
        {
            int size = Marshal.SizeOf(typeof(ScNewsContentPacket));
            LongPlainPacketHeader head = new LongPlainPacketHeader
            {
                Type        = Type.LongPlain,
                HeadCode    = HeadCodeSc.ConnectServerCustomData,
                HeadSubCode = HeadSubCodeSc.NewsContent
            };

            head.SetSize((ushort)size);

            ScNewsContentPacket packet = new ScNewsContentPacket
            {
                Day        = 1,
                Month      = 1,
                Year       = 2019,
                DateColor  = 0xFFFFFFFF,
                TitleColor = 0xFFFFFFFF,
                TextColor  = 0xFFFFFFFF,
                Head       = head,
                TextSize   = 0
            };

            const string newsTitle = "Example news";

            packet.Title = Program.ConvertStringToBytes(newsTitle, 20);

            const string newsContent = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eu luctus massa, vitae bibendum arcu. Etiam a enim eget quam vulputate luctus. Nullam sed nisi posuere, aliquet lacus mattis, condimentum metus. Pellentesque tincidunt ut ante vel venenatis. Nulla elementum placerat mi ac venenatis. Ut eleifend tellus et tellus euismod auctor. Ut dignissim, arcu id pulvinar auctor, odio est tincidunt justo, sed sagittis ligula nisl sit amet nulla. Integer sed tempus arcu, vel cursus velit. Vestibulum in commodo dolor. Morbi eu mi orci. ";

            packet.Content = Program.ConvertStringToBytes(newsContent, 2048);

            packet.TextSize = 538;

            return(new SendPacket {
                Size = size, Packet = packet.GetBytes()
            });
        }