コード例 #1
0
        /// <summary>
        /// Routine for uploading a highscore to Firebase.
        /// </summary>
        private IEnumerator UploadNewHighscoreRoutine(string username, int score)
        {
            HighscoreDisplayHelper displayHelper = FindObjectOfType <HighscoreDisplayHelper>();

            string url = Config.instance.GetConfig()["firebase"];

            JSONObject body = new JSONObject();

            body.Add("date", System.DateTime.Now.ToString());
            body.Add("name", username);
            body.Add("score", score);

            UnityWebRequest request = UnityWebRequest.Post(url, "POST");

            byte[] bytes = Encoding.UTF8.GetBytes(body.ToString());

            request.uploadHandler   = new UploadHandlerRaw(bytes);
            request.downloadHandler = new DownloadHandlerBuffer();
            request.SetRequestHeader("Content-Type", "application/json");

            yield return(request.SendWebRequest());

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log("Error uploading: " + request.downloadHandler.text);
                displayHelper.ClearEntries();
                displayHelper.DisplayError("Could not upload score. Please try again later.\n\n" + request.downloadHandler.text);
            }
            else
            {
                Debug.Log("Upload successful! " + request.responseCode);
                PlayerPrefs.SetInt(Constants.ALREADY_UPLOADED_KEY, 1);
            }
        }
コード例 #2
0
        private IEnumerator DownloadAndDisplayHighscores()
        {
            HighscoreDisplayHelper displayHelper = FindObjectOfType <HighscoreDisplayHelper>();

            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                displayHelper.DisplayError(Ui.NO_INTERNET);
                yield break;
            }
            string url = Config.instance.GetConfig()["firebase"];

            UnityWebRequest request = UnityWebRequest.Get(url);

            yield return(request.SendWebRequest());

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log("Error downloading: " + request.downloadHandler.text);
                displayHelper.DisplayError(Ui.HIGHSCORE_DOWNLOAD_ERROR(request.downloadHandler.text));
            }
            else
            {
                JSONNode         json       = JSON.Parse(request.downloadHandler.text);
                List <Highscore> highscores = new List <Highscore>();

                foreach (JSONNode i in json)
                {
                    highscores.Add(new Highscore(i["name"], i["score"], i["distance"], i["ship"], i["vrMode"], i["date"]));
                }

                highscores.Sort((p1, p2) => p2.GetScore().CompareTo(p1.GetScore()));

                displayHelper.DisplayHighscores(highscores);
            }
        }
コード例 #3
0
        private IEnumerator UploadHighscoreRoutine(string username)
        {
            bool   usedVR   = PlayerPrefs.GetInt(PlayerPrefKeys.WAS_VR_HIGHSCORE).Equals(Constants.YES);
            string shipName = ShopManager.instance.GetSelectedShipData().GetShipName();
            string url      = Config.instance.GetConfig()["firebase"];

            JSONObject body = new JSONObject();

            body.Add("date", System.DateTime.Now.ToString());
            body.Add("distance", GetBestDistance());
            body.Add("name", username);
            body.Add("score", GetLocalHighscore());
            body.Add("ship", shipName);
            body.Add("vrMode", usedVR);

            UnityWebRequest request = UnityWebRequest.Post(url, "POST");

            byte[] bytes = Encoding.UTF8.GetBytes(body.ToString());

            request.uploadHandler   = new UploadHandlerRaw(bytes);
            request.downloadHandler = new DownloadHandlerBuffer();
            request.SetRequestHeader("Content-Type", "application/json");

            yield return(request.SendWebRequest());

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log("Error uploading: " + request.downloadHandler.text);
                HighscoreDisplayHelper display = FindObjectOfType <HighscoreDisplayHelper>();
                display.ClearEntries();
                display.DisplayError(Ui.HIGHSCORE_UPLOAD_ERROR(request.downloadHandler.text));
            }
            else
            {
                Debug.Log("Upload successful! " + request.result);
                PlayerPrefs.SetInt(PlayerPrefKeys.UPLOADED, Constants.YES);
                PlayerPrefs.SetInt(PlayerPrefKeys.NEW_HIGHSCORE, Constants.NO);
                PlayerPrefs.SetInt(PlayerPrefKeys.NEW_DISTANCE, Constants.NO);
                AchievementManager.instance.UnlockAchievement(AchievementIds.UPLOAD_HIGHSCORE);
                NotificationIcon[] icons = FindObjectsOfType <NotificationIcon>();
                foreach (NotificationIcon icon in icons)
                {
                    icon.TurnOff();
                }
            }
        }
コード例 #4
0
        /// <summary>
        /// Routine for uploading a highscore to Dreamlo.
        /// </summary>
        private IEnumerator UploadHighscoreRoutine(string username)
        {
            UnityWebRequest request = UnityWebRequest.Post(Constants.DREAMLO_URL + Constants.DREAMLO_PRIVATE_CODE + "/add/" + username + "/" + GetLocalHighscore(), "");

            yield return(request.SendWebRequest());

            if (!request.downloadHandler.text.StartsWith("ERROR"))
            {
                Debug.Log("Upload successful! " + request.responseCode);
                PlayerPrefs.SetInt(Constants.UPLOADED_KEY, Constants.YES);
            }
            else
            {
                Debug.Log("Error uploading: " + request.downloadHandler.text);
                HighscoreDisplayHelper display = FindObjectOfType <HighscoreDisplayHelper>();
                display.ClearEntries();
                display.DisplayError("Could not upload score. Please try again later.\n\n" + request.downloadHandler.text);
            }
        }
コード例 #5
0
        /// <summary>
        /// Downloads the highscores from Firebase.
        /// </summary>
        private IEnumerator DownloadHighscoresRoutine()
        {
            HighscoreDisplayHelper displayHelper = FindObjectOfType <HighscoreDisplayHelper>();

            if (Application.internetReachability == NetworkReachability.NotReachable)
            {
                displayHelper.DisplayError("No internet connection.");
                yield break;
            }

            string url = Config.instance.GetConfig()["firebase"];

            UnityWebRequest request = UnityWebRequest.Get(url);

            yield return(request.SendWebRequest());

            if (request.result != UnityWebRequest.Result.Success)
            {
                Debug.Log("Error downloading: " + request.downloadHandler.text);
                displayHelper.DisplayError("Could not download highscores. Please try again later.\n\n" + request.downloadHandler.text);
            }
            else
            {
                JSONNode         json       = JSON.Parse(request.downloadHandler.text);
                List <Highscore> highscores = new List <Highscore>();

                foreach (JSONNode i in json)
                {
                    highscores.Add(new Highscore(i["name"], i["score"], i["date"]));
                }

                highscores.Sort((p1, p2) => p2.GetScore().CompareTo(p1.GetScore()));

                displayHelper.DisplayHighscores(highscores);
            }
        }