示例#1
0
 private void FinishTutorial()
 {
     OnDestroy();
     _gameStateService.TriggerGameFinishing();
     StartCoroutine(Coroutines.FadeTo(songLearnedText.GetComponent <CanvasGroup>(), 1, .25f));
     StartCoroutine(Coroutines.FadeTo(songTutorial, 0, .5f));
     songLearnedText.StartAnimation();
     songLearnedText.TriggerImpulse();
     ServiceLocator.Get <PersistenceService>().SaveCurrentPlayer();
     iTween.ScaleBy(pageToScale.gameObject, Vector3.one / 1.05f, 5);
     StartCoroutine(Coroutines.ExecuteAfterSeconds(1.5f, () => {
         _update = () => {
             if (Input.GetMouseButtonDown(0))
             {
                 _update = Constants.Noop;
                 _gameStateService.CurrentLevelData = targetLevel;
                 _gameStateService.TriggerSceneTransition(BuildScenes.Ingame);
             }
         };
     }));
 }
示例#2
0
        private void ExecuteSong(NoteQuality hitNoteQuality, float beatTimeDiff, Song matchingSong)
        {
            NoteHit?.Invoke(hitNoteQuality, beatTimeDiff);
            if (_beatInputHandler == Constants.Noop)
            {
                // don't execute song if game has been finished with the last note
                return;
            }
            _streakScore += _currentQualities.Aggregate(0, (total, curQuality) => total + (int)curQuality);
            _streakPower  = Mathf.Min(_streakScore / Constants.REQUIRED_STREAK_SCORE, Constants.MAX_STREAK_POWER);
            _currentSong  = matchingSong;
            int curStreakPower = _streakPower;

            _currentSong.ExecuteCommand(hitNoteQuality, curStreakPower);
            _coroutineProvider.StartCoroutine(Coroutines.ExecuteAfterSeconds(HALF_NOTE_TIME, () => {
                ExecutionStarted?.Invoke(matchingSong, curStreakPower);
                DisableTouchHandler();
            }));
            ExecutionStarting?.Invoke(_currentSong, curStreakPower);
            _currentCommandUpdate = _currentSong.ExecuteCommandUpdate;
            ResetBeatAfterSeconds(NOTE_TIME * 4);
        }
示例#3
0
        private void ShowNextPage()
        {
            ComicPage curPage = _pages[_pageIndex++];

            curPage.Show();
            Action curPageOnFadeInComplete = delegate { ShowNextPanelAndStartTimer(curPage); };

            curPage.FadeInComplete        += curPageOnFadeInComplete;
            curPage.AllPanelsShowComplete += () => {
                Debug.Log("All panels show complete for " + curPage.name);
                bool isLastPage = _pageIndex == _pages.Length;
                Debug.Log("Setting update to " + (isLastPage ? "noop" : "hide current page on touch"));
                _update = isLastPage ? Constants.Noop : HideCurrentPageOnTouch;
                StopCoroutine(_nextTimer);
                pageFinished?.Invoke(_pageIndex - 1);
                if (!isLastPage)
                {
                    _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(3, LoadNextPage));
                }
            };
            Debug.Log("Setting update to show next panel on touch");
            _update = () => ShowNextPanelOnTouch(curPage);
        }
示例#4
0
        private void ResetBeatAfterSeconds(float time)
        {
            _currentNotes.Clear();
            _currentQualities.Clear();
            _beatStarterEnabled = false;
            int streakPower = _streakPower;

            _coroutineProvider.StartCoroutine(Coroutines.ExecuteAfterSeconds(time, () => {
                if (_currentSong != null)
                {
                    _currentSong.FinishCommandExecution();
                    ExecutionFinishing?.Invoke(_currentSong, streakPower);
                    Song activeSong = _currentSong;
                    _coroutineProvider.StartCoroutine(Coroutines.ExecuteAfterSeconds(HALF_NOTE_TIME, () => {
                        ExecutionFinished?.Invoke(activeSong, streakPower);
                        EnableTouchHandler();
                    }));
                }

                _currentCommandUpdate = Constants.Noop;
                _currentSong          = null;
                _beatStarterEnabled   = true;
            }));
        }
示例#5
0
 private void ShowNextPanelAndStartTimer(ComicPage curPage)
 {
     StopCoroutine(_nextTimer);
     _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(3, () => ShowNextPanelAndStartTimer(curPage)));
     curPage.ShowNextPanel();
 }
示例#6
0
 private void Start()
 {
     _pages     = GetComponentsInChildren <ComicPage>();
     _update    = ShowNextPageOnTouch;
     _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(2, ShowNextPage));
 }