private static void WriteBFN(EndianBinaryWriter stream, fontChars characters, byte[] encodedImageData)
        {
            stream.Write("FONTbfn1".ToCharArray());

            stream.Write((int)0);
            
            stream.Write((int)4);

            for (int i = 0; i < 4; i++)
            {
                stream.Write((int)0);
            }

            stream.Write("INF1".ToCharArray());

            stream.Write((int)0x20);

            stream.Write((int)0x12);

            stream.Write((short)6);

            stream.Write((short)0x15);

            stream.Write((short)0x18);

            stream.Write((short)0);

            for (int j = 0; j < 3; j++)
            {
                stream.Write((int)0);
            }

            stream.Write("GLY1".ToCharArray());

            stream.Write((int)(encodedImageData.Count() + 0x20));

            stream.Write((int)characters.count);

            stream.Write((short)32);

            stream.Write((short)32);

            stream.Write((int)0x2000);

            stream.Write((short)0);

            stream.Write((short)5);

            stream.Write((short)20);

            stream.Write((short)160);

            stream.Write((short)0x280);

            stream.Write((short)0);

            stream.Write(encodedImageData);

            stream.Write("MAP1".ToCharArray());

            stream.Write((int)0x20);

            stream.Write((short)0);

            stream.Write((short)characters.@char[0].id);

            stream.Write((short)characters.@char[characters.count - 1].id);

            stream.Write((short)0);

            for (int k = 0; k < 4; k++)
            {
                stream.Write((int)0);
            }

            stream.Write("WID1".ToCharArray());

            stream.Write((int)(0x20 + (characters.count * 2)));

            stream.Write((int)characters.count);

            foreach (fontCharsChar chara in characters.@char)
            {
                if (chara.xoffset < 0)
                {
                    stream.Write((byte)-chara.xoffset);

                    stream.Write((byte)chara.xadvance);
                }
                
                else
                {
                    stream.Write((byte)chara.xoffset);

                    stream.Write((byte)chara.xadvance);
                }
            }

            stream.BaseStream.Position = 8;

            stream.Write((int)stream.BaseStream.Length);
        }
Beispiel #2
0
        private static void WriteBFN(EndianBinaryWriter stream, fontChars characters, byte[] encodedImageData)
        {
            stream.Write("FONTbfn1".ToCharArray());

            stream.Write((int)0);

            stream.Write((int)4);

            for (int i = 0; i < 4; i++)
            {
                stream.Write((int)0);
            }

            stream.Write("INF1".ToCharArray());

            stream.Write((int)0x20);

            stream.Write((int)0x12);

            stream.Write((short)6);

            stream.Write((short)0x15);

            stream.Write((short)0x18);

            stream.Write((short)0);

            for (int j = 0; j < 3; j++)
            {
                stream.Write((int)0);
            }

            stream.Write("GLY1".ToCharArray());

            stream.Write((int)(encodedImageData.Count() + 0x20));

            stream.Write((int)characters.count);

            stream.Write((short)32);

            stream.Write((short)32);

            stream.Write((int)0x2000);

            stream.Write((short)0);

            stream.Write((short)5);

            stream.Write((short)20);

            stream.Write((short)160);

            stream.Write((short)0x280);

            stream.Write((short)0);

            stream.Write(encodedImageData);

            stream.Write("MAP1".ToCharArray());

            stream.Write((int)0x20);

            stream.Write((short)0);

            stream.Write((short)characters.@char[0].id);

            stream.Write((short)characters.@char[characters.count - 1].id);

            stream.Write((short)0);

            for (int k = 0; k < 4; k++)
            {
                stream.Write((int)0);
            }

            stream.Write("WID1".ToCharArray());

            stream.Write((int)(0x20 + (characters.count * 2)));

            stream.Write((int)characters.count);

            foreach (fontCharsChar chara in characters.@char)
            {
                if (chara.xoffset < 0)
                {
                    stream.Write((byte)-chara.xoffset);

                    stream.Write((byte)chara.xadvance);
                }

                else
                {
                    stream.Write((byte)chara.xoffset);

                    stream.Write((byte)chara.xadvance);
                }
            }

            stream.BaseStream.Position = 8;

            stream.Write((int)stream.BaseStream.Length);
        }