public static void Invalidate() { Authenticated = false; Authenticating = false; Name = null; Password = null; AvatarUrl = null; Level = 0; Exp = 0; NextExp = 0; Rating = 0; LastAuthenticationResult = null; LastRankingQueryResult = null; LastPostResult = null; LastRateResult = null; AvatarTexture = null; }
public static IEnumerator PostPlayData(IPlayData playdata) { var uri = playdata is RankedPlayData ? "/rank/post" : "/unranked/post"; var request = new UnityWebRequest(CytoidApplication.Host + uri, "POST") { timeout = 10 }; var body = JsonConvert.SerializeObject(playdata); #if UNITY_EDITOR Debug.Log(body); #endif var bodyRaw = Encoding.UTF8.GetBytes(body); request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); yield return(request.Send()); if (request.isNetworkError) { LastPostResult = new PostResult { status = -1, message = "Please check your network." }; } else { if (request.responseCode == 200) { try { LastPostResult = JsonConvert.DeserializeObject <PostResult>(request.downloadHandler.text); LastPostResult.status = 200; Level = LastPostResult.level; Exp = LastPostResult.exp; NextExp = LastPostResult.next_exp; Rating = LastPostResult.rating; } catch (Exception e) { Log.e(e.Message); LastRankingQueryResult = new RankingQueryResult { status = -1 }; yield break; } } else { LastPostResult = new PostResult { status = (int)request.responseCode, message = request.downloadHandler.text }; } } request.Dispose(); }
public static IEnumerator QueryRankings(string level, string type) { var request = UnityWebRequest.Get( string.Format(CytoidApplication.Host + "/rankings?level={0}&type={1}&player={2}", level, type, Name) ); request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); yield return(request.Send()); if (request.isNetworkError) { LastRankingQueryResult = new RankingQueryResult { status = -1 }; } else { try { LastRankingQueryResult = JsonConvert.DeserializeObject <RankingQueryResult>(request.downloadHandler.text); LastRankingQueryResult.status = 0; #if UNITY_EDITOR Debug.Log(JsonConvert.SerializeObject(LastRankingQueryResult)); #endif // Replace local score if higher if (LastRankingQueryResult.player_rank != -1) { var ranking = LastRankingQueryResult.rankings.First(it => it.player == Name); if (ranking != null) { var oldScore = ZPlayerPrefs.GetFloat(PreferenceKeys.BestScore(level, type, true)); if (ranking.score > oldScore) { ZPlayerPrefs.SetFloat( PreferenceKeys.BestScore(level, type, true), ranking.score); ZPlayerPrefs.SetFloat( PreferenceKeys.BestAccuracy(level, type, true), (float)ranking.accuracy / 100); BestScoreText.WillInvalidate = true; } } } } catch (Exception e) { Log.e(e.Message); LastRankingQueryResult = new RankingQueryResult { status = -1 }; yield break; } } request.Dispose(); }