public static bool CompareRoomInfo(RoomInfos playerinfo,RoomInfos otherroom) { if (playerinfo.Rule == otherroom.Rule && playerinfo.BanList == otherroom.BanList && playerinfo.Mode == otherroom.Mode && playerinfo.NoCheckDeck == otherroom.NoCheckDeck && playerinfo.NoShuffleDeck == otherroom.NoShuffleDeck && playerinfo.EnablePriority == otherroom.EnablePriority && playerinfo.StartLp == otherroom.StartLp && playerinfo.Timer == otherroom.Timer && otherroom.Started == false && otherroom.isLocked == false) { string[] players = otherroom.Players.Split(','); if (GameMode(otherroom.Mode) == "Tag") { if (players.Length < 4) return true; else return false; } else { if (players.Length < 2) return true; else return false; } } else { return false; } }
public static RoomInfos FromName(string roomname, string players, bool started) { RoomInfos infos = new RoomInfos(); // if (roomname.Length < 15) return null; string rules = roomname.Substring(0, 7); if (!int.TryParse(rules[0].ToString(), out infos.Rule)) { return(null); } if (!int.TryParse(rules[1].ToString(), out infos.Mode)) { return(null); } if (!int.TryParse(rules[2].ToString(), out infos.BanList)) { return(null); } if (!int.TryParse(rules[3].ToString(), out infos.Timer)) { return(null); } infos.EnablePriority = rules[4] == 'T' || rules[4] == '1'; infos.NoCheckDeck = rules[5] == 'T' || rules[5] == '1'; infos.NoShuffleDeck = rules[6] == 'T' || rules[6] == '1'; string data = roomname.Substring(7, roomname.Length - 7); if (!data.Contains(",")) { return(null); } string[] list = data.Split(','); if (!int.TryParse(list[0], out infos.StartLp)) { return(null); } infos.StartHand = 5; infos.DrawCount = 1; if (list[1] == "R") { infos.isRanked = true; } else { infos.isRanked = false; } infos.RoomName = list[2]; infos.Players = players; infos.Started = started; return(infos); }
public static RoomInfos FromName(string roomname, string players, bool started) { RoomInfos infos = new RoomInfos(); // if (roomname.Length < 15) return null; string rules = roomname.Substring(0, 7); if (!int.TryParse(rules[0].ToString(), out infos.Rule)) return null; if (!int.TryParse(rules[1].ToString(), out infos.Mode)) return null; if (!int.TryParse(rules[2].ToString(), out infos.BanList)) return null; if (!int.TryParse(rules[3].ToString(), out infos.Timer)) return null; infos.EnablePriority = rules[4] == 'T' || rules[4] == '1'; infos.NoCheckDeck = rules[5] == 'T' || rules[5] == '1'; infos.NoShuffleDeck = rules[6] == 'T' || rules[6] == '1'; string data = roomname.Substring(7, roomname.Length - 7); if (!data.Contains(",")) return null; string[] list = data.Split(','); if (!int.TryParse(list[0], out infos.StartLp)) return null; infos.StartHand = 5; infos.DrawCount = 1; if (list[1] == "RL" || list[1] == "UL") infos.isLocked = true; if (list[1] == "R" || list[1] == "RL") infos.isRanked = true; else infos.isRanked = false; infos.RoomName = list[2]; infos.Players = players; infos.Started = started; return infos; }
private void InternalRoomsList(RoomInfos[] rooms) { m_rooms.Clear(); listRooms.Items.Clear(); foreach (RoomInfos room in rooms) { InternalRoomCreated(room); } UpdateServerInfo(); }
private void InternalRoomCreated(RoomInfos room) { if (m_rooms.ContainsKey(room.RoomName)) return; ListViewItem item = new ListViewItem(room.RoomName); m_rooms.Add(room.RoomName, item); string roomtype = "Unranked"; if (room.isRanked) roomtype = "Ranked"; item.SubItems.Add(roomtype); string rule = "TCG/OCG"; if (room.Rule == 1) rule = "TCG"; if (room.Rule == 0) rule = "OCG"; if (room.Rule == 4) rule = "Anime"; item.SubItems.Add(rule); string type = "Single"; if (room.Mode == 1) type = "Match"; if (room.Mode == 2) type = "Tag"; item.SubItems.Add(type); item.SubItems.Add(room.Started ? "Started" : "Waiting"); item.SubItems.Add(room.Players); item.SubItems.Add(room.GenerateURI(Program.Config.ServerAddress, Program.Config.ServerPort)); bool illegal = room.NoCheckDeck || room.NoShuffleDeck || room.EnablePriority || (room.Mode == 2) ? room.StartLp != 16000 : room.StartLp != 8000 || room.StartHand != 5 || room.DrawCount != 1; item.BackColor = room.Started ? Color.LightGray : (illegal ? Color.LightCoral : (room.Mode == 2 ? Color.LightGreen : (room.Mode == 1 ? Color.LightSteelBlue : Color.LightBlue))); if (FilterActive.Checked) { if (m_rooms[room.RoomName].SubItems[4].Text.Contains("Waiting") && m_rooms[room.RoomName].SubItems[1].Text.Contains(GameType.Text)) { if (m_rooms[room.RoomName].SubItems[5].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || m_rooms[room.RoomName].SubItems[1].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || FilterTextBox.Text == "Search" || FilterTextBox.Text == "") { listRooms.Items.Add(m_rooms[room.RoomName]); } } } else { if (m_rooms[room.RoomName].SubItems[1].Text.Contains(GameType.Text)) { if (m_rooms[room.RoomName].SubItems[5].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || m_rooms[room.RoomName].SubItems[1].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || FilterTextBox.Text == "Search" || FilterTextBox.Text == "") { listRooms.Items.Add(m_rooms[room.RoomName]); } } } }
public void OnRoomsList(RoomInfos[] rooms) { Invoke(new Action<RoomInfos[]>(InternalRoomsList), new object[] { rooms }); }
public void OnRoomCreated(RoomInfos[] room) { listRooms.Invoke(new Action<RoomInfos>(InternalRoomCreated), room[0]); }
private void InternalRoomCreated(RoomInfos room) { if (m_rooms.ContainsKey(room.RoomName)) return; m_rooms.Add(room.RoomName, room); ListBox rooms = (room.isRanked ? RankedList : UnrankedList); if (FilterActive.Checked) { if (!m_rooms[room.RoomName].Started) { if (m_rooms[room.RoomName].Players.ToLower().Contains(FilterTextBox.Text.ToLower()) || m_rooms[room.RoomName].RoomName.ToLower().Contains(FilterTextBox.Text.ToLower()) || FilterTextBox.Text == "Search" || FilterTextBox.Text == "") { rooms.Items.Add(m_rooms[room.RoomName].RoomName); } } } else { if (m_rooms[room.RoomName].Players.ToLower().Contains(FilterTextBox.Text.ToLower()) || m_rooms[room.RoomName].RoomName.ToLower().Contains(FilterTextBox.Text.ToLower()) || FilterTextBox.Text == "Search" || FilterTextBox.Text == "") { rooms.Items.Add(m_rooms[room.RoomName].RoomName); } } }
private void InternalRoomCreated(RoomInfos room) { if (m_rooms.ContainsKey(room.RoomName)) { return; } ListViewItem item = new ListViewItem(room.RoomName); m_rooms.Add(room.RoomName, item); string roomtype = "Unranked"; if (room.isRanked) { roomtype = "Ranked"; } item.SubItems.Add(roomtype); item.SubItems.Add(LauncherHelper.GetBanListFromInt(room.BanList)); item.SubItems.Add((room.Timer == 0 ? "3 mins":"5 mins")); string rule = "TCG/OCG"; if (room.Rule == 1) { rule = "TCG"; } if (room.Rule == 0) { rule = "OCG"; } if (room.Rule == 4) { rule = "Anime"; } if (room.Rule == 5) { rule = "Turbo Duel"; } item.SubItems.Add(rule); string type = "Single"; if (room.Mode == 1) { type = "Match"; } if (room.Mode == 2) { type = "Tag"; } item.SubItems.Add(type); item.SubItems.Add(room.Started ? "Started" : "Waiting"); item.SubItems.Add(room.Players); item.SubItems.Add(room.GenerateURI(Program.Config.ServerAddress, Program.Config.ServerPort)); bool illegal = room.NoCheckDeck || room.NoShuffleDeck || room.EnablePriority || (room.Mode == 2) ? room.StartLp != 16000 : room.StartLp != 8000 || room.StartHand != 5 || room.DrawCount != 1; item.BackColor = room.Started ? Color.LightGray : (illegal ? Color.LightCoral : (room.Rule == 4 ? Color.Violet: (room.Rule == 5 ? Color.Gold: (room.Mode == 2 ? Color.LightGreen : (room.Mode == 1 ? Color.LightSteelBlue : Color.LightBlue))))); ListView rooms = (ServerTabs.SelectedTab.Name == "Ranked" ? RankedRooms : listRooms); if (FilterActive.Checked) { if (m_rooms[room.RoomName].SubItems[6].Text.Contains("Waiting") && m_rooms[room.RoomName].SubItems[1].Text.Contains(ServerTabs.SelectedTab.Name)) { if (m_rooms[room.RoomName].SubItems[7].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || m_rooms[room.RoomName].SubItems[0].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || FilterTextBox.Text == "Search" || FilterTextBox.Text == "") { rooms.Items.Add(m_rooms[room.RoomName]); } } } else { if (m_rooms[room.RoomName].SubItems[1].Text.Contains(ServerTabs.SelectedTab.Name)) { if (m_rooms[room.RoomName].SubItems[7].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || m_rooms[room.RoomName].SubItems[0].Text.ToLower().Contains(FilterTextBox.Text.ToLower()) || FilterTextBox.Text == "Search" || FilterTextBox.Text == "") { rooms.Items.Add(m_rooms[room.RoomName]); } } } }
private void OnCommand(string command) { string[] args = command.Split(new string[] { "||" }, StringSplitOptions.None); string cmd = args[0]; if (cmd == "ROOMS") { List <RoomInfos> rooms = new List <RoomInfos>(); for (int i = 1; i < args.Length; ++i) { string[] infos = args[i].Split(';'); RoomInfos room = RoomInfos.FromName(infos[0], infos[1], infos[2] == "1"); if (room != null) { rooms.Add(room); } } if (AddRooms != null) { AddRooms(rooms.ToArray()); } } else if (cmd == "+ROOM") { string[] infos = args[1].Split(';'); RoomInfos room = RoomInfos.FromName(infos[0], infos[1], infos[2] == "1"); if (AddRoom != null) { AddRoom(new RoomInfos[] { room }); } } else if (cmd == "-ROOM") { if (RemoveRoom != null) { RemoveRoom(args[1]); } } else if (cmd == "PLAYERS") { if (UpdateRoomPlayers != null) { UpdateRoomPlayers(args[1] + "|" + args[2]); } } else if (cmd == "START") { if (UpdateRoomStatus != null) { UpdateRoomStatus(args[1]); } } else if (cmd == "REGISTER") { if (RegisterReply != null) { RegisterReply(args[1]); } } else if (cmd == "LOGIN") { if (LoginReply != null) { LoginReply(args[1] + (args.Length > 2 ? "|" + args[2] : "")); } } else if (cmd == "WLD") { if (UserInfoUpdate != null) { UserInfoUpdate(args[1]); } } else if (cmd == "STATS") { if (ProfileMessage != null) { ProfileMessage(args[1] + "||" + args[2] + "||" + args[3] + "||" + args[4]); } } else if (cmd == "ADMIN") { if (args.Length >= 3) { if (AdminMessage != null) { AdminMessage(args[1] + "||" + args[2]); } } } else if (cmd == "MSG") { if (ServerMessage != null) { ServerMessage(args[1]); } } else { if (OnFatalError != null) { OnFatalError("Unknown packet received."); } } }