public void WriteAppearanceSection(BinaryWriter writer, CharacterCustomizationAppearances.AppearanceSection appearanceSection)
        {
            writer.Write((byte)(appearanceSection.SectionName.Length + 128));
            writer.Write(Encoding.ASCII.GetBytes(appearanceSection.SectionName));

            writer.Write(appearanceSection.MainList.Count);
            foreach (var entry in appearanceSection.MainList)
            {
                writer.Write(entry.Hash);
                writer.Write((byte)(entry.FirstString.Length + 128));
                writer.Write(Encoding.ASCII.GetBytes(entry.FirstString));
                writer.Write((byte)(entry.SecondString.Length + 128));
                writer.Write(Encoding.ASCII.GetBytes(entry.SecondString));
                writer.Write(entry.TrailingBytes);
            }

            writer.Write(appearanceSection.AdditionalList.Count);
            foreach (var entry in appearanceSection.AdditionalList)
            {
                writer.Write((byte)(entry.FirstString.Length + 128));
                writer.Write(Encoding.ASCII.GetBytes(entry.FirstString));
                writer.Write((byte)(entry.SecondString.Length + 128));
                writer.Write(Encoding.ASCII.GetBytes(entry.SecondString));
                writer.Write(entry.TrailingBytes);
            }
        }
        private CharacterCustomizationAppearances.AppearanceSection ReadAppearanceSection(BinaryReader reader, List <string> expectedNames)
        {
            var sectionName = reader.ReadPackedString();

            Debug.Assert(expectedNames.Contains(sectionName));

            var appearanceSection = new CharacterCustomizationAppearances.AppearanceSection {
                SectionName = sectionName
            };


            int count = reader.ReadInt32();

            if (count > 0)
            {
                ReadHashValueSection(reader, appearanceSection.MainList, count);
            }

            count = reader.ReadInt32();
            if (count > 0)
            {
                ReadValueSection(reader, appearanceSection.AdditionalList, count);
            }

            return(appearanceSection);
        }
        private void WriteAppearanceSection(BinaryWriter writer, CharacterCustomizationAppearances.AppearanceSection appearanceSection)
        {
            writer.WritePackedString(appearanceSection.SectionName);

            writer.Write(appearanceSection.MainList.Count);
            foreach (var entry in appearanceSection.MainList)
            {
                writer.Write(entry.Hash);
                writer.WritePackedString(entry.FirstString);
                writer.WritePackedString(entry.SecondString);
                writer.Write(entry.TrailingBytes);
            }

            writer.Write(appearanceSection.AdditionalList.Count);
            foreach (var entry in appearanceSection.AdditionalList)
            {
                writer.WritePackedString(entry.FirstString);
                writer.WritePackedString(entry.SecondString);
                writer.Write(entry.TrailingBytes);
            }
        }