示例#1
0
        public Song ParseSong(string chordSheet)
        {
            StringReader reader = new StringReader(chordSheet);
            var          song   = new Song();

            while (reader.Peek() != -1)
            {
                var line = reader.ReadLine();

                var songLine = new SongLine();

                songLine.Elements.AddRange(ProcessLine(line));

                var previousLine = song.Lines.LastOrDefault();

                songLine.PreviousLine = previousLine;

                if (previousLine != null)
                {
                    previousLine.NextLine = songLine;
                }

                song.Lines.Add(songLine);
            }

            return(song);
        }
示例#2
0
 void Start()
 {
     responder    = GetComponent <RhythmicObject>();
     mapManager   = Object.FindObjectOfType(typeof(RhythmMapsManager)) as RhythmMapsManager;
     line         = mapManager.GetActiveMap().GetLine(part);
     line.Tick   += Act;
     line.Switch += ChangeStyle;
 }
        public void ParseSongLineTest()
        {
            // Arrange
            Parser sut  = new Parser(null);
            string line = "asdf [X]asdf asdf";
            int    expectedBlockCount = 3;

            // Act
            SongLine result = sut.ParseSongLine(line);

            // Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Blocks);
            Assert.AreEqual(expectedBlockCount, result.Blocks.Count);
        }
示例#4
0
    Dictionary <string, SongLine> songLines; //the point of this class: mapDataFile -> mapData -> songLines and sync with audio

    void Awake()
    {
        songPlayer      = GetComponent <AudioSource>();
        songPlayer.clip = musicClip;
        mapData         = mapDataFile.ToString();
        mapData         = mapData.Replace("\n", " ");
        string[] lines = mapData.Split('#');

        songLines = new Dictionary <string, SongLine>();
        foreach (var nameAndDatas in lines)
        {
            string[] nameAndData = nameAndDatas.Split(':');

            SongLine line = Instantiate(lineObjectPrefab, transform.position, transform.rotation) as SongLine;
            line.transform.parent = transform;
            line.name             = line.part = nameAndData[0];
            line.SetMap(nameAndData[1]);
            line.SetAudioSource(songPlayer);

            songLines.Add(nameAndData[0], line);
        }
    }