Exemple #1
0
 public static void WriteForms(BinaryWriter writer, FormInfo[] forms)
 {
     writer.Write(forms.Length * 8);
     Array.ForEach(forms, x => writer.Write(x.Id));
     Array.ForEach(forms, x => writer.Write(x.UnknownAfterId));
     foreach (var form in forms)
     {
         writer.Write(form.UnknownBeforeClass);
         writer.Write(form.Class);
         writer.WriteStringWithLengthPrefix(form.Name);
         writer.WriteStringWithLengthPrefix(form.Comment);
         FormElementInfo.WriteFormElements(writer, form.Elements);
     }
 }
Exemple #2
0
        public static FormInfo[] ReadForms(BinaryReader reader)
        {
            var headerSize       = reader.ReadInt32();
            int count            = headerSize / 8;
            var ids              = reader.ReadInt32sWithFixedLength(count);
            var unknownsAfterIds = reader.ReadInt32sWithFixedLength(count);
            var forms            = new FormInfo[count];

            for (int i = 0; i < count; i++)
            {
                var form = new FormInfo()
                {
                    Id                 = ids[i],
                    UnknownAfterId     = unknownsAfterIds[i],
                    UnknownBeforeClass = reader.ReadInt32(),
                    Class              = reader.ReadInt32(),
                    Name               = reader.ReadStringWithLengthPrefix(),
                    Comment            = reader.ReadStringWithLengthPrefix(),
                    Elements           = FormElementInfo.ReadFormElements(reader)
                };
                forms[i] = form;
            }
            return(forms);
        }