public void read(EndianBinaryReader r) { Count = r.ReadInt32(); Sections = new Section[Count]; for (int i = 0; i < Count; i++) { var obj = new Section(); obj.read(r); Sections[i] = obj; } }
private void parseSections(Song2014 xml, Sng2014File sng) { sng.Sections = new SectionSection(); sng.Sections.Count = xml.Sections.Length; sng.Sections.Sections = new Section[sng.Sections.Count]; for (int i = 0; i < sng.Sections.Count; i++) { var section = xml.Sections[i]; var s = new Section(); readString(section.Name, s.Name); s.Number = section.Number; s.StartTime = section.StartTime; if (i + 1 < sng.Sections.Count) s.EndTime = xml.Sections[i + 1].StartTime; else s.EndTime = xml.SongLength; s.StartPhraseIterationId = getPhraseIterationId(xml, s.StartTime, false); s.EndPhraseIterationId = getPhraseIterationId(xml, s.EndTime, true); for (int j = getMaxDifficulty(xml); j >= 0; j--) { // used string mask for section at all difficulty j Byte mask = 0; foreach (var note in xml.Levels[j].Notes) if (note.Time >= s.StartTime && note.Time < s.EndTime) { mask |= (Byte)(1 << note.String); } foreach (var chord in xml.Levels[j].Chords) if (chord.Time >= s.StartTime && chord.Time < s.EndTime) { var ch = xml.ChordTemplates[chord.ChordId]; if (ch.Fret0 != -1) mask |= (Byte)(1 << 0); if (ch.Fret1 != -1) mask |= (Byte)(1 << 1); if (ch.Fret2 != -1) mask |= (Byte)(1 << 2); if (ch.Fret3 != -1) mask |= (Byte)(1 << 3); if (ch.Fret4 != -1) mask |= (Byte)(1 << 4); if (ch.Fret5 != -1) mask |= (Byte)(1 << 5); if (mask == 0x3F) break; } // use mask from next section if there are no notes if (mask == 0 && j < getMaxDifficulty(xml)) mask = s.StringMask[j + 1]; s.StringMask[j] = mask; } sng.Sections.Sections[i] = s; } }
public void read(BinaryReader r) { this.Count = r.ReadInt32(); this.Sections = new Section[this.Count]; for (int i=0; i<this.Count; i++) { Section obj = new Section(); obj.read(r); this.Sections[i] = obj; } }