Beispiel #1
0
    public static PlayerReadingData GetReadingDataFromJsonData(JsonData jsonData)
    {
        PlayerReadingData data = new PlayerReadingData();

        data.standardAnswer = jsonData.TryGetString("standardAnswer");
        data.playerAnswer   = jsonData.TryGetString("playerAnswer");
        data.accuracy       = float.Parse(jsonData.TryGetString("accuracy"));
        data.score          = int.Parse(jsonData.TryGetString("score"));

        return(data);
    }
    /// <summary>
    /// 既是讯飞语音的回调,也是检查匹配函数
    /// </summary>
    /// <param name="content"></param>
    public void GetSRCallback(string content)
    {
        LogManager.Log("讯飞got:", content);
        if (!m_VoiceCheckFinished)
        {
            //  "语音"  每句提前结束
            LogManager.Log("  ____ \"语音\"  每句提前结束 ");

            m_CurrentReadingData.playerAnswer = content;

            int      rightNumber = 0;
            string[] words;
            if (LanguageManager.languageType == LanguageType.Chinese)
            {
                words = content.ToLower().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            }
            else
            {
                LogManager.Log("讯飞got content length: ", content.Length);
                words = new string[content.Length];
                for (int i = 0; i < content.Length; ++i)
                {
                    words[i] = content[i].ToString();
                }
                LogManager.Log("讯飞got words length: ", content.Length);
            }

            for (int i = 0; i < words.Length; i++)
            {
                if (m_CurVoiceCheckList.Contains(words[i]))
                {
                    rightNumber++;
                    m_CurVoiceCheckList.Remove(words[i]);
                    LogManager.Log("voice check right word:", words[i]);
                }
            }
            AnalysisManager.Instance.OnEvent("100003", null, StaticData.LevelID.ToString(), "发音次数");
            float accuracy = (float)rightNumber / m_VoiceCheckNumber;
            m_CurrentReadingData.accuracy = accuracy;
            m_CurrentReadingData.score    = (int)(accuracy * CorePlaySettings.Instance.m_VoiceRightPoint);
            CorePlayData.PlayerReadingData.Add(m_CurrentReadingData);
            m_CurrentReadingData = null;
            AnalysisManager.Instance.OnEvent("100004", null, StaticData.LevelID.ToString(), accuracy.ToString());
            CorePlayManager.Instance.m_SumVoiceScore += accuracy;

            m_VoiceCheckFinished = true;
            if (m_VoiceCompleteCallback != null)
            {
                m_VoiceCompleteCallback.Invoke(accuracy);
                m_VoiceCompleteCallback = null;
            }
        }
    }
Beispiel #3
0
    public static PlayerOperationData GetDataFromJson(string json)
    {
        PlayerOperationData data = new PlayerOperationData();

        JsonData jsonData = JsonMapper.ToObject(json);

        data.clickAccuracy = float.Parse(jsonData.TryGetString("clickAccuracy"));
        data.clickScore    = int.Parse(jsonData.TryGetString("clickScore"));
        data.clickNumber   = int.Parse(jsonData.TryGetString("clickNumber"));
        data.clickAccuracy = int.Parse(jsonData.TryGetString("rightNumber"));
        data.wrongNumber   = int.Parse(jsonData.TryGetString("wrongNumber"));
        data.wholeScore    = int.Parse(jsonData.TryGetString("wholeScore"));

        JsonData readingData = jsonData["readingData"];

        for (int i = 0; i < readingData.Count; i++)
        {
            data.m_ReadingData.Add(PlayerReadingData.GetReadingDataFromJsonData(readingData[i]));
        }

        return(data);
    }
    public void GetVoiceCheckSentence(List <string> list, Action <float> callback)
    {
        m_VoiceCompleteCallback = callback;
        m_VoiceCheckFinished    = false;

        m_CurrentReadingData = new PlayerReadingData();
        StringBuilder standardAnswer = new StringBuilder();

        for (int i = 0; i < list.Count; i++)
        {
            standardAnswer.Append(list[i] + " ");
        }
        m_CurrentReadingData.standardAnswer = standardAnswer.ToString();


        StringBuilder sb = new StringBuilder();

        m_CurVoiceCheckList.Clear();
        for (int i = 0; i < list.Count; i++)
        {
            if (LanguageManager.languageType == LanguageType.Chinese)
            {
                if (list[i].Contains(" "))
                {
                    string[] words = list[i].Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    for (int j = 0; j < words.Length; j++)
                    {
                        m_CurVoiceCheckList.Add(words[j].ToLower());
                        sb.Append(words[j].ToLower() + " ");
                    }
                }
                else
                {
                    m_CurVoiceCheckList.Add(list[i].ToLower());
                    sb.Append(list[i].ToLower() + " ");
                }
            }
            else
            {
                string content = list[i];

                //有些高亮文字带()需要先去除
                if (content.Contains("("))
                {
                    while (content.Contains("("))
                    {
                        content = content.Remove(content.IndexOf('('), 1);
                    }
                }
                if (content.Contains(")"))
                {
                    while (content.Contains(")"))
                    {
                        content = content.Remove(content.IndexOf(')'), 1);
                    }
                }

                //LogManager.LogError("GetVoiceCheckSentence,context length: " , content.Length);

                for (int j = 0; j < content.Length; ++j)
                {
                    m_CurVoiceCheckList.Add(content[j].ToString());
                }
            }
        }

        //LogManager.Log(" 普通 , Boss模式 检查语音:" , sb.ToString() ,"  / " , Time.frameCount);
        VoiceController.Start_RecordingAnim();
        m_VoiceCheckNumber = m_CurVoiceCheckList.Count;
    }