//--------------------------------------
    // Private Methods
    //--------------------------------------

    private void DispatchUpdate()
    {
        if (Scores.Count == 6)
        {
            GK_Leaderboard       board = GameCenterManager.GetLeaderboard(_leaderboardId);
            GK_LeaderboardResult result;


            if (_ErrorData != null)
            {
                result = new GK_LeaderboardResult(board, _ErrorData);
            }
            else
            {
                board.UpdateCurrentPlayerScore(Scores);
                result = new GK_LeaderboardResult(board);
            }

            GameCenterManager.DispatchLeaderboardUpdateEvent(result, _IsInternal);
        }
    }
    private void OnLeaderboardScoreListLoaded(string data)
    {
        string[] DataArray = data.Split(new string[] { SA.Common.Data.Converter.DATA_SPLITTER2 }, StringSplitOptions.None);



        string            leaderboardId = DataArray[0];
        GK_TimeSpan       timeSpan      = (GK_TimeSpan)System.Convert.ToInt32(DataArray[1]);
        GK_CollectionType collection    = (GK_CollectionType)System.Convert.ToInt32(DataArray[2]);

        GK_Leaderboard board = GetLeaderboard(leaderboardId);



        for (int i = 3; i < DataArray.Length; i += 4)
        {
            string   playerId = DataArray[i];
            long     scoreVal = System.Convert.ToInt64(DataArray[i + 1]);
            int      rank     = System.Convert.ToInt32(DataArray[i + 2]);
            int      context  = System.Convert.ToInt32(DataArray[i + 3]);
            GK_Score score    = new GK_Score(scoreVal, rank, context, timeSpan, collection, leaderboardId, playerId);
            board.UpdateScore(score);


            if (Player != null)
            {
                if (Player.Id.Equals(playerId))
                {
                    board.UpdateCurrentPlayerScore(score);
                }
            }
        }



        GK_LeaderboardResult result = new GK_LeaderboardResult(board);

        OnScoresListLoaded(result);
    }