public BinaryReaderX createCfg(int part) { long bk; BinaryWriterX br = new BinaryWriterX(new MemoryStream()); br.WriteStruct <Header>(headerList[part]); for (int j = 0; j < editorEntries[part].Count; j++) { if (j > 0) { EditorStruct bk2 = editorEntries[part][j]; var success1 = (headerList[part].dataOffset > br.BaseStream.Length) ? bk2.entryOffset = 0 : bk2.entryOffset = (uint)br.BaseStream.Length - headerList[part].dataOffset; bk = br.BaseStream.Position; var success2 = (headerList[part].dataOffset > br.BaseStream.Length) ? br.BaseStream.Position = headerList[part].dataOffset : br.BaseStream.Position = br.BaseStream.Length; br.Write(Encoding.GetEncoding("shift-jis").GetBytes(Labels[labelCount++].Text)); br.Write((byte)0x00); br.BaseStream.Position = bk; editorEntries[part][j] = bk2; } br.WriteStruct <EditorStruct>(editorEntries[part][j]); } if (editorRest[part] != null) { br.Write(editorRest[part]); } else { for (int j = 0; j < textEntries[part].Count; j++) { if (j > 0 && textEntries[part][j].entryOffset != 0xFFFFFFFF) { TextStruct bk2 = textEntries[part][j]; var success1 = (headerList[part].dataOffset > br.BaseStream.Length) ? bk2.entryOffset = 0 : bk2.entryOffset = (uint)br.BaseStream.Length - headerList[part].dataOffset; bk = br.BaseStream.Position; var success2 = (headerList[part].dataOffset > br.BaseStream.Length) ? br.BaseStream.Position = headerList[part].dataOffset : br.BaseStream.Position = br.BaseStream.Length; br.Write(Encoding.GetEncoding("shift-jis").GetBytes(Labels[labelCount++].Text)); br.Write((byte)0x00); br.BaseStream.Position = bk; textEntries[part][j] = bk2; } br.WriteStruct <TextStruct>(textEntries[part][j]); } if (textRest[part] != null) { br.Write(textRest[part]); } } br.BaseStream.Position = 0x8; br.Write((int)(br.BaseStream.Length - headerList[part].dataOffset)); br.BaseStream.Position = br.BaseStream.Length; while (br.BaseStream.Position % 16 != 0) { br.Write((byte)0xFF); } return(new BinaryReaderX(br.BaseStream)); }
public void Save(string filename) { long bk; using (var bw = new BinaryWriterX(File.Create(filename))) { bw.WriteStruct(cfgHeader); for (int j = 0; j < editorEntries.Count; j++) { if (j > 0) { EditorStruct bk2 = editorEntries[j]; var success1 = (cfgHeader.dataOffset > bw.BaseStream.Length) ? bk2.entryOffset = 0 : bk2.entryOffset = (uint)bw.BaseStream.Length - cfgHeader.dataOffset; bk = bw.BaseStream.Position; var success2 = (cfgHeader.dataOffset > bw.BaseStream.Length) ? bw.BaseStream.Position = cfgHeader.dataOffset : bw.BaseStream.Position = bw.BaseStream.Length; bw.Write(Encoding.GetEncoding("shift-jis").GetBytes(Labels[labelCount++].Text)); bw.Write((byte)0x00); bw.BaseStream.Position = bk; editorEntries[j] = bk2; } bw.WriteStruct <EditorStruct>(editorEntries[j]); } if (editorRest != null) { bw.Write(editorRest); } else { for (int j = 0; j < textEntries.Count; j++) { if (j > 0 && textEntries[j].entryOffset != 0xFFFFFFFF) { TextStruct bk2 = textEntries[j]; var success1 = (cfgHeader.dataOffset > bw.BaseStream.Length) ? bk2.entryOffset = 0 : bk2.entryOffset = (uint)bw.BaseStream.Length - cfgHeader.dataOffset; bk = bw.BaseStream.Position; var success2 = (cfgHeader.dataOffset > bw.BaseStream.Length) ? bw.BaseStream.Position = cfgHeader.dataOffset : bw.BaseStream.Position = bw.BaseStream.Length; bw.Write(Encoding.GetEncoding("shift-jis").GetBytes(Labels[labelCount++].Text)); bw.Write((byte)0x00); bw.BaseStream.Position = bk; textEntries[j] = bk2; } bw.WriteStruct(textEntries[j]); } if (textRest != null) { bw.Write(textRest); } } bw.BaseStream.Position = 0x8; bw.Write((int)(bw.BaseStream.Length - cfgHeader.dataOffset)); bw.BaseStream.Position = bw.BaseStream.Length; bw.WriteAlignment(0x10, 0xff); } }