public void Reset()
 {
     m_Timer         = 0;
     m_StartAutoPlay = false;
     m_IntradaStatus = IntradaStatus.WaitForPlaying;
     UIRestart();
     AudioAndMicRestart();
     DataRestart();
     m_InputCheck.Restart();
     m_TapCreator.Restart();
     m_VoiceCreator.Restart();
     if (m_BossWar != null)
     {
         m_BossWar.Restart();
     }
     if (m_KVLogic != null)
     {
         m_KVLogic.Restart();
     }
     ClearIntrada();
     StaticMonoBehaviour.Instance.StopAllCoroutines();
     SceneController.instance.Reset();
     MicManager.Instance.Reset();
     SetComboTextActive(false);
     if (LoginScene.isFirstGoingGame)
     {
         PageManager.Instance.CurrentPage.GetComponent <CorePlayPage>().HidePauseButton();
     }
     else
     {
         PageManager.Instance.CurrentPage.GetComponent <CorePlayPage>().ShowPauseButton();
     }
     if (stageManager != null)
     {
         Destroy(stageManager.gameObject);
         stageManager = null;
     }
 }
    private void ProcessEvents(CorePlayTimerEvent te)
    {
        switch (te.m_Type)
        {
        case CorePlayTimerEvent.EventType.CreateTapSentence:
            //Debug.Log("CreateTapSentence = " + te.m_Timer + " / time = " + Time.time);
            m_TapCreator.CreateWords(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex], te.m_SentenceIndex);
            break;

        case CorePlayTimerEvent.EventType.CreateVoiceSentence:
            m_VoiceCreator.CreateWords(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex], te.m_SentenceIndex);
            //Debug.Log(" 0 = 普通模式 开始录音" + "  / " + Time.frameCount);
            StartMicRecord();
            break;

        case CorePlayTimerEvent.EventType.EndVoiceChecker:
            Debug.Log(" 1 = 普通模式 结束录音");
            StopMicRecord();
            break;

        case CorePlayTimerEvent.EventType.EndVoiceUI:
            m_VoiceCreator.BGFadeOut();
            if (m_StartAutoPlay)
            {
                m_AutoPlay.Show();
            }
            break;

        case CorePlayTimerEvent.EventType.HighLightTap:
            string word = CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects[te.m_HOIndex].Word.ToLower();
            m_TapCreator.HighLightWord(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects, te.m_HOIndex, te.m_HighLightTime);
            m_InputCheck.SetCurHOIndex(te.m_SentenceIndex, te.m_HOIndex);
            if (m_StartAutoPlay)
            {
                ClickObj co = CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.ClickObjs[te.m_HOIndex];
                m_AutoPlay.Simulate(CorePlaySettings.Instance.m_PreShowTimeLength * RuntimeConst.MSToSecond, co.m_Position);
            }
            StartCoroutine(HOPointTimeLogic(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects[te.m_HOIndex]));
            break;

        case CorePlayTimerEvent.EventType.HighLightVoice:
            m_VoiceCreator.HighLightWord(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects, te.m_HOIndex);
            break;

        case CorePlayTimerEvent.EventType.StartCount:
            CorePlayIntrada intrada = new CorePlayIntrada(CorePlayData.BMPDelta, () => { m_IntradaStatus = IntradaStatus.Played; });
            intrada.Show();
            m_IntradaStatus = IntradaStatus.Playing;
            break;

        case CorePlayTimerEvent.EventType.StartPlayMusic:
            StartCurrentSong();
            break;

        case CorePlayTimerEvent.EventType.StartTapChecker:
            // Temp Event
            CorePlaySceneManager.checkSentenceEvent.Invoke();
            int sentenceLength = CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].m_InOutTime.EndTime -
                                 CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].m_InOutTime.StartTime;
            int timeLength = sentenceLength +
                             CorePlaySettings.Instance.m_PreShowTimeLength;
            m_InputCheck.CreateCheckSentenceWithMS(CorePlayData.CurrentSong.SentenceObjs[te.m_SentenceIndex].ClickAndHOList.HitObjects, te.m_SentenceIndex, sentenceLength);
            float duration = timeLength * 0.001f;
            StartCoroutine(SentenceCheck(te.m_SentenceIndex, duration));
            break;

        case CorePlayTimerEvent.EventType.StartVoiceChecker:
            CreateVoiceCheck(te.m_SentenceIndex);
            break;

        case CorePlayTimerEvent.EventType.StartVoiceUI:
            m_VoiceCreator.BGFadeIn();
            if (m_StartAutoPlay)
            {
                m_AutoPlay.Close();
            }
            break;

        case CorePlayTimerEvent.EventType.StartBoss:
            StartBossWarLogic();
            break;

        case CorePlayTimerEvent.EventType.StartKeyVoice:
            StartKeyAndVoice();
            break;
        }
    }