public override void Write(EndianWriter bw) { // Header bw.Write(new byte[512]); bw.Write(new byte[HeaderSize]); bw.BaseStream.Position = 512; // Init lists EngineManager.Engines["Halo2Xbox"]["TagIds"] = new Dictionary <string, int>(); //EngineManager.Engines["Halo2Xbox"]["StringIds"] = new List<string>(); // Fields for (int i = 0; i < Fields.Count; i++) { Fields[i].Write(bw); } // Update Header bw.BaseStream.Position = 0; bw.Write((uint)this.datum); bw.Write(((Dictionary <string, int>)EngineManager.Engines["Halo2Xbox"]["TagIds"]).Count); //bw.Write(((List<string>)EngineManager.Engines["Halo2Xbox"]["StringIds"]).Count); bw.Write((int)bw.BaseStream.Length); bw.BaseStream.Position = bw.BaseStream.Length; // Write Tag Reference Names for (int i = 0; i < ((Dictionary <string, int>)EngineManager.Engines["Halo2Xbox"]["TagIds"]).Count; i++) { bw.WriteNullTerminatingString(((Dictionary <string, int>)EngineManager.Engines["Halo2Xbox"]["TagIds"]).Keys.ElementAt(i)); } // Write String Reference Names //for (int i = 0; i < ((List<string>)EngineManager.Engines["Halo2Xbox"]["StringIds"]).Count; i++) // bw.WriteNullTerminatingString(((List<string>)EngineManager.Engines["Halo2Xbox"]["StringIds"])[i]); // Finish Header bw.BaseStream.Position = 16; bw.Write((int)bw.BaseStream.Length); bw.Write(AbsolutePath); // Write Raw bw.BaseStream.Position = bw.BaseStream.Length; if (RawDef != null) { RawDef.Write(bw); } }
public override void Write(EndianWriter bw) { // Write a tag_string to the stream. bw.WriteNullTerminatingString(this.stringConstant, 128); }