예제 #1
0
파일: c1PIX.cs 프로젝트: q4a/ToxicRagers
        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);
                    }
                }
        }
예제 #2
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);
        }
예제 #3
0
 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;
 }