public void CreateTap(List <string> sentence, List <string> showWords, float sentenceDuration, int sentenceIndex) { List <BossTap> tapDic = new List <BossTap>(); List <string> keys = new List <string>(); int number = sentence.Count; for (int i = 0; i < number; i++) { if (!keys.Contains(sentence[i])) { BossTap tap = new BossTap(); tap.Init(showWords[i], sentence[i], Vector3.zero, sentenceIndex); tapDic.Add(tap); keys.Add(sentence[i]); } } m_TapDic = tapDic; StaticMonoBehaviour.Instance.StartCoroutine(ResetTapPosition()); }
List <PossibleRange> GetPossibleRange(BossTap tap) { List <PossibleRange> result = new List <PossibleRange>(); float width = tap.GetScaler().x + WidthExtra; if (width < MinWidth) { width = MinWidth; } for (int i = 0; i < m_LineHeight.Length; i++) { if (m_Lines[i].Space.Count == 0) { PossibleRange posRan = new PossibleRange(); posRan.LineIndex = i; posRan.LeftToRightRange = new KeyValuePair <float, float>(m_RectCenter - RectWidth * 0.5f, m_RectCenter + RectWidth * 0.5f); result.Add(posRan); continue; } else { for (int j = 0; j < m_Lines[i].Space.Count; j++) { float leftEdge, rightEdge; if (j == 0) { leftEdge = m_RectCenter - RectWidth * 0.5f; } else { leftEdge = m_Lines[i].Space[j - 1].Value; } if (j == m_Lines[i].Space.Count - 1) { rightEdge = m_RectCenter + RectWidth * 0.5f; } else { rightEdge = m_Lines[i].Space[j + 1].Key; } if (m_Lines[i].Space[j].Key - leftEdge > width) { PossibleRange posRan = new PossibleRange(); posRan.LineIndex = i; posRan.LeftToRightRange = new KeyValuePair <float, float>(leftEdge, m_Lines[i].Space[j].Key); result.Add(posRan); } if (j == m_Lines[i].Space.Count - 1) { if (rightEdge - m_Lines[i].Space[j].Value > width) { PossibleRange posRan = new PossibleRange(); posRan.LineIndex = i; posRan.LeftToRightRange = new KeyValuePair <float, float>(m_Lines[i].Space[j].Value, rightEdge); result.Add(posRan); } } } } } return(result); }