예제 #1
0
    private void Update()
    {
        if (_state == State.Gameplay && _beatMap.IsReady())
        {
            if (_beatMap.IsDone())
            {
                _state = State.Result;
                playerData.SetMusicGrade(gradeList);
                _audioManager.TryPlay();

                _currentDialog = resultDialog;
                _currentDialog.ApplyCharacter(_characterData);
                _currentDialog.Display(playerData, _characterData);
                return;
            }

            BeatObject beatObject = _beatMap.RequestDrawableBeat();
            if (beatObject != null)
            {
                BeatRenderer beatRenderer = Instantiate(prefabBeat).GetComponent <BeatRenderer>();
                beatRenderer.SetData(beatObject, _beatMap);
                beatRenderer.Init();
            }

            BeatObjectGrade grade = _beatMap.React(false);

            if (grade == BeatObjectGrade.Miss)
            {
                gradeList.Add(grade);
                badAudio.Play();
                Instantiate(prefabMiss);
            }
        }
    }
예제 #2
0
 public void SetGrade(BeatObjectGrade argGrade)
 {
     grade = argGrade;
 }
예제 #3
0
    public void OnInteract()
    {
        Result result;

        switch (_state)
        {
        case State.Beginning:
            result = beginningDialog.Display(playerData, _characterData);

            if (result.isDone)
            {
                _state = State.Gameplay;
                _audioManager.TryPause();
                StartCoroutine(StarDelay());
            }
            break;

        case State.Gameplay:
            if (_beatMap.IsReady())
            {
                BeatObjectGrade grade = _beatMap.React(true);
                gradeList.Add(grade);

                switch (grade)
                {
                case BeatObjectGrade.Waiting:
                    break;

                case BeatObjectGrade.Excellent:
                    Instantiate(prefabExcellent);
                    goodAudio.Play();
                    break;

                case BeatObjectGrade.Good:
                    Instantiate(prefabGreat);
                    goodAudio.Play();
                    break;

                case BeatObjectGrade.Okay:
                    Instantiate(prefabGood);
                    goodAudio.Play();
                    break;

                case BeatObjectGrade.Miss:
                    break;

                case BeatObjectGrade.Inactive:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }

            break;

        case State.Result:
            result = _currentDialog.Display(playerData, _characterData);

            if (result.isDone)
            {
                SceneManager.LoadScene("Art");
            }
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }