protected override void Awake() { base.Awake(); clickObj = actionObj as ClickObj; clickObj.onMouseEnter.AddListener(OnEnterClickObj); clickObj.onMouseExit.AddListener(OnExitClickObj); }
public RhythmTap CreateWord(CorePlayManager manager, ClickObj clickWord, EffectInOutTiming inOut = EffectInOutTiming.Default, int sentenceIndex = 0) { RhythmTap tap = new RhythmTap(); tap.Start(manager, clickWord, inOut, sentenceIndex); return(tap); }
public void GetHit(int damage) { int healsnew = Heals - damage; GameObject canvas = GameObject.Find("Canvas"); clickTextPool = Instantiate(ClickText, canvas.transform).GetComponent <ClickObj>(); clickTextPool.StartMotion(damage); Destroy(clickTextPool.gameObject, 3f); if (healsnew <= 0) { _gameHelper.TakeCrystal(Crystal); Destroy(gameObject); Debug.Log("Destroy " + Enemy.countBoss); _gameHelper.SpawnEnemy(); int num = Enemy.countBoss % Constant.whoIsBoss; if (num == 0) { _gameHelper.ShowBG(); } Player.currentLevel += (int)(Player.maxLevel * Constant.cofLevel); _gameHelper.levelBar.value = Player.currentLevel; randomPart = Random.Range(0, 5); Debug.Log(randomPart); GameVar.ship[randomPart] = 1; } Heals = healsnew; _gameHelper.helsEnemyBar.value = Heals; Enemy.health = healsnew; Enemy.oldHealth = healsnew; }
public void Start(CorePlayManager manager, ClickObj clickWord, EffectInOutTiming inOut, int sentenceIndex) { IsTutorial = false; m_Manager = manager; m_Clickable = true; m_HitWord = clickWord.m_Word; m_SentenceIndex = sentenceIndex; // 创建 m_ObjectTrans = ObjectPool.GetOne("RhythmController").transform; // Set Transform Vector3 pos = clickWord.m_Position; pos = new Vector3(pos.x / OSU_WIDTH * ScreenWidth - HalfScreenWidth, HalfScreenHeight - pos.y / OSU_HEIGHT * ScreenHeight, 0); // Set RhythmController contrller = m_ObjectTrans.GetComponent <RhythmController>(); contrller.Init(this, clickWord.m_Word, clickWord.m_ShowWord, pos, inOut); }
public void SetPosition(ClickObj obj) { //TeachRhythmRenderer render = new TeachRhythmRenderer(); //SetRenderer(render); //m_ObjectTrans = m_RhythmRenderer.SetTransform(Vector3.zero); //m_RhythmRenderer.SetPosition(obj.m_Position); //m_RhythmRenderer.Show(); }
// Use this for initialization void Start() { Clicke clicke = new Clicke(); ClickObj clickobj = new ClickObj(); clickobj.ClickEvent += clicke.click_English; clickobj.testevent(); }
void Start() { _gameHelper = GameObject.FindObjectOfType <Game>(); _gameHelper.helsEnemyBar.maxValue = Heals; _gameHelper.helsEnemyBar.value = Heals; clickTextPool = GameObject.FindObjectOfType <ClickObj>(); if (Enemy.oldHealth > 0) { Heals = Enemy.oldHealth; Debug.Log("Health enemy = " + Heals); } }
// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(1)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { try { ClickObj obj = hit.transform.gameObject.GetComponent <ClickObj>(); obj.Respawn(); } catch (System.Exception) { } } } }
static SongObject ParseOSU(TextAsset textAsset, string fileName) { SongObject songObj = new SongObject(); CollectType _collectType = CollectType.General; string[] contents = textAsset.text.Split('\n'); Dictionary <string, string> result = new Dictionary <string, string> (); result.Add("Title:", fileName); List <HitObject> tmpHitObject = new List <HitObject> (); int k = 0; bool nextSentenceAheadIn = false; bool streamSentenceEdit = false; for (int i = 0; i < contents.Length; i++) { string oneLine = contents[i].Trim(); //空行和注释行 不解析 if (string.IsNullOrEmpty(oneLine) || oneLine.StartsWith("//", StringComparison.Ordinal)) { continue; } if (oneLine.Contains("[HitObjects]")) { _collectType = CollectType.HitObject; continue; } if (oneLine.Contains("[SentenceInfo]")) { _collectType = CollectType.SentenceInfo; continue; } switch (_collectType) { case CollectType.General: for (int j = 0; j < m_Fields.Length; j++) { if (oneLine.Contains(m_Fields[j])) { result.Add(m_Fields[j], oneLine.Replace(m_Fields[j], "")); } } break; case CollectType.SentenceInfo: if (!streamSentenceEdit) { // #region 普通句子 SentenceObj sentenceobjs = new SentenceObj(); if (oneLine.Contains("@@VoiceStart")) { sentenceobjs.Type = SentenceType.KeyVoiceStart; string[] stringArray = oneLine.Split(','); int sentenceStart = int.Parse(stringArray[1]); InOutTime inOut = new InOutTime(sentenceStart, sentenceStart); sentenceobjs.m_InOutTime = inOut; songObj.SentenceObjs.Add(sentenceobjs); _collectType = CollectType.KeyAndVoice; // LogManager.Log(oneLine , " /// _collectType = CollectType.KeyAndVoice"); continue; } if (oneLine.Contains("@@")) { sentenceobjs.Type = SentenceType.BossStart; string[] stringArray = oneLine.Replace("@@", "").Split(','); if (stringArray.Length != 2) { LogManager.LogError("boss战起始时间和延迟播放音乐配置错误"); } int sentenceStart = int.Parse(stringArray[0]); int musicDelay = int.Parse(stringArray[1]); InOutTime inOut = new InOutTime(sentenceStart, sentenceStart); sentenceobjs.m_InOutTime = inOut; songObj.BossWarMusicDelay = musicDelay; streamSentenceEdit = true; songObj.SentenceObjs.Add(sentenceobjs); continue; } string[] parse = oneLine.Split(','); int startTime = int.Parse(parse[0]); int endTime = int.Parse(parse[1]); if (parse[2].Contains("#")) { sentenceobjs.Type = SentenceType.Voice; parse[2] = parse[2].Replace("#", ""); } else { sentenceobjs.Type = SentenceType.Common; } string[] param = parse[2].Split('$'); string[] wordShow = parse[3].Split('$'); string[] wordSoundFile = null; if (parse.Length >= 5) { wordSoundFile = parse[4].Split('$'); } for (int j = 0; j < param.Length; j++) { if (k >= tmpHitObject.Count) { LogManager.LogError("OSU文件中hitObject数目 与 txt文件中的单词数量不匹配"); return(null); } try { ClickObj click = new ClickObj(param[j], tmpHitObject[k].Position, wordShow[j]); click.m_ClickTimes = 1; sentenceobjs.ClickAndHOList.ClickObjs.Add(click); tmpHitObject[k].Word = param[j]; if (wordSoundFile != null && wordSoundFile.Length > 0) { if (wordSoundFile.Length == param.Length) { tmpHitObject[k].SonudFile = wordSoundFile[j]; } else { LogManager.LogError(string.Format("行 {0} 有错误:句子单词个数 与 单词语音文件数量不匹配", (i + 1))); return(null); } } sentenceobjs.ClickAndHOList.HitObjects.Add(tmpHitObject[k]); k++; } catch (Exception e) { LogManager.LogError("the wrong line is:", (i + 1).ToString()); LogManager.LogError(e); LogManager.LogError(e.StackTrace); } } InOutTime inOutTime = new InOutTime(startTime, endTime); sentenceobjs.m_InOutTime = inOutTime; //判断这一句是否应该延迟删除,下一句是否应该提前出现 if (endTime - sentenceobjs.ClickAndHOList.HitObjects[sentenceobjs.ClickAndHOList.HitObjects.Count - 1].StartMilliSecond < CorePlaySettings.Instance.m_MinIntervalBeforeSentenceEnd) { //这一句延迟删除,下一句提前出现 if (nextSentenceAheadIn) { sentenceobjs.m_InOutTime.InOut = EffectInOutTiming.Both; } else { sentenceobjs.m_InOutTime.InOut = EffectInOutTiming.DelayOut; nextSentenceAheadIn = true; } } else { if (nextSentenceAheadIn) { sentenceobjs.m_InOutTime.InOut = EffectInOutTiming.AheadIn; nextSentenceAheadIn = false; } } songObj.SentenceObjs.Add(sentenceobjs); #endregion } else { #region boss句子 string[] parse = oneLine.Split(','); StreamSentenceGroup group = new StreamSentenceGroup(); if (parse.Length == 5 && parse[4].Equals("BB")) { group.CalckSentence = true; } else { group.CalckSentence = false; } group.SetTimeLength(int.Parse(parse[0])); if (parse[1].Contains("#")) { group.SetSentenceType(SentenceType.Voice); parse[1] = parse[1].Replace("#", ""); } else { group.SetSentenceType(SentenceType.Common); } string[] matchSentences = parse[1].Replace("@@", "").Split('|'); string[] showSentences = parse[2].Split('|'); string[] fileNames = parse[3].Split('|'); if (matchSentences.Length != showSentences.Length || showSentences.Length != fileNames.Length) { LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:断句数量不匹配"); return(null); } else { int sentenceNumber = matchSentences.Length; for (int line = 0; line < sentenceNumber; line++) { StreamSentence bossSentence = new StreamSentence(); bossSentence.SetAudioFileName(fileNames[line].ToLower()); string[] words = matchSentences[line].Split('$'); string[] showWords = showSentences[line].Split('$'); if (words.Length != showWords.Length) { LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:单词数量不匹配 ", words.Length.ToString(), "/" + showWords.Length.ToString()); return(null); } else { for (int index = 0; index < words.Length; index++) { KeyValuePair <string, string> kv = new KeyValuePair <string, string> (words[index], showWords[index]); bossSentence.AddToSentence(kv); } } group.AddSentence(bossSentence); } } songObj.StreamSentences.Add(group); #endregion } break; case CollectType.HitObject: if (oneLine.Contains("C") || oneLine.Contains("P") || oneLine.Contains("L") || oneLine.Contains("B")) { //2017年10月28日版本先不做这些功能 continue; } else { string[] param = oneLine.Split(','); if (param.Length != 6) { LogManager.LogError("data parse error: the data file is --", fileName); } else { Vector2 pos = new Vector2(int.Parse(param[0]), int.Parse(param[1])); int startTime = int.Parse(param[2]); int type = int.Parse(param[3]); int soundType = int.Parse(param[4]); HitObject ho = new HitObject(pos, startTime, type, soundType); tmpHitObject.Add(ho); } } break; case CollectType.KeyAndVoice: //LogManager.Log(oneLine , " ||||| case CollectType.KeyAndVoice:"); string[] parses = oneLine.Split(','); if (parses.Length < 3) { LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:分段不够"); return(null); } StreamSentence ss = new StreamSentence(); ss.SetDuration(int.Parse(parses[0]) * 0.001f); if (parses[1].StartsWith("#", StringComparison.Ordinal)) { //parses[1] = parses[1].Substring(1); parses[1] = parses[1].Replace("#", ""); //LogManager.Log (" 需要录音 = " , parses[1]); ss.needRecord = true; ss.SetType(SentenceType.NonRhythmVoice); //if (parses[1].StartsWith ("#", StringComparison.Ordinal)) //{ // parses[1] = parses[1].Substring (1); // ss.needRecord = true; //} } else { ss.SetType(SentenceType.NonRhythmCommon); } if (parses.Length == 4) { string[] tempAudios = parses[3].Split('|'); if (string.IsNullOrEmpty(tempAudios[0]) == false) { ss.SetAudioFileName(tempAudios[0].ToLower()); } if (tempAudios.Length == 2 && string.IsNullOrEmpty(tempAudios[1]) == false) { ss.Speaker = tempAudios[1]; } //ss.SetAudioFileName(parses[3]); } string[] firstWords = parses[1].Split('$'); string[] clickWords = parses[2].Split('$'); if (firstWords.Length != clickWords.Length) { LogManager.LogError("TXT文件 第 ", (i + 1).ToString(), "行报错:单词数量不匹配"); return(null); } else { for (int index = 0; index < firstWords.Length; index++) { KeyValuePair <string, string> kv = new KeyValuePair <string, string> (firstWords[index], clickWords[index]); ss.AddToSentence(kv); //ClickObj click = new ClickObj(kv.Key, tmpHitObject[k].Position, kv.Value); //ClickObj click = new ClickObj(kv.Key, Vector2.zero, kv.Value); //click.m_ClickTimes = 1; //ss.ClickAndHOList.ClickObjs.Add(click); //tmpHitObject[k].Word = kv.Key; //ss.ClickAndHOList.HitObjects.Add(tmpHitObject[k]); //k++; } } songObj.NonRhythmSenteces.Add(ss); break; } } songObj.SetContents(result); return(songObj); }
void Awake() { clickObj = GetComponent <ClickObj>(); }
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; } }
private void Update() { if (Pause == false) { if (m_Status == TutorialStatus.ErJi) { m_Status = TutorialStatus.Nothing; m_Erji.SetActive(true); AudioObject audioObj = null; if (LanguageManager.languageType == LanguageType.Chinese) { audioObj = AudioController.Play("Recording_erji"); } else { audioObj = AudioController.Play("en_Recording1"); } audioObj.completelyPlayedDelegate = EndErji; } else if (m_Status == TutorialStatus.StartPlayMusic) { m_Status = TutorialStatus.Nothing; ClickObj co = null; if (LanguageManager.languageType == LanguageType.Chinese) { co = new ClickObj("Hello", new Vector2(256, 192), "Hello"); } else { co = new ClickObj("你好", new Vector2(256, 192), "你好"); } obj_hand.SetActive(false); m_Tap = CorePlayManager.Instance.m_TapCreator.CreateWord(null, co); m_Tap.IsTutorial = true; m_Tap.TutNum(1); m_TapController = m_Tap.contrller; m_Zhuyi.SetActive(true); AudioObject audioObj = null; if (LanguageManager.languageType == LanguageType.Chinese) { audioObj = AudioController.Play("Recording_1"); } else { audioObj = AudioController.Play("en_Recording2"); } audioObj.completelyPlayedDelegate = ChangeStatusToPlayBatchKey; } else if (m_Status == TutorialStatus.PlayBatchKey) { BPM = 60; m_Beat = 60000f / BPM; m_Status = TutorialStatus.ClickBatchKey; m_PlayStatus = Status.Sound; RhyTapHight(); } else if (m_Status == TutorialStatus.RetryPlayBatchKey) { BPM = 60; m_Beat = 60000f / BPM; m_Status = TutorialStatus.ClickBatchKey; m_PlayStatus = Status.Sound; m_Zhuyi.SetActive(true); AudioObject audioObj = null; if (LanguageManager.languageType == LanguageType.Chinese) { audioObj = AudioController.Play("Recording_6"); } else { audioObj = AudioController.Play("en_Recording2"); } audioObj.completelyPlayedDelegate = RepetClick; } else if (m_Status == TutorialStatus.StartSound) { m_Status = TutorialStatus.Nothing; AudioObject audioObj = null; if (LanguageManager.languageType == LanguageType.Chinese) { audioObj = AudioController.Play("Recording_2"); } else { audioObj = AudioController.Play("en_Recording5"); } audioObj.completelyPlayedDelegate = StartPlaySound; } else if (m_Status == TutorialStatus.PlaySound) { RepetNum += 1; m_Status = TutorialStatus.Nothing; FlyWord(); } else if (m_Status == TutorialStatus.RetryPlaySound) { RepetNum += 1; m_Status = TutorialStatus.Nothing; List <string> wordList = new List <string>(); if (LanguageManager.languageType == LanguageType.Chinese) { wordList.Add("Recording_7"); } else { wordList.Add("en_Recording6"); } var audioObj = AudioController.PlayList(wordList); audioObj.completelyPlayedDelegate = FlyWord; } else if (m_Status == TutorialStatus.CheckSound) { m_Timer += Time.deltaTime * 1000f; if (m_Timer >= 5000f) { if (RepetNum < 2) { XunFeiSRManager.Instance.StopListen(); MicManager.Instance.StopRecord(); m_Status = TutorialStatus.RetryPlaySound; } else { m_Status = TutorialStatus.Nothing; XunFeiSRManager.Instance.StopListen(); MicManager.Instance.StopRecord(); AudioObject audioObj = null; if (LanguageManager.languageType == LanguageType.Chinese) { audioObj = AudioController.Play("Recording_5"); } else { audioObj = AudioController.Play("en_Recording3"); } AnalysisManager.Instance.OnEvent("100005", null, "新手", "完成新手"); audioObj.completelyPlayedDelegate = Skip; } } } } }