private static void EndRoomListSearch(List <RoomInformation.Field> fields, bool Disconnect) { if (Disconnect) { RoomWebDataBase.Disconnect(); RoomWebDataBase.RemoveAllEvent(); } if (fields.Count == 0) { SendMsg(true, "조건에 맞는 대기실을 찾을 수 없었습니다."); } else if (fields.Count <= 2) { foreach (var item in fields) { SendMsg(false, $"{item.gname} [{item.now_players}명] - {item.player0}"); } } else { StringBuilder builder = new StringBuilder(); SendMsg(true, $"{fields.Count} 개의 대기실을 찾았습니다."); fields.Sort((a, b) => (int)(a.now_players - b.now_players)); foreach (var item in fields) { builder.AppendFormat("[{0}명] ", item.now_players); } SendMsg(false, builder.ToString()); } }
internal static void SearchRoomListMap() { string SearchText = GetFullArgs(true); if (string.IsNullOrEmpty(SearchText)) { SendMsg(true, "Error - 검색할 맵 파일명을 입력해주세요."); return; } SendMsg(true, $"맵 파일명에 {IsKoreanBlock(SearchText, "이", "가")} 포함된 대기실을 검색하는 중..."); bool Disconnect = RoomWebDataBase.InitEvent(); if (Disconnect) { RoomWebDataBase.EndFirstConnect += () => EndRoomListSearch(RoomWebDataBase.infoList.FindAll(item => item.flag == "public" && item.status == "open" && item.mapname.ToLower().IndexOf(SearchText) != -1), Disconnect); RoomWebDataBase.Connect(); } else { EndRoomListSearch(RoomWebDataBase.infoList.FindAll(item => item.flag == "public" && item.status == "open" && item.mapname.ToLower().IndexOf(SearchText) != -1), Disconnect); } }