コード例 #1
0
ファイル: RoomInfos.cs プロジェクト: TerryXY/DevProLauncher
 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;
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: RoomInfos.cs プロジェクト: TerryXY/DevProLauncher
        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;
        }
コード例 #4
0
 private void InternalRoomsList(RoomInfos[] rooms)
 {
     m_rooms.Clear();
     listRooms.Items.Clear();
     foreach (RoomInfos room in rooms)
     {
         InternalRoomCreated(room);
     }
     UpdateServerInfo();
 }
コード例 #5
0
        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]);
                    }
                }
            }
        }
コード例 #6
0
 public void OnRoomsList(RoomInfos[] rooms)
 {
     Invoke(new Action<RoomInfos[]>(InternalRoomsList), new object[] { rooms });
 }
コード例 #7
0
 public void OnRoomCreated(RoomInfos[] room)
 {
     listRooms.Invoke(new Action<RoomInfos>(InternalRoomCreated), room[0]);
 }
コード例 #8
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);
                    }
            }
        }
コード例 #9
0
        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]);
                    }
                }
            }
        }
コード例 #10
0
ファイル: NetClient.cs プロジェクト: Sky9/DevProLauncher
        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.");
                }
            }
        }