public static void Write(this BinaryWriter writer, WDC3 wdc) { writer.Write(wdc.Header); for (int i = 0; i < wdc.SectionHeaders.Length; i++) { writer.Write(wdc.SectionHeaders[i]); } for (int i = 0; i < wdc.Fields.Length; i++) { writer.Write(wdc.Fields[i]); } for (int i = 0; i < wdc.FieldInfo.Length; i++) { writer.Write(wdc.FieldInfo[i]); } for (int i = 0; i < wdc.PalletData.Length; i++) { writer.Write(wdc.PalletData[i]); } for (int i = 0; i < wdc.CommonData.Length; i++) { writer.Write(wdc.CommonData[i]); } for (int i = 0; i < wdc.DataSections.Length; i++) { writer.Write(wdc.DataSections[i], wdc.Header, wdc.SectionHeaders[i]); } }
static void Main(string[] args) { var wdc = new WDC3(); /*wdc.Load("C:/Users/Kevin Bernau/Downloads/item.db2"); * wdc.Save("C:/Users/Kevin Bernau/Downloads/item_new.db2");*/ wdc.Load("C:/Users/Kevin Bernau/Downloads/gameobjects.db2"); //wdc.Save("C:/Users/Kevin Bernau/Downloads/gameobjects_new.db2"); }
static void Main(string[] args) { var wdc = new WDC3(); /*wdc.Load("C:/Users/Kevin Bernau/Downloads/item.db2"); * wdc.Save("C:/Users/Kevin Bernau/Downloads/item_new.db2");*/ wdc.Load("GarrPlotUICategory.db2"); wdc.Save("GarrPlotUICategory.db2"); Section[] dSections = wdc.DataSections; //wdc.Save("C:/Users/Kevin Bernau/Downloads/gameobjects_new.db2"); }
public static WDC3 ReadWDC3(this BinaryReader reader) { var wdc = new WDC3(); wdc.Header = reader.ReadWDC3Header(); if (wdc.Header.Magic != WDC3.Signature) { throw new InvalidDataException("The file magic is not WDC3"); } wdc.SectionHeaders = new WDC3SectionHeader[wdc.Header.SectionCount]; for (int i = 0; i < wdc.Header.SectionCount; i++) { wdc.SectionHeaders[i] = reader.ReadWDC3SectionHeader(); } wdc.Fields = new FieldStructure[wdc.Header.TotalFieldCount]; for (int i = 0; i < wdc.Header.TotalFieldCount; i++) { wdc.Fields[i] = reader.ReadFieldStructure(); } wdc.FieldInfo = new FieldStorageInfo[wdc.Header.FieldStorageInfoSize / Marshal.SizeOf(typeof(FieldStorageInfo))]; for (int i = 0; i < wdc.Header.FieldStorageInfoSize / Marshal.SizeOf(typeof(FieldStorageInfo)); i++) { wdc.FieldInfo[i] = reader.ReadFieldStorageInfo(); } wdc.PalletData = new byte[wdc.Header.PalletDataSize]; for (int i = 0; i < wdc.Header.PalletDataSize; i++) { wdc.PalletData[i] = reader.ReadByte(); } wdc.CommonData = new byte[wdc.Header.CommonDataSize]; for (int i = 0; i < wdc.Header.CommonDataSize; i++) { wdc.CommonData[i] = reader.ReadByte(); } wdc.DataSections = new Section[wdc.Header.SectionCount]; for (int i = 0; i < wdc.Header.SectionCount; i++) { wdc.DataSections[i] = reader.ReadSection(wdc.Header, wdc.SectionHeaders[i]); } return(wdc); }
private DBHeader ExtractHeader(BinaryReader dbReader) { DBHeader header = null; string signature = dbReader.ReadString(4); if (string.IsNullOrWhiteSpace(signature)) { return(null); } if (signature[0] != 'W') { signature = signature.Reverse(); } switch (signature) { case "WDBC": header = new WDBC(); break; case "WDB2": case "WCH2": header = new WDB2(); break; case "WDB5": header = new WDB5(); break; case "WDB6": header = new WDB6(); break; case "WCH5": header = new WCH5(FileName); break; case "WCH7": header = new WCH7(FileName); break; case "WCH8": header = new WCH8(FileName); break; case "WDC1": header = new WDC1(); break; case "WDC2": header = new WDC2(); break; case "WDC3": header = new WDC3(); break; case "WMOB": case "WGOB": case "WQST": case "WIDB": case "WNDB": case "WITX": case "WNPC": case "WPTX": case "WRDN": header = new WDB(); break; case "HTFX": header = new HTFX(); break; } header?.ReadHeader(ref dbReader, signature); return(header); }