int CompareByHeaderType(MyGameExtendedInfo x, MyGameExtendedInfo y)
        {
            int resultForAscending;

            switch (m_orderByHeader)
            {
            //case MyGameTableHeaderEnum.Ping:
            //    resultForAscending = x.Ping.CompareTo(y.Ping);
            //    break;
            case MyGameTableHeaderEnum.HostName:
                resultForAscending = String.CompareOrdinal(x.GameInfo.HostDisplayName, y.GameInfo.HostDisplayName);
                break;

            case MyGameTableHeaderEnum.SectorName:
                resultForAscending = String.CompareOrdinal(x.GameInfo.Name, y.GameInfo.Name);
                break;

            case MyGameTableHeaderEnum.GameType:
                resultForAscending = ((int)x.GameType).CompareTo(((int)y.GameType));
                break;

            case MyGameTableHeaderEnum.PlayerCount:
                resultForAscending = x.GameInfo.PlayerCount.CompareTo(y.GameInfo.PlayerCount);
                break;
                //case MyGameTableHeaderEnum.JoinMode:
                //    resultForAscending = x.GameInfo.JoinMode.CompareTo(y.GameInfo.JoinMode);
                break;

            default:
                throw new IndexOutOfRangeException("m_orderByHeader");
            }

            if (m_orderAsc)
            {
                return(resultForAscending);
            }
            else
            {
                return(-resultForAscending);
            }
        }
        private bool AddGame(MyGameExtendedInfo gameInfo)
        {
            if (m_gameList == null)
            {
                return(false);
            }

            StringBuilder pingText = new StringBuilder(6);

            pingText.Append("? "); // TODO: measure ping
            pingText.Append("ms");
            int rowIndex = m_gameList.AddRow();

            //m_gameList.AddItem(rowIndex * (HeaderCount) + 0, pingText, null, rowIndex, 0);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 0, new StringBuilder(gameInfo.GameInfo.HostDisplayName), null, rowIndex, 0);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 1, new StringBuilder(gameInfo.GameInfo.Name), GetSectorIcon(gameInfo.GameInfo), rowIndex, 1);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 2, GetGameType(gameInfo.GameInfo), null, rowIndex, 2);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 3, new StringBuilder(gameInfo.GameInfo.PlayerCount + "/" + gameInfo.GameInfo.MaxPlayerCount), null, rowIndex, 3);
            //m_gameList.AddItem(rowIndex * (HeaderCount-1) + 5, new StringBuilder(gameInfo.GameInfo.JoinMode.ToString()), null, rowIndex, 5);

            return(true);
        }
        private bool AddGame(MyGameExtendedInfo gameInfo)
        {
            if (m_gameList == null) return false;

            StringBuilder pingText = new StringBuilder(6);
            pingText.Append("? "); // TODO: measure ping
            pingText.Append("ms");
            int rowIndex = m_gameList.AddRow();
            //m_gameList.AddItem(rowIndex * (HeaderCount) + 0, pingText, null, rowIndex, 0);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 0, new StringBuilder(gameInfo.GameInfo.HostDisplayName), null, rowIndex, 0);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 1, new StringBuilder(gameInfo.GameInfo.Name), GetSectorIcon(gameInfo.GameInfo), rowIndex, 1);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 2, GetGameType(gameInfo.GameInfo), null, rowIndex, 2);
            m_gameList.AddItem(rowIndex * (HeaderCount) + 3, new StringBuilder(gameInfo.GameInfo.PlayerCount + "/" + gameInfo.GameInfo.MaxPlayerCount), null, rowIndex, 3);
            //m_gameList.AddItem(rowIndex * (HeaderCount-1) + 5, new StringBuilder(gameInfo.GameInfo.JoinMode.ToString()), null, rowIndex, 5);

            return true;
        }
        int CompareByHeaderType(MyGameExtendedInfo x, MyGameExtendedInfo y)
        {
            int resultForAscending;

            switch (m_orderByHeader)
            {
                //case MyGameTableHeaderEnum.Ping:
                //    resultForAscending = x.Ping.CompareTo(y.Ping);
                //    break;
                case MyGameTableHeaderEnum.HostName:
                    resultForAscending = String.CompareOrdinal(x.GameInfo.HostDisplayName, y.GameInfo.HostDisplayName);
                    break;
                case MyGameTableHeaderEnum.SectorName:
                    resultForAscending = String.CompareOrdinal(x.GameInfo.Name, y.GameInfo.Name);
                    break;
                case MyGameTableHeaderEnum.GameType:
                    resultForAscending = ((int)x.GameType).CompareTo(((int)y.GameType));
                    break;
                case MyGameTableHeaderEnum.PlayerCount:
                    resultForAscending = x.GameInfo.PlayerCount.CompareTo(y.GameInfo.PlayerCount);
                    break;
                    //case MyGameTableHeaderEnum.JoinMode:
                    //    resultForAscending = x.GameInfo.JoinMode.CompareTo(y.GameInfo.JoinMode);
                    break;
                default:
                    throw new IndexOutOfRangeException("m_orderByHeader");
            }

            if (m_orderAsc)
            {
                return resultForAscending;
            }
            else
            {
                return -resultForAscending;
            }
        }