private void parseTones(Song2014 xml, Sng2014File sng) { sng.Tones = new ToneSection(); if (xml.Tones != null) sng.Tones.Count = xml.Tones.Length; else sng.Tones.Count = 0; sng.Tones.Tones = new Tone[sng.Tones.Count]; for (int i = 0; i < sng.Tones.Count; i++) { var tn = xml.Tones[i]; var t = new Tone(); t.Time = tn.Time; try { // fix for undefined tone name (tone name should be shorter) if (xml.ToneBase.ToLower().Contains(tn.Name.ToLower())) t.ToneId = 0; if (xml.ToneA.ToLower().Contains(tn.Name.ToLower())) t.ToneId = 0; else if (xml.ToneB.ToLower().Contains(tn.Name.ToLower())) t.ToneId = 1; else if (xml.ToneC.ToLower().Contains(tn.Name.ToLower())) t.ToneId = 2; else if (xml.ToneD.ToLower().Contains(tn.Name.ToLower())) t.ToneId = 3; else throw new InvalidDataException("Undefined tone name: " + tn.Name); sng.Tones.Tones[i] = t; } catch (Exception) { throw new InvalidDataException(@"There is tone name error in XML Arrangement: " + xml.Arrangement + " " + tn.Name + " is not properly defined." + "Use EOF to re-author custom tones or Notepad to attempt manual repair." ); } } }
private void parseTones(Song2014 xml, Sng2014File sng) { sng.Tones = new ToneSection(); if (xml.Tones != null) sng.Tones.Count = xml.Tones.Length; else sng.Tones.Count = 0; sng.Tones.Tones = new Tone[sng.Tones.Count]; for (int i = 0; i < sng.Tones.Count; i++) { var tn = xml.Tones[i]; var t = new Tone(); t.Time = tn.Time; if (tn.Name == xml.ToneA) t.ToneId = 0; else if (tn.Name == xml.ToneB) t.ToneId = 1; else if (tn.Name == xml.ToneC) t.ToneId = 2; else if (tn.Name == xml.ToneD) t.ToneId = 3; else throw new InvalidDataException("Undefined tone name: " + tn.Name); sng.Tones.Tones[i] = t; }; }
private void parseTones(Song2014 xml, Sng2014File sng) { //even if no tone changes, write section size (of 4 bytes) sng.Tones = new ToneSection(); sng.Tones.Count = xml.Tones == null ? 0 : xml.Tones.Length; sng.Tones.Tones = new Tone[sng.Tones.Count]; for (int i = 0; i < sng.Tones.Count; i++) { var tn = xml.Tones[i]; var t = new Tone { Time = tn.Time }; try { if (String.IsNullOrEmpty(xml.ToneBase)) throw new InvalidDataException("ToneBase must be defined."); // fix for undefined tone name (tone name should be shorter) if (xml.ToneBase.ToLower() == tn.Name.ToLower()) t.ToneId = 0; if (xml.ToneA.ToLower() == tn.Name.ToLower()) t.ToneId = 0; else if (xml.ToneB.ToLower() == tn.Name.ToLower()) t.ToneId = 1; else if (xml.ToneC.ToLower() == tn.Name.ToLower()) t.ToneId = 2; else if (xml.ToneD.ToLower() == tn.Name.ToLower()) t.ToneId = 3; sng.Tones.Tones[i] = t; } catch (Exception) { throw new InvalidDataException("There is tone name error in XML Arrangement: " + xml.Arrangement + " " + tn.Name + " is not properly defined." + Environment.NewLine + "Use EOF to re-author custom tones or Notepad to attempt manual repair."); } } // TODO: confirm that tonebase is set to one of the multi tones in case user didn't do it in EOF }
public void read(EndianBinaryReader r) { Count = r.ReadInt32(); Tones = new Tone[Count]; for (int i = 0; i < Count; i++) { var obj = new Tone(); obj.read(r); Tones[i] = obj; } }
public void read(BinaryReader r) { this.Count = r.ReadInt32(); this.Tones = new Tone[this.Count]; for (int i=0; i<this.Count; i++) { Tone obj = new Tone(); obj.read(r); this.Tones[i] = obj; } }