Esempio n. 1
0
        /// <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);
                }
            }
        }
Esempio n. 2
0
        /// <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);
        }