Ejemplo n.º 1
0
        private void SetUpTuneByArray(float startIndex, NoteData[] indexItems)
        {
            var noteNum = indexItems.Length;

            for (var i = 0; i < noteNum; i++)
            {
                var noteData = indexItems[i];
                var index    = noteData.index;

                NoteItem parentNode = null;

                var notesLength = noteData.notes.Length;
                for (var j = 0; j < notesLength; j++)
                {
                    var child  = noteData.notes[j];
                    var xId    = child.x;
                    var state  = child.state;
                    var offset = child.offset;

                    var note = CreateOneNote((float)index + offset, xId, state);
                    noteItems.Add(note);

                    // 連結子ノーツを親ノーツに追加
                    switch (state)
                    {
                    case NoteState.KillUnit:
                        // 横連結ノーツの場合
                        if (notesLength > 1)
                        {
                            if (j == 0)
                            {
                                var lastChild = noteData.notes[notesLength - 1];
                                note.hasLine    = true;
                                note.lineLength = lastChild.x - xId;

                                parentNode = note;
                            }
                            else if (j == notesLength - 1)
                            {
                                parentNode?.AddChildNote(note);
                            }
                        }

                        break;

                    case NoteState.KillLinkStart:
                        parentNode = note;
                        break;

                    case NoteState.KillLinkEnd:
                        parentNode?.AddChildNote(note);
                        break;

                    default:
                        break;
                    }
                }
            }
        }