public void Save(string path) { using (FileStream fs = new FileStream(path, FileMode.Create)) using (BEBinaryWriter bw = new BEBinaryWriter(fs)) { bw.WriteInt32(0x12); bw.WriteInt32(0x8); bw.WriteInt32(0x2); bw.WriteInt32(0x2); foreach (PIXIE pixie in Pixies) { bw.WriteInt32(0x3); bw.WriteInt32(12 + pixie.Name.Length); bw.WriteByte((byte)pixie.Format); bw.WriteInt16(pixie.RowSize); bw.WriteInt16(pixie.Width); bw.WriteInt16(pixie.Height); bw.WriteInt16(pixie.HalfWidth); bw.WriteInt16(pixie.HalfHeight); bw.WriteString(pixie.Name.ToUpper()); bw.WriteByte(0); bw.WriteInt32(0x21); bw.WriteInt32(8 + (pixie.RowSize * pixie.Height)); bw.WriteInt32(pixie.PixelCount); bw.WriteInt32(pixie.PixelSize); bw.Write(pixie.Data); bw.WriteInt32(0x0); bw.WriteInt32(0); } } }
private byte[] serializeForDynamicType(params object[] vals) { BEBinaryWriter elt = new BEBinaryWriter(); foreach (var p in vals) { if (p is int) { elt.WriteUInt16((ushort)(0x8000 | 'i')); elt.WriteUInt16((ushort)4); elt.WriteInt32((int)p); elt.WriteByte((byte)0); } else if (p is String) { elt.WriteUInt16((ushort)(0x8000 | 's')); elt.WriteString(p as string); elt.WriteByte((byte)0); } else { throw new InvalidOperationException(); } } var ret = new byte[elt.Length]; Buffer.BlockCopy(elt.GetBuffer(), 0, ret, 0, (int)elt.Length); return(ret); }
private byte[] serializeForDynamicType(params object[] vals) { var elt = new BEBinaryWriter(); foreach (object p in vals) { if (p is int) { elt.WriteUInt16(0x8000 | 'i'); elt.WriteUInt16(4); elt.WriteInt32((int)p); elt.WriteByte(0); } else if (p is String) { elt.WriteUInt16(0x8000 | 's'); elt.WriteString(p as string); elt.WriteByte(0); } else { throw new InvalidOperationException(); } } var ret = new byte[elt.Length]; Buffer.BlockCopy(elt.GetBuffer(), 0, ret, 0, (int)elt.Length); return ret; }