/// <summary> /// /// ENVOIE UNE REQUETE AU SERVEUR POU RECUPERER POUR UN CERTAIN NIVEAU LE LEADERBOARD DES JOUEURS /// (top 5) /// /// SI REUSSITE, ENVOIE UN EVENT AVEC LA LIST /// /// </summary> /// <param name="level"></param> /// <returns></returns> private IEnumerator LeaderBoardCoroutine(uint level) { string json = "{ \"level\" :" + level + "}"; string url = "https://comisartdigitalsophia.herokuapp.com/level/leaderboard"; using (UnityWebRequest req = PostJson(url, json)) { req.SetRequestHeader("Authorization", "Bearer " + token); yield return(req.SendWebRequest()); if (req.isNetworkError || req.isHttpError) { if (!IsInLocal) { StartCoroutine(TestConnection()); } IsInLocal = true; LocalLeaderBoard(level); } else { IsInLocal = false; PlayerDatasList top5Players; top5Players = JsonUtility.FromJson <PlayerDatasList>("{\"list\" : " + req.downloadHandler.text + "}"); Debug.Log(top5Players.list.Count); SendLeaderBoard?.Invoke(top5Players); } } }
/// <summary> /// /// RECUPERE LE TOP 5 DES JOUEURS SUR LA SAUVEGARDE LOCALE /// /// </summary> /// <param name="level"></param> private void LocalLeaderBoard(uint level) { string filePath = Path.Combine(Application.persistentDataPath, fileNameDataBase); LocalPlayerToSaveList list; if (File.Exists(filePath)) { list = JsonUtility.FromJson <LocalPlayerToSaveList>(File.ReadAllText(filePath)); } else { list = new LocalPlayerToSaveList(); list.list = new System.Collections.Generic.List <LocalPlayerToSave>(); } PlayerDatasList leaderboardList = new PlayerDatasList(); leaderboardList.list = new System.Collections.Generic.List <PlayerDatas>(); foreach (LocalPlayerToSave player in list.list) { if (player.level != level) { list.list.Remove(player); } } list.list.Sort((p1, p2) => p2.score.CompareTo(p1.score)); if (list.list.Count > 5) { list.list.RemoveRange(5, list.list.Count - 5); } foreach (LocalPlayerToSave player in list.list) { leaderboardList.list.Add(new PlayerDatas(player.score.ToString(), player.objects.ToString(), player.lives.ToString(), player.time.ToString(), player.name)); } SendLeaderBoard?.Invoke(leaderboardList); }