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); }
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); }
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); } }