/// <summary> /// トラック処理 /// </summary> private void ReadCommandUntilNextTrack(TrackData Track, MmlFileReader m, bool Block = false) { while (!Error.HasError) { var ct = m.FetchType(); // EOF if (ct == MmlCharactorType.Eof) { if (Block) { Error.Add(ErrorData.Type.BlockEndNotFound); } return; } // 改行 if (ct == MmlCharactorType.NextLine) { m.SkipType(); if (Block) { continue; } return; } // 改行 if (m.IsSpace(ct) || m.IsComment(ct)) { m.SkipType(); continue; } // ブロック終了 if (ct == MmlCharactorType.BlockEnd) { if (!Block) { Error.Add(ErrorData.Type.UnknownCharacterUsed); return; } m.SkipType(); m.StepNextLine(); return; } // トラックコマンド if (ct == MmlCharactorType.GeneralChanacter) { Command.Make(Song, Track, m); var lc = Track.GetLastCommand(); if (lc != null) { VerboseWriteLine(lc.ToString()); } } else { Error.Add(ErrorData.Type.UnknownCharacterUsed); return; } } }