示例#1
0
 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;
 }
示例#2
0
    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();
    }
示例#3
0
    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();
    }