public static void OnRoomList(this RoomServer roomServer, Session session, bool nolock = false, bool nostart = false) { #if DEBUG Logger.Debug("roomlist"); #endif using (PacketWriter wrtier = new PacketWriter(20)) { int count = 0; wrtier.Write((byte)RoomMessage.RoomList); wrtier.Write(0); lock (roomServer.DuelServers) { foreach (DuelServer srv in roomServer.DuelServers) { lock (srv.Rooms) { foreach (GameConfig config in srv.Rooms.Values) { count++; wrtier.Write(srv.Port); wrtier.Write(srv.NeedAuth); wrtier.WriteUnicode(config.Name, 20); wrtier.WriteUnicode(config.BanList, 20); wrtier.WriteUnicode(config.RoomString, 20); wrtier.Write(config.IsStart); } } } } //重写长度 wrtier.SetPosition(1); wrtier.Write(count); session.Send(wrtier.Content); } }