IEnumerator FetchLeaderBoardData(string name, Action <LeadBoardData> callback) { LeadBoardData data = null; using (UnityWebRequest webRequest = UnityWebRequest.Get(BaseUrl + GetAllEndPoint + name)) { yield return(webRequest.SendWebRequest()); if (webRequest.result == UnityWebRequest.Result.ConnectionError) { Debug.Log("Error: " + webRequest.error); } else if (webRequest.result == UnityWebRequest.Result.Success) { try { data = JsonUtility.FromJson <LeadBoardData>(webRequest.downloadHandler.text); } catch (Exception e) { Debug.LogError("Couldn't parse JSON correctly : " + e.Message); data = null; } } } callback?.Invoke(data); yield return(null); }
IEnumerator PostLeaderBoardData(LeadBoardData data) { string json = JsonUtility.ToJson(data); using (UnityWebRequest webRequest = new UnityWebRequest(BaseUrl + GetAllEndPoint, "POST")) { webRequest.SetRequestHeader("Content-Type", "application/json"); byte[] bodyRaw = Encoding.UTF8.GetBytes(json); webRequest.uploadHandler = new UploadHandlerRaw(bodyRaw); webRequest.downloadHandler = new DownloadHandlerBuffer(); yield return(webRequest.SendWebRequest()); if (webRequest.result != UnityWebRequest.Result.Success) { Debug.LogError(webRequest.error); } } }
IEnumerator OnNameEnteredCoroutine(string name) { LeadBoardData data = null; yield return(FetchLeaderBoardData(name, res => { data = res; })); int currentScore = ScoreManager.GetCurrentScore(); if (data == null || currentScore < data.score) { // Post data LeadBoardData newData = new LeadBoardData() { name = name, score = currentScore }; yield return(PostLeaderBoardData(newData)); } DisplayLeaderBoard(); }