public void WriteToFile(XBinWriter writer) { writer.Write(GuiLanguageMap.Length); writer.Write(GuiLanguageMap.Length); long[] offsets = new long[GuiLanguageMap.Length]; for (int i = 0; i < GuiLanguageMap.Length; i++) { GuiLanguageMapItem Item = GuiLanguageMap[i]; StringHelpers.WriteStringBuffer(writer, 32, Item.LangCode); offsets[i] = writer.BaseStream.Position; writer.Write(0xDEADC0DE); // placeholder writer.Write(Item.HasAudioLayer); } for (int j = 0; j < GuiLanguageMap.Length; j++) { GuiLanguageMapItem Item = GuiLanguageMap[j]; uint thisPosition = (uint)(writer.BaseStream.Position); StringHelpers.WriteString(writer, Item.DisplayName); long currentPosition = writer.BaseStream.Position; writer.BaseStream.Position = offsets[j]; var offset = (uint)(thisPosition - offsets[j]); writer.Write(offset); writer.BaseStream.Position = currentPosition; } }
public void SetFromTreeNodes(TreeNode Root) { GuiLanguageMap = new GuiLanguageMapItem[Root.Nodes.Count]; for (int i = 0; i < GuiLanguageMap.Length; i++) { TreeNode ChildNode = Root.Nodes[i]; GuiLanguageMapItem Entry = (GuiLanguageMapItem)ChildNode.Tag; GuiLanguageMap[i] = Entry; } }
public void ReadFromFile(BinaryReader reader) { uint count1 = reader.ReadUInt32(); uint count2 = reader.ReadUInt32(); GuiLanguageMap = new GuiLanguageMapItem[count1]; for (int i = 0; i < GuiLanguageMap.Length; i++) { GuiLanguageMapItem Item = new GuiLanguageMapItem(); Item.LangCode = StringHelpers.ReadStringBuffer(reader, 32); Item.DisplayNameOffset = reader.ReadUInt32(); Item.HasAudioLayer = reader.ReadInt32(); GuiLanguageMap[i] = Item; } for (int i = 0; i < count1; i++) { var Item = GuiLanguageMap[i]; Item.DisplayName = StringHelpers.ReadStringEncoded(reader).TrimEnd('\0'); GuiLanguageMap[i] = Item; } }