示例#1
0
    LeaderboardStatus ToLeaderboardStatus(XmlNode node, ref string errorString)
    {
        try
        {
            LeaderboardStatus board = null;
            if (node != null && !string.IsNullOrEmpty(node.InnerXml))
            {
                board = new LeaderboardStatus();
                board.Id = node["Id"].InnerText;
                board.Name = node["Name"].InnerText;
                board.Comment = node["Comment"].InnerText;
                board.Country = node["Country"].InnerText;
                board.Region = node["Region"].InnerText;
                board.City = node["City"].InnerText;
                board.GameId = node["GameId"].InnerText;
                board.ParentLevelId = node["ParentLevelId"].InnerText;
                bool boolVal = false;
                bool.TryParse(node["Active"].InnerText, out boolVal);
                board.Active = boolVal;

                bool.TryParse(node["Live"].InnerText, out boolVal);
                board.Live = boolVal;

                long longVal = -1;
                List<string> playerUserNames = new List<string>();
                XmlNodeList playerNodes = node["PlayerUserNames"].ChildNodes;
                foreach (XmlNode playerNode in playerNodes)
                {
                    playerUserNames.Add(playerNode.InnerText);
                }

                board.PlayerUserNames = playerUserNames.ToArray();

                List<double> scores = new List<double>();
                playerNodes = node["Scores"].ChildNodes;

                foreach (XmlNode playerScoreNode in playerNodes)
                {
                    scores.Add(Convert.ToDouble(playerScoreNode.InnerText));
                }

                board.Scores = scores.ToArray();
                long.TryParse(node["PlayerCountLimit"].InnerText, out longVal);
                board.PlayerCountLimit = longVal;

                board.RestrictByDateOfBirthStart = node["RestrictByDateOfBirthStart"].InnerText;
                board.RestrictByDateOfBirthEnd = node["RestrictByDateOfBirthEnd"].InnerText;
                if (bool.TryParse(node["UseRestrictByDateOfBirthStart"].InnerText, out boolVal))
                {
                    board.UseRestrictByDateOfBirthStart = boolVal;
                }
                if (bool.TryParse(node["UseRestrictByDateOfBirthEnd"].InnerText, out boolVal))
                {
                    board.UseRestrictByDateOfBirthEnd = boolVal;
                }
                board.Reference = node["Reference"].InnerText;
                int intVal = -1;
                if (int.TryParse(node["Gender"].InnerText, out intVal))
                {
                    board.Gender = intVal;
                }
                List<string> availableOnlyToPlayerUserNames = new List<string>();
                playerNodes = node["AvailableOnlyToPlayerUserNames"].ChildNodes;
                foreach (XmlNode playerNode in playerNodes)
                {
                    availableOnlyToPlayerUserNames.Add(playerNode.InnerText);
                }

                board.AvailableOnlyToPlayerUserNames = availableOnlyToPlayerUserNames.ToArray();
                board.ClosedTime = node["ClosedTime"].InnerText;
                board.CreatedTime = node["CreatedTime"].InnerText;
                board.CurrentTime = node["CurrentTime"].InnerText;

                long rewardPoints = -1;
                if (long.TryParse(node["TotalRewardPoints"].InnerText, out rewardPoints))
                {
                    board.TotalRewardPoints = rewardPoints;
                }

                if (bool.TryParse(node["IsSponsored"].InnerText, out boolVal))
                {
                    board.IsSponsored = boolVal;
                }
                board.Extras = node["Extras"].InnerText;

                long topWinnersCount = 0;
                if (long.TryParse(node["TopWinnersCount"].InnerText, out topWinnersCount))
                {
                    board.TopWinnersCount = topWinnersCount;
                }

                board.Tag = node["Tag"].InnerText;
                board.AdminName = node["AdminName"].InnerText;

                long lifetime = 0;
                board.LifeTime = lifetime;
                board.UseAutoClose = false;
                boolVal = false;
                if (bool.TryParse(node["UseAutoClose"].InnerText, out boolVal))
                {
                    board.UseAutoClose = boolVal;
                }
                if (long.TryParse(node["LifeTime"].InnerText, out lifetime))
                {
                    board.LifeTime = lifetime;
                }
                if (bool.TryParse(node["InviteOnly"].InnerText, out boolVal))
                {
                    board.InviteOnly = boolVal;
                }
                return board;
            }
        }
        catch (Exception ex)
        {
            errorString = ex.Message;
        }
        return null;
    }
    void OnGetLeaderboardStatus(string errorString, LeaderboardStatus result, params object[] userParam)
    {
        if (string.IsNullOrEmpty(errorString) && result != null)
        {
            string[] playerDetails = result.PlayerUserNames;
            double[] scoreDetails = result.Scores;
            WinningPlayers.text = "Top " + result.TopWinnersCount.ToString();
            if (playerDetails != null && scoreDetails != null)
            {
                long length = playerDetails.Length;
                if (length > 0 && scoreDetails.Length == length)
                {
                    for (int index = 0; index < length; index++)
                    {
                        if (index < ItemPerPages)
                        {
                            AddItem(LeaderBoardNameLister, playerDetails[index]);
                            AddItem(LeaderBoardScoreLister, scoreDetails[index].ToString());
                        }
                    }
                    if (m_PageNo > 1)
                    {
                        BackwardButton.interactable = true;
                    }

                    if (length == ItemPerPages + 1)
                    {
                        ForwardButton.interactable = true;
                    }

                }
                else
                {
                    m_PageNo = 1;
                }
            }
            else
            {
                m_PageNo = 1;
            }
        }
        else
        {
            m_PageNo = 1;
        }
        UIStateManager.Manager.SetLoading(false);
    }