예제 #1
0
        private void Start()
        {
            _loadingLayer.SetActive(true);
            Sound2DManager.Instance.StopBgm();
            var localHighscore   = PlayerPrefsHelper.GetHighScore();
            var serverHighscore  = NetworkCaller.Instance.PlayerData.HighestScore;
            var totalScore       = PlayerPrefsHelper.GetTotalScore();
            var serverTotalScore = NetworkCaller.Instance.PlayerData.TotalScore;

            if (localHighscore > serverHighscore || totalScore > serverTotalScore)
            {
                CheckScore(localHighscore, totalScore);
            }
            else
            {
                var playerData = NetworkCaller.Instance.PlayerData;
                _nameText.text  = playerData.Nickname;
                _scoreText.text = $"{ScoreUtil.FormatScore(playerData.HighestScore)}匹";
                _rankText.text  = playerData.Rank <= 0 ? "-位" : $"{ScoreUtil.FormatScore(playerData.Rank)}位";
                _avatar.sprite  = _skinSetting.GetSkinById(playerData.SkinId).skinAvatar;
                UpdateTopPlayers();
            }
        }
예제 #2
0
        private IEnumerator DelayAndShowEndGamePanel(bool isTimeout)
        {
            #if UNITY_EDITOR
            bool hasWatchAd = PlayerPrefsHelper.CanWatchAds();
#elif UNITY_IOS || UNITY_ANDROID
            bool hasWatchAd = PlayerPrefsHelper.CanWatchAds();
            if (hasWatchAd)
            {
                if (isTimeout)
                {
                    if (!Advertiser.AdvertisementSystem.IsTimeUpRewardAdsReady)
                    {
                        hasWatchAd = false;
                    }
                }
                else
                {
                    if (!Advertiser.AdvertisementSystem.IsDieRewardAdsReady)
                    {
                        hasWatchAd = false;
                    }
                }
            }
#endif
            if (isTimeout)
            {
                ShowTimeoutEffect(false, false);
            }

            yield return(new WaitForSeconds(0.5f));

            float delay = 0.5f;
            if (isTimeout)
            {
                _timeupImage.SetActive(true);
                delay = 2f;
                var image    = _timeupImage.GetComponent <Image>();
                var sequence = DOTween.Sequence();
                sequence.Append(image.DOColor(new Color(1, 1, 1, 0), 0.5f));
                sequence.Append(image.DOColor(new Color(1, 1, 1, 1), 0.5f));
                sequence.Append(image.DOColor(new Color(1, 1, 1, 0), 0.5f));
                sequence.Append(image.DOColor(new Color(1, 1, 1, 1), 0.5f));
            }
            else
            {
                Sound2DManager.Instance.PlayFishMoveEndGameSound();
                _endGameParticle.gameObject.SetActive(true);
                _endGameParticle.Play(true);
            }
            yield return(new WaitForSeconds(delay));

            _timeupImage.gameObject.SetActive(false);

            var highScore = PlayerPrefsHelper.GetHighScore();

            if (_currentScore > highScore)
            {
                PlayerPrefsHelper.UpdateHighScore((int)_currentScore);
                var totalScore = PlayerPrefsHelper.GetTotalScore();
                NetworkCaller.Instance.UpdateHighScore((int)_currentScore, totalScore, () =>
                {
                }, () =>
                {
                    NativeDialogManager.Instance.ShowScoreUpdateErrorDialog();
                });
                _newRecordPanel.SetScore(_currentScore);
                _newRecordPanel.gameObject.SetActive(true);
                yield return(new WaitForSeconds(2.0f));

                _newRecordPanel.gameObject.SetActive(false);
            }

            _gamePanel.SetActive(false);
            _endGamePanel.gameObject.SetActive(true);
            _endGamePanel.SetScore(_currentScore);
            _endGamePanel.SetIsGameEndedByDie(!isTimeout);

            if (hasWatchAd && !_hasAlreadyRevived)
            {
                _endGamePanel.ShowWithWatchAd();
            }
            else
            {
                _endGamePanel.ShowAsNormal();
            }
        }