示例#1
0
        public void SendRanking(RankKind kind, float time, Action onSent)
        {
            if (!loginManager.IsLoggedIn())
            {
                loginManager.Login(() => SendRanking(kind, time, onSent), error => print(error.GenerateErrorReport()));
                return;
            }

            int score = TimeToNumberForPlayFab(time);
            List <StatisticUpdate> stats = new List <StatisticUpdate>();

            stats.Add(new StatisticUpdate {
                StatisticName = kind.ToString(), Value = score
            });
            var request = new UpdatePlayerStatisticsRequest
            {
                Statistics = stats
            };

            PlayFabClientAPI.UpdatePlayerStatistics
            (
                request,
                result => onSent.Invoke(),
                error => Debug.LogError(error.GenerateErrorReport())
            );
        }
示例#2
0
 public void Show(RankKind kind)
 {
     print("log!");
     print(string.Join("\n", data.Top100.Select(datum => datum.Name + ": " + datum.Time)));
     print(string.Join("\n", data.AroundPlayer100.Select(datum => datum.Name + ": " + datum.Time)));
     _OnExit.OnNext(Unit.Default);
 }
示例#3
0
    void Start()
    {
        foreach (object kind_ in Enum.GetValues(typeof(RankKind)))
        {
            RankKind kind = (RankKind)kind_;
            rankingSenderGetter.GetRanking(kind, data => rankView.SetData(data));
        }

        (FocusNode node, RankKind kind)[] n_ks = new[]
示例#4
0
        public void GetRanking(RankKind kind, Action <RankData> onGot)
        {
            if (!loginManager.IsLoggedIn())
            {
                loginManager.Login(() => GetRanking(kind, onGot), error => print(error.GenerateErrorReport()));
                return;
            }

            StartCoroutine(GetRankingCor(kind, onGot));
        }
示例#5
0
        void Start()
        {
            StagePlayData playData = scoreHolder.Get();

            (bool isFirstPlay, float lastBestTime) = saveDataManager.SetStageData(playData);
            scoreToText.Init(playData.Stage, playData.Time, isFirstPlay, lastBestTime);
            RankKind rankKind = RankKindUtil.ToKind(playData.Stage);

            if (isFirstPlay && (playData.Stage == 0 || playData.Stage == 1))
            {
                saveDataManager.SetStageBeingUnlocked(true);
            }

            if (saveDataManager.StageCleared.All(cleared => cleared))
            {
                rankingSenderGetter.SendRanking
                (
                    RankKind.AllDrafts,
                    saveDataManager.BestTimes.Sum(),
                    () => { }
                );
            }
            rankingSenderGetter.SendRanking
            (
                rankKind,
                playData.Time,
                () =>
            {
                DOVirtual.DelayedCall(2f, () =>
                {
                    rankingSenderGetter.GetRanking
                    (
                        rankKind,
                        data => rankView.SetData(data)
                    );
                });
            }
            );

            DOVirtual.DelayedCall(3f, () =>
            {
                this.UpdateAsObservable()
                .Where(_ => input.GetButtonDown(ButtonCode.Ranking))
                .Subscribe(_ =>
                {
                    sounds.Play("Put");
                    gameObject.SetActive(false);
                    rankView.Show(rankKind);
                })
                .AddTo(this);
                rankView.OnExit.Subscribe(_ => gameObject.SetActive(true));
            });
        }
示例#6
0
        void RandomGenerate(RankKind kind, int lengthTop, int lengthAroundPlayer)
        {
            var allTimes = RandomUtil
                           .Generate(() => Random.Range(20f, 100f), lengthTop + lengthAroundPlayer)
                           .OrderBy(time => time);

            RankDatum[] top = allTimes
                              .Take(lengthTop)
                              .Select((time, i) => new RankDatum(RandName(), i + 1, time))
                              .ToArray();

            RankDatum[] aroundYou = allTimes
                                    .Skip(lengthTop)
                                    .Select((time, i) => new RankDatum(RandName(), lengthTop + 67 + i + 1, time)) //67は適当
                                    .ToArray();

            datas[(int)kind] = new RankData(kind, top, aroundYou);
        }
示例#7
0
        public void Show(RankKind kind)
        {
            if (!initialized)
            {
                Init();
            }

            shownKind.Value = kind;
            switch (kind)
            {
            case RankKind.Draft1:
                categoryImage.sprite = draft1;
                break;

            case RankKind.Draft2:
                categoryImage.sprite = draft2;
                break;

            case RankKind.Draft3:
                categoryImage.sprite = draft3;
                break;

            case RankKind.AllDrafts:
                categoryImage.sprite = allDrafts;
                break;
            }
            gameObject.SetActive(true);
            focusManager.OnEnter();

            BgImage.color   = bgColor * new Color(1, 1, 1, 0);
            bodyGroup.alpha = 0;
            bodyGroup.transform.SetLocalX(100);
            leftGroup.alpha = 0;
            leftGroup.transform.SetLocalX(-100);

            DOTween.Sequence()
            .Append(BgImage.DOColor(bgColor, enterDuration).SetEase(Ease.Linear))
            .Join(bodyGroup.DOFade(1, enterDuration).SetEase(Ease.Linear))
            .Join(bodyGroup.transform.DOLocalMoveX(0, enterDuration).SetEase(Ease.OutQuint))
            .Join(leftGroup.DOFade(1, enterDuration).SetEase(Ease.Linear))
            .Join(leftGroup.transform.DOLocalMoveX(0, enterDuration).SetEase(Ease.OutQuint));

            exitButton.OnEnter();
        }
示例#8
0
        IEnumerator GetRankingCor(RankKind kind, Action <RankData> onGot)
        {
            List <PlayerLeaderboardEntry> top100 = null;
            var requestTop100 = new GetLeaderboardRequest
            {
                StatisticName   = kind.ToString(),
                MaxResultsCount = 100
            };

            PlayFabClientAPI.GetLeaderboard
            (
                requestTop100,
                result => top100 = result.Leaderboard,
                error => Debug.Log(error.GenerateErrorReport())
            );

            List <PlayerLeaderboardEntry> aroundPlayer100 = null;
            var requestAroundPlayer = new GetLeaderboardAroundPlayerRequest
            {
                StatisticName   = kind.ToString(),
                MaxResultsCount = 100
            };

            PlayFabClientAPI.GetLeaderboardAroundPlayer
            (
                requestAroundPlayer,
                result => aroundPlayer100 = result.Leaderboard,
                error => Debug.Log(error.GenerateErrorReport())
            );

            yield return(new WaitUntil(() => top100 != null && aroundPlayer100 != null));

            onGot.Invoke(new RankData
                         (
                             kind,
                             top100
                             .Select(entry => new RankDatum(entry.DisplayName, entry.Position + 1, NumberToTimeFloat(entry.StatValue)))
                             .ToArray(),
                             aroundPlayer100
                             .Select(entry => new RankDatum(entry.DisplayName, entry.Position + 1, NumberToTimeFloat(entry.StatValue)))
                             .ToArray()
                         ));
        }
示例#9
0
 public void SetScore(float score)
 {
     if (score >= (int)RankKind.S)
     {
         rank = RankKind.S;
     }
     else if (score >= (int)RankKind.A)
     {
         rank = RankKind.A;
     }
     else if (score >= (int)RankKind.B)
     {
         rank = RankKind.B;
     }
     else if (score >= (int)RankKind.C)
     {
         rank = RankKind.C;
     }
     else if (score >= (int)RankKind.D)
     {
         rank = RankKind.D;
     }
 }
示例#10
0
 public void Show(RankKind kind)
 {
     current = datas[(int)kind];
 }
示例#11
0
 public RankData(RankKind kind, RankDatum[] top100, RankDatum[] aroundPlayer100)
 {
     this.Kind             = kind;
     this._Top100          = top100;
     this._AroundPlayer100 = aroundPlayer100;
 }
示例#12
0
 public void GetRanking(RankKind kind, Action <RankData> onGot)
 {
     onGot.Invoke(datas.FirstOrDefault(data => data.Kind == kind));
 }
示例#13
0
 public void SendRanking(RankKind kind, float time, Action onSent)
 {
     onSent.Invoke();
 }