示例#1
0
        private void DoShipList(Socket socket)
        {
            var writer  = new PacketWriter();
            var entries = new List <ShipEntry>();

            for (var i = 1; i < 11; i++)
            {
                var entry = new ShipEntry
                {
                    order  = (ushort)i,
                    number = (uint)i,
                    status = i == 2 ? ShipStatus.Online : ShipStatus.Offline, // Maybe move to Config?
                    name   = String.Format("Ship{0:0#}", i),
                    ip     = PolarisApp.BindAddress.GetAddressBytes()
                };

                entries.Add(entry);
            }

            PacketHeader header = new PacketHeader(8 + Marshal.SizeOf(typeof(ShipEntry)) * entries.Count + 12, 0x11, 0x3D, 0x4, 0x0);

            writer.WriteStruct(header);
            writer.WriteMagic((uint)entries.Count, 0xE418, 81);

            foreach (var entry in entries)
            {
                writer.WriteStruct(entry);
            }

            writer.Write((Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
            writer.Write(1);

            socket.Send(writer.ToArray());
            socket.Close();
        }
        private unsafe void DoShipList(Socket socket)
        {
            PacketWriter     writer  = new PacketWriter();
            List <ShipEntry> entries = new List <ShipEntry>();

            for (int i = 1; i < 11; i++)
            {
                ShipEntry entry = new ShipEntry();
                entry.order  = (ushort)i;
                entry.number = (uint)i;
                entry.status = ShipStatus.Online;
                entry.name   = String.Format("Ship{0:0#}", i);
                entry.ip     = PolarisApp.BindAddress.GetAddressBytes();
                entries.Add(entry);
            }
            writer.WriteStruct(new PacketHeader(Marshal.SizeOf(typeof(ShipEntry)) * entries.Count + 12, 0x11, 0x3D, 0x4, 0x0));
            writer.WriteMagic((uint)entries.Count, 0xE418, 81);
            foreach (ShipEntry entry in entries)
            {
                writer.WriteStruct(entry);
            }

            writer.Write((Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
            writer.Write((Int32)1);

            socket.Send(writer.ToArray());
            socket.Close();
        }