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); } }; })); }
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); }
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); }
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; })); }
private void ShowNextPanelAndStartTimer(ComicPage curPage) { StopCoroutine(_nextTimer); _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(3, () => ShowNextPanelAndStartTimer(curPage))); curPage.ShowNextPanel(); }
private void Start() { _pages = GetComponentsInChildren <ComicPage>(); _update = ShowNextPageOnTouch; _nextTimer = StartCoroutine(Coroutines.ExecuteAfterSeconds(2, ShowNextPage)); }