Esempio n. 1
0
 /// <summary>
 /// アニメーターのタイマーを更新する。
 /// </summary>
 public void Update()
 {
     Animators[Index].Tick();
     if (Animators[Index].Counter.Value >= Animators[Index].Counter.End && Animators[Index].Counter.State == TimerState.Stopped)
     {
         if (Animators.Count - 1 > Index)
         {
             Index++;
             Animators[Index].Start();
         }
         else
         {
             if (!EndFlag)
             {
                 SequenceEnded?.Invoke(this, null);
                 EndFlag = true;
             }
         }
     }
     Animators[Index].Tick();
 }
Esempio n. 2
0
        public void OnScreenTap()
        {
            if (_currentScreenIndex + 1 == _ftueSequence.ScreenSequence.Count)
            {
                SequenceEnded?.Invoke(_missFtueSelected);
                if (!_missFtueSelected)
                {
                    _ftueSequence       = _missFtueSequence;
                    _currentScreenIndex = -1;
                    _missFtueSelected   = true;
                }
                gameObject.SetActive(false);
                _aiManagerService.PauseAI(false);
                _playerHelperView.StartDelayedHelpIn();
                return;
            }

            var nextScreenConfig = _ftueSequence.ScreenSequence[_currentScreenIndex + 1];

            if (nextScreenConfig.AwakeTrigger != FTUETrigger.None)
            {
                gameObject.SetActive(false);
                _aiManagerService.PauseAI(false);
                _playerHelperView.StartDelayedHelpIn();
            }
            else
            {
                ShowNextScreen();
            }

            //if the current screen was waiting for an unblock, trigger the pending animation after close the screen
            if (_ftueSequence.ScreenSequence[_currentScreenIndex].AwakeTrigger == FTUETrigger.Unblock)
            {
                UnblockAction?.Invoke();
            }
        }