コード例 #1
0
    IEnumerator LoadScoresGlobal()
    {
        loadingImage.gameObject.SetActive(true);
        failText.SetActive(false);
        loadingImage.rotation = Quaternion.identity;

        switch (gameType)
        {
        case GameTypes.Free:
            RemoteDatabase.instance.GetScoresFree();
            break;

        case GameTypes.Gold:
            RemoteDatabase.instance.GetScoresGold();
            break;

        case GameTypes.Time:
            RemoteDatabase.instance.GetScoresTime();
            break;
        }

        while (!RemoteDatabase.instance.fetchingComplete)
        {
            loadingImage.Rotate(0, 0, -10);
            yield return(new WaitForSecondsRealtime(0.01f));
        }

        loadingImage.gameObject.SetActive(false);

        if (RemoteDatabase.instance.dbLines.Length <= 1)
        {
            failText.SetActive(true);
        }

        else
        {
            int position = 1;

            foreach (string line in RemoteDatabase.instance.dbLines)
            {
                if (line.Length > 0)
                {
                    LeaderboardItem newItem = Instantiate(leaderboardItemPrefab, content).GetComponent <LeaderboardItem>();
                    newItem.position    = position;
                    newItem.playerName  = RemoteDatabase.instance.GetDBLineValue(line, "player:");
                    newItem.companyName = RemoteDatabase.instance.GetDBLineValue(line, "company:");
                    if (gameType == GameTypes.Time)
                    {
                        newItem.score = RemoteDatabase.instance.GetDBLineValue(line, "score:");
                    }
                    else
                    {
                        newItem.score = "$" + int.Parse(RemoteDatabase.instance.GetDBLineValue(line, "score:")).ToString("n0");
                    }
                    newItem.UpdateInformation();
                    position++;
                }
            }
        }
    }
コード例 #2
0
    void Refresh(List <LeaderboardItem> leaderboardItems, LeaderboardItem myItem)
    {
        if (leaderboardItems != null)
        {
            var count = Mathf.Min(10, leaderboardItems.Count);
            SlotTemplate.SetActive(false);
            for (int i = 0; i < count; i++)
            {
                var go = PrefabHelper.InstantiateAndReset(SlotTemplate, Grid.transform);
                go.SetActive(true);
                go.name = SlotTemplate.name + i.ToString("000");
                var slot = go.GetComponent <LeaderboardSlot>();
                SlotList.Add(slot);
                var item = leaderboardItems[i];
                slot.Refresh(item.Rank, item.Nickname, item.Score);
            }
        }
        Grid.repositionNow = true;

        if (myItem != null)
        {
            MySlot.Refresh(myItem.Rank, myItem.Nickname, myItem.Score);
            var nickname = "";// ForeverDataHolder.Nickname;
            if (string.IsNullOrEmpty(nickname))
            {
                GrpNoNickname.SetActive(true);
                MySlot.LblNickname.text = "请输入昵称";
            }
            else
            {
                GrpNoNickname.SetActive(false);
                MySlot.LblNickname.text = nickname;
            }
        }
    }
コード例 #3
0
 public void SetValue(int pos, LeaderboardItem item)
 {
     dateTimeText.text = item.dateTime.ToString("dd/MM HH:mm");
     posText.text      = pos.ToString();
     playerText.text   = item.name;
     scoreText.text    = item.score.ToString();
 }
コード例 #4
0
    private IEnumerator leaderboardAnim(int newEntryIndex)
    {
        // exit loading screen
        yield return(StartCoroutine(LoadingScreen.Instance.HideDelay()));

        // get player name if new record
        if (newEntryIndex != -1)
        {
            yield return(StartCoroutine(input.getInput()));

            data.topTen[newEntryIndex].name = input.getName();
            GameData.writeFile(LEADERBOARD_DATA, data);
            PlayerPrefs.SetInt("ScoresExist", 1);
        }
        yield return(StartCoroutine(input.exitInput()));

        // display the leaderboard
        topTenItems = new List <LeaderboardItem>();
        StartCoroutine(detectPress());
        for (int i = 9; i >= 0; i--)
        {
            topTenItems.Add(LeaderboardItem.Create(i + 1, i < data.topTen.Count ? data.topTen[i] : null, i == newEntryIndex));
            for (float elapsedTime = 0f; elapsedTime <= (fastForward ? 0.05f : i >= data.topTen.Count ? 0.10f : 0.25f); elapsedTime += Time.deltaTime)
            {
                yield return(null);
            }
        }
        StopCoroutine(detectPress());

        // display the witty comment
        yield return(StartCoroutine(comment.displayComment()));
    }
コード例 #5
0
    public override void Initialize(string id)
    {
        base.Initialize(id);

        superTireSmallLogo = _screenElements["SuperTireSmallLogo"];
        leaderboardBg      = _screenElements["LeaderboardBg"];
        leaderboardBanner  = _screenElements["LeaderboardBanner"];
        buttonPanel        = _screenElements["ButtonPanel"];
        tableHeaderPanel   = _screenElements["TableHeaderPanel"];

        overallButton    = _screenElements["OverallButton"];
        passengerButton  = _screenElements["PassengerButton"];
        lightTruckButton = _screenElements["LightTruckButton"];
        winterButton     = _screenElements["WinterButton"];

        title_RankText = _screenElements ["RankText"];
        title_RankText.GetComponent <Text> ().color = elementHideColor;
        title_NameText = _screenElements ["NameText"];
        title_NameText.GetComponent <Text> ().color = elementHideColor;
        title_TimeText = _screenElements ["TimesText"];
        title_TimeText.GetComponent <Text> ().color = elementHideColor;

        viewport = _screenElements["ScrollView"];
        viewport.GetComponent <Image> ().color = new Color(1, 1, 1, 1);
        viewport.Find("Viewport").GetComponent <Image>().color = new Color(1, 1, 1, 1);

        dataColumn = viewport.GetComponent <ScrollRect>().content.GetComponent <DataColumnsPanel>();
        dataColumn.GetComponent <CanvasGroup>().alpha = 1;

        _baseLeaderboardItem = dataColumn.transform.GetComponentInChildren <LeaderboardItem>();

        returnButton = _screenElements["ReturnButton"];
    }
コード例 #6
0
        public IActionResult DeleteItem(int id)
        {
            try
            {
                LeaderboardItem blog = _context.Leaderboard.FirstOrDefault(b => b.Id == id);

                if (blog == null)
                {
                    throw new Exception($"No blog found! ID: {id}");
                }

                else
                {
                    _context.Remove(blog);
                    _context.SaveChanges();

                    return(Ok(new BasicHttpResponse <object> {
                        Ok = true
                    }));
                }
            }
            catch (Exception e)
            {
                return(Ok(new BasicHttpResponse <object> {
                    Ok = false, Message = e.Message
                }));
            }
        }
コード例 #7
0
    public static LeaderboardItem Create(int num, LeaderboardEntry entry, bool isNewRecord)
    {
        Vector3         spawnPos = new Vector3(SPAWN_POS.x, SPAWN_POS.y - 90 * (num - 1), SPAWN_POS.z);
        LeaderboardItem li       = (Instantiate(Resources.Load <GameObject>(PREFAB_PATH), spawnPos, Quaternion.identity)).GetComponent <LeaderboardItem>();

        li.initValues(num, entry, isNewRecord);
        return(li);
    }
コード例 #8
0
    public void UpdatePlayer(int playerId, int newScore)
    {
        // Tween number?
        LeaderboardItem player = GetPlayer(playerId);

        if (player != null)
        {
            player.Score = newScore;
        }
    }
コード例 #9
0
    // return position
    public void NewEntryTest()
    {
        LeaderboardItem newItem = new LeaderboardItem();

        newItem.score    = Random.Range(20, 100);
        newItem.dateTime = System.DateTime.Now;
        newItem.name     = "Player";
        leaderboardList[m_currIndex].NewEntry(newItem);
        ShowData();
    }
コード例 #10
0
 private void OnEnable()
 {
     HighscoreManager.LoadHighscores((leaderboard) =>
     {
         foreach (LeaderboardValue value in leaderboard.data)
         {
             LeaderboardItem item = Instantiate(leaderboardItemPrefab, leaderboardItemsContainer);
             item.SetPlayerData(value.name, value.value);
         }
     }, 50);
 }
コード例 #11
0
    private void ResetBaseLeaderboardItem(LeaderboardItem item)
    {
        item.LBRank.fontSize = 50;
        item.LBRank.color    = Color.black;

        item.LBName.fontSize = 50;
        item.LBName.color    = Color.white;

        item.LBTime.fontSize = 50;
        item.LBTime.color    = Color.black;
    }
コード例 #12
0
    private void SetUserBaseLeaderboardItem(LeaderboardItem item)
    {
        item.LBPanel.color = new Color(1, 0.7015066f, 0.259434f);

        item.LBRank.fontSize = 50;
        item.LBRank.color    = Color.white;

        item.LBName.fontSize = 50;
        item.LBName.color    = Color.black;

        item.LBTime.fontSize = 50;
        item.LBTime.color    = Color.white;
    }
コード例 #13
0
    IEnumerator Fetch()
    {
        //var www = new WWW(UrlPrefix + "fetch?device_id=" + Setting.DeviceUID);//TODO:恢复
        var www = new WWW(UrlPrefix + "fetch00.txt");

        yield return(www);

        if (www.error != null)
        {
            Debug.LogError("获取排行榜WWWW失败Error:" + www.error);
            yield break;
        }
        var text = www.text;

        try
        {
            var list         = new List <LeaderboardItem>();
            var json         = JsonNode.FromJson(text);
            var subNodeNames = json.SubNodeNames;
            if (subNodeNames.Contains("leaderboard_list"))
            {
                var jsonlist = json["leaderboard_list"];
                var count    = jsonlist.ElementNodeCount;
                for (var i = 0; i < count; i++)
                {
                    var item = jsonlist[i];
                    list.Add(new LeaderboardItem(item));
                }
            }
            else
            {
                Debug.LogError("json里没有leaderboard_list");
            }
            LeaderboardItem myItem = null;
            if (subNodeNames.Contains("player"))
            {
                var item = json["player"];
                myItem = new LeaderboardItem(item);
            }
            else
            {
                Debug.LogError("json里没有leaderboard_list");
            }
            Refresh(list, myItem);
        }
        catch (Exception)
        {
            throw;
        }
    }
コード例 #14
0
    // Update is called once per frame
    void Update()
    {
        switch (state)
        {
        case State.INPUT_NAME:
        {
            break;
        }

        case State.COUNT_DOWN:
        {
            pregame_countDown -= Time.deltaTime;
            if (pregame_countDown < 0f)
            {
                pregame_countDownText.gameObject.SetActive(false);
                state = State.GAME_STARTED;
                return;
            }
            pregame_countDownText.text = pregame_countDown.ToString("0.0");
            break;
        }

        case State.GAME_STARTED:
        {
            game_countDown -= Time.deltaTime;
            if (game_countDown < 0f)
            {
                state = State.GAME_OVER;
                if (gameOverMenu)
                {
                    LeaderboardItem item = new LeaderboardItem();
                    item.score    = game_score;
                    item.name     = player_name;
                    item.dateTime = System.DateTime.Now;
                    int pos = leaderboard.NewEntry(item);
                    item.pos = pos;
                    gameOverMenu.Show(item);
                }
                return;
            }
            game_countDownText.text = game_countDown.ToString("0.0");
            break;
        }

        case State.GAME_OVER:
        {
            break;
        }
        }
    }
コード例 #15
0
        public TableViewCell GetCellForRowInTableView(TableView tableView, int row)
        {
            ScoreCell cell = tableView.GetReusableCell(tableViewCellPrefab.reuseIdentifier) as ScoreCell;

            if (cell == null)
            {
                cell = (ScoreCell)GameObject.Instantiate(tableViewCellPrefab);
            }
            LeaderboardItem data = highscores[row];

            cell.Name.text  = data.player;
            cell.Score.text = data.score.ToString();
            cell.Rank.text  = data.rank.ToString();
            return(cell);
        }
コード例 #16
0
        public void SetAndRefresh(LeaderboardItem leaderboardItem)
        {
            _leaderboardItem = leaderboardItem;

            if (_leaderboardItem != null)
            {
                LblCurRank.text  = _leaderboardItem.GlobalRank.ToString(CultureInfo.InvariantCulture);
                LblNickname.text = _leaderboardItem.Nickname;
            }
            else
            {
                LblCurRank.text  = null;
                LblNickname.text = null;
            }
        }
コード例 #17
0
    public void UpdateLobbyPlayerlist(LeaderboardData[] leaderboardData)
    {
        CleanLobbyList();

        for (int i = 0; i < leaderboardData.Length; i++)
        {
            LeaderboardData entry = leaderboardData[i];

            GameObject listItem = Instantiate(playerlistEntryPrefab, lobbyPlayerList);

            LeaderboardItem leaderboardItem = listItem.GetComponent <LeaderboardItem>();

            leaderboardItem.Username = entry.username;
        }
    }
コード例 #18
0
ファイル: GameOverMenu.cs プロジェクト: kcckchau/skee-ball
    public void Show(LeaderboardItem item)
    {
        if (posText)
        {
            posText.text = (item.pos + 1).ToString();
        }
        if (scoreText)
        {
            scoreText.text = item.score.ToString();
        }

        if (item.pos == 0)
        {
            if (descriptionText)
            {
                descriptionText.text = "Amazing! You got the highest score!";
            }
            if (back)
            {
                back.SetActive(true);
            }
        }
        else if (item.pos > 0 && item.pos < 5)
        {
            if (descriptionText)
            {
                descriptionText.text = "Amazing! You got the highest score!";
            }

            if (secondObject)
            {
                secondObject.SetActive(true);
            }
        }
        else
        {
            if (descriptionText)
            {
                descriptionText.text = "Your score is low. Try again";
            }
            if (secondObject)
            {
                secondObject.SetActive(true);
            }
        }

        gameObject.SetActive(true);
    }
コード例 #19
0
    public void AddPlayer(int playerId, string username, int score)
    {
        GameObject newPlayerListing = Instantiate(playerListingPrefab, leaderboardContainer);

        LeaderboardItem newPlayer = newPlayerListing.GetComponent <LeaderboardItem>();

        newPlayer.PlayerId = playerId;
        newPlayer.Username = username;
        newPlayer.Score    = score;

        players.Add(newPlayer);

        RectTransform newPlayerPos = newPlayerListing.GetComponent <RectTransform>();

        newPlayerPos.anchoredPosition = new Vector2(newPlayerPos.anchoredPosition.x, GetPositionYOnLeaderboard(players.Count - 1));
    }
コード例 #20
0
ファイル: Leaderboard.cs プロジェクト: shemi/Jumpaca
    public void Loaded([CanBeNull] ApiService.LeaderboardPlayer[] players)
    {
        loading.SetActive(false);

        if (players == null || players.Length <= 0)
        {
            return;
        }

        for (int i = 0; i < players.Length; i++)
        {
            var             player          = players[i];
            GameObject      item            = Instantiate(itemPrefab, content);
            LeaderboardItem leaderboardItem = item.GetComponent <LeaderboardItem>();
            leaderboardItem.Set(i + 1, player.nickname, player.score);
        }
    }
コード例 #21
0
    private void LoadScoresLocal()
    {
        List <LocalDatabase.LocalDatabaseItem> db = new List <LocalDatabase.LocalDatabaseItem>();

        switch (gameType)
        {
        case GameTypes.Free:
            db = LocalDatabase.instance.databaseFree;
            db.Sort(SortByScore);
            db.Reverse();
            break;

        case GameTypes.Gold:
            db = LocalDatabase.instance.databaseGold;
            db.Sort(SortByScore);
            db.Reverse();
            break;

        case GameTypes.Time:
            db = LocalDatabase.instance.databaseTime;
            db.Sort(SortByScore);
            break;
        }

        int position = 1;

        foreach (LocalDatabase.LocalDatabaseItem item in db)
        {
            LeaderboardItem newItem = Instantiate(leaderboardItemPrefab, content).GetComponent <LeaderboardItem>();
            newItem.position    = position;
            newItem.playerName  = RemoteDatabase.instance.userName;
            newItem.companyName = item.companyName;
            if (gameType == GameTypes.Time)
            {
                newItem.score = item.score.ToString();
            }
            else
            {
                newItem.score = "$" + float.Parse(item.score).ToString("n0");
            }
            newItem.UpdateInformation();
            position++;
        }
    }
コード例 #22
0
    public void RpcSetLeaderboardData(LeaderboardData[] newLeaderboard)
    {
        if (!isLocalPlayer)
        {
            return;
        }

        players = players.OrderBy(i => i.PlayerId).ToList();

        for (int i = players.Count - 1; i >= 0; i--)
        {
            LeaderboardItem currentPlayer = players[i];

            LeaderboardData possibleMatch = Array.Find(newLeaderboard, x => x.playerId == currentPlayer.PlayerId);

            if (possibleMatch != null)
            {
                newLeaderboard[Array.IndexOf(newLeaderboard, possibleMatch)] = null;

                currentPlayer.Username = possibleMatch.username;
                currentPlayer.Score    = possibleMatch.score;

                continue;
            }

            players.Remove(currentPlayer);

            Destroy(currentPlayer.gameObject);
        }

        for (int i = 0; i < newLeaderboard.Length; i++)
        {
            if (newLeaderboard[i] == null)
            {
                continue;
            }

            LeaderboardData currentPlayer = newLeaderboard[i];

            AddPlayer(currentPlayer.playerId, currentPlayer.username, currentPlayer.score);
        }

        //UpdatePositions(true);
    }
コード例 #23
0
        public virtual async Task <ActionResult> Compare(string userName)
        {
            var leftLeaderboardItem = await LeaderboardItem.GetLeaderboardForUserName(AuthenticatedUser.UserName);

            var rightLeaderboardItem = await LeaderboardItem.GetLeaderboardForUserName(userName);

            var allBadges = await BadgeCollection.GetAllBadgesByTypeAsync(BadgeType.Unset);

            var allActivities = await ActivityCollection.GetAllActivitiesAsync(false);

            var leaderboardCompareViewModel = new LeaderboardCompareViewModel();

            leaderboardCompareViewModel.LeftLeaderboardItem  = leftLeaderboardItem;
            leaderboardCompareViewModel.RightLeaderboardItem = rightLeaderboardItem;
            leaderboardCompareViewModel.AllBadges            = allBadges;
            leaderboardCompareViewModel.AllActivities        = allActivities;

            return(View(leaderboardCompareViewModel));
        }
コード例 #24
0
    void GeneratePrefabLeaderEat()
    {
        ClearList(listCreatedEat);

        listEatFish = LeaderboardDataManager.Instance.GetLeaderboardDataEat();

        for (int i = 0; i < listEatFish.Count; i++)
        {
            GameObject      go = Instantiate(prefabtItemLeaderboard) as GameObject;
            LeaderboardItem leaderboardPrefab = go.GetComponent <LeaderboardItem>();

            go.transform.SetParent(panelLeaderboardScript.InitParentPanelEat());
            go.transform.localPosition    = Vector3.zero;
            go.transform.localEulerAngles = Vector3.zero;
            go.transform.localScale       = Vector3.one;

            leaderboardPrefab.SetItemData(listEatFish[i]);

            listCreatedEat.Add(go);
        }
    }
コード例 #25
0
    public void RpcUpdatePositions(bool skipAnim)
    {
        if (currentLeaderboardSequence != null && currentLeaderboardSequence.IsPlaying())
        {
            currentLeaderboardSequence.Kill();
        }

        players = players.OrderBy(i => - i.Score).ToList();

        currentLeaderboardSequence = DOTween.Sequence();

        for (int i = 0; i < players.Count; i++)
        {
            LeaderboardItem currentPlayer = players[i];

            float newYPosition = GetPositionYOnLeaderboard(i);

            currentLeaderboardSequence.Insert(0, currentPlayer.GetComponent <RectTransform>().DOAnchorPosY(newYPosition, skipAnim ? 0 : listMovementDuration));
        }

        currentLeaderboardSequence.Play();
    }
コード例 #26
0
        public async Task <IActionResult> UpdateItem([FromBody] LeaderboardItem leaderboardItem)
        {
            try
            {
                if (!string.IsNullOrEmpty(leaderboardItem.RouteData) && leaderboardItem.RouteData.Length > 0)
                {
                    CheckValidXml(leaderboardItem.RouteData, leaderboardItem.RouteDataType);
                }

                LeaderboardItem entry = await _context.Leaderboard.AsNoTracking().FirstOrDefaultAsync(x => x.Id == leaderboardItem.Id);

                if (entry == null)
                {
                    leaderboardItem.Status = LeaderboardEntryState.Pending;
                    await _context.Leaderboard.AddAsync(leaderboardItem);
                }
                else
                {
                    //these two items stay empty on client side, so transfer over to updated entry.
                    leaderboardItem.Id        = entry.Id;
                    leaderboardItem.RouteData = entry.RouteData;

                    _context.Leaderboard.Update(leaderboardItem);
                }

                await _context.SaveChangesAsync();

                return(Ok(new BasicHttpResponse <object> {
                    Ok = true, Data = leaderboardItem
                }));
            }
            catch (Exception e)
            {
                return(Ok(new BasicHttpResponse <object> {
                    Ok = false, Message = Shared.Helpers.Functions.ExceptionMessage(e)
                }));
            }
        }
コード例 #27
0
 public static LeaderboardItem LeaderboardItemWithoutRouteData(LeaderboardItem s)
 {
     return(new LeaderboardItem
     {
         Id = s.Id,
         Direction = s.Direction,
         EntryName = s.EntryName,
         PostedByUserId = s.PostedByUserId,
         FinishTime = s.FinishTime,
         Notes = s.Notes,
         PartySize = s.PartySize,
         PostDate = s.PostDate,
         PostedByUser = s.PostedByUser,
         RouteData = "",
         RouteDataType = s.RouteDataType,
         SeasonComplete = s.SeasonComplete,
         StartTime = s.StartTime,
         Status = s.Status,
         SubmissionNotes = s.SubmissionNotes,
         TrekDate = s.TrekDate,
         TrekkerIDs = s.TrekkerIDs
     });
 }
コード例 #28
0
    // Update is called once per frame
    void OnUpdateLeaderboard(SocketIOEvent e)
    {
        int position = -1;

        e.data.GetField(ref position, "position");

        if (position == -1)
        {
            return;
        }

        LeaderboardItem current = this.items[position];

        e.data.GetField(ref current.color.r, "r");
        e.data.GetField(ref current.color.g, "g");
        e.data.GetField(ref current.color.b, "b");
        current.color.a = 1;

        e.data.GetField(ref current.numBlocks, "numBlocks");

        this.items[position] = current;

        this.UpdateText();
    }
コード例 #29
0
ファイル: Users.cs プロジェクト: thunsaker/cuatro-csharp
        /// <summary>
        /// Returns the user's leaderboard.
        /// API Uri: https://api.foursquare.com/v2/users/leaderboard
        /// Documentation: https://developer.foursquare.com/docs/users/leaderboard.html
        /// </summary>
        /// <returns></returns>
        public Leaderboard GetLeaderboard()
        {
            try {
                List<LeaderboardItem> leaderboardList = new List<LeaderboardItem>();

                // Get the leaderboard
                String foursquareLeaderboardUri = String.Format("https://api.foursquare.com/v2/users/leaderboard?oauth_token={0}{1}",
                    AccessToken,
                    EndpointHelper.GetVerifiedDateParamForApi());
                var responseLeaderboard = WebRequestHelper.WebRequest(WebRequestHelper.Method.GET, foursquareLeaderboardUri.ToString(), string.Empty);
                var jsonLeaderboard = JObject.Parse(responseLeaderboard);

                if (int.Parse(jsonLeaderboard["meta"]["code"].ToString()) == 200) {
                    JArray userList = (JArray)jsonLeaderboard["response"]["leaderboard"]["items"];
                    if (userList.Count > 0) {
                        foreach (var u in userList) {
                            LeaderboardItem li = new LeaderboardItem();
                            li.User = FoursquareUser.Parse(u["user"].ToString());
                            li.Scores = FoursquareUserScores.Parse(u["scores"].ToString());
                            li.Rank = u["rank"] != null ? int.Parse(u["rank"].ToString().Replace("\"", "")) : 0;
                            leaderboardList.Add(li);
                        }
                    }

                    if (leaderboardList != null && leaderboardList.Count > 0)
                        return new Leaderboard() {
                            UsersList = leaderboardList
                        };
                }
                return null;
            } catch (Exception ex) {
                string error = ex.Message;
                return null;
            }
        }
コード例 #30
0
 public void Initialize(LeaderboardItem leaderboard)
 {
     _leaderName.text = leaderboard.name;
     _leaderTime.text = leaderboard.time.ToString();
 }
コード例 #31
0
    public int NewEntry(LeaderboardItem newItem)
    {
        //List<LeaderboardItem> list = data.list;

        if (data.list.Count == 0)
        {
            newItem.pos = 0;
            data.list.Add(newItem);
            Save();
            return(0);
        }

        data.list.Sort(delegate(LeaderboardItem i1, LeaderboardItem i2)
        {
            if (i1.score < i2.score)
            {
                return(1);
            }
            else if (i1.score == i2.score)
            {
                return(0);
            }
            else
            {
                return(-1);
            }
        });

        int  index   = 0;
        bool isAdded = false;

        foreach (LeaderboardItem item in data.list)
        {
            if (newItem.score > item.score)
            {
                newItem.pos = index;
                data.list.Insert(index, newItem);
                isAdded = true;
                break;
            }
            index++;
        }

        if (data.list.Count > 5)
        {
            data.list.RemoveAt(data.list.Count - 1);
        }
        else
        {
            if (!isAdded && data.list.Count < 5)
            {
                isAdded     = true;
                newItem.pos = index;
                data.list.Insert(index, newItem);
            }
        }

        Save();

        return(index);
    }