Example #1
0
        protected override bool ReadInternal()
        {
            if (base.ReadInternal() == false) {
                return false;
            }

            ImagesPal = new List<SpriteImagePal>();
            ImagesRgba = new List<SpriteImageRgba>();
            Palette = new PalFormat();

            if (FileHeader.Version.Major > 2) {
                // Unsupported version
                return false;
            }

            int imgPalCount = Reader.ReadUInt16();
            int imgRgbaCount = 0;
            if (FileHeader.Version >= 0x201) {
                imgRgbaCount = Reader.ReadUInt16();
            }

            // Images - Palette \\
            for (var i = 0; i < imgPalCount; i++) {
                var imgPal = new SpriteImagePal {
                    Width = Reader.ReadUInt16(),
                    Height = Reader.ReadUInt16()
                };
                if (FileHeader.Version >= 0x201) {
                    imgPal.Size = Reader.ReadUInt16();
                } else {
                    imgPal.Size = (ushort)(imgPal.Width * imgPal.Height);
                }
                imgPal.Data = Reader.ReadBytes(imgPal.Size);

                ImagesPal.Add(imgPal);
            }

            // Images - RGBA \\
            for (int i = 0; i < imgRgbaCount; i++) {
                var imgRgba = new SpriteImageRgba {
                    Width = Reader.ReadUInt16(),
                    Height = Reader.ReadUInt16()
                };

                int size = (imgRgba.Width * imgRgba.Height * 4);
                imgRgba.Data = Reader.ReadBytes(size);

                ImagesRgba.Add(imgRgba);
            }

            // Palette \\
            Reader.BaseStream.Position = (Reader.BaseStream.Length - (4 * PalFormat.ColorCount));

            Palette.Read(Reader.BaseStream);

            Flush();
            return true;
        }
Example #2
0
        protected override bool ReadInternal()
        {
            if (base.ReadInternal() == false)
            {
                return(false);
            }

            ImagesPal  = new List <SpriteImagePal>();
            ImagesRgba = new List <SpriteImageRgba>();
            Palette    = new PalFormat();

            if (FileHeader.Version.Major > 2)
            {
                // Unsupported version
                return(false);
            }

            int imgPalCount  = Reader.ReadUInt16();
            int imgRgbaCount = 0;

            if (FileHeader.Version >= 0x201)
            {
                imgRgbaCount = Reader.ReadUInt16();
            }

            // Images - Palette \\
            for (var i = 0; i < imgPalCount; i++)
            {
                var imgPal = new SpriteImagePal {
                    Width  = Reader.ReadUInt16(),
                    Height = Reader.ReadUInt16()
                };
                if (FileHeader.Version >= 0x201)
                {
                    imgPal.Size = Reader.ReadUInt16();
                }
                else
                {
                    imgPal.Size = (ushort)(imgPal.Width * imgPal.Height);
                }
                imgPal.Data = Reader.ReadBytes(imgPal.Size);

                ImagesPal.Add(imgPal);
            }

            // Images - RGBA \\
            for (int i = 0; i < imgRgbaCount; i++)
            {
                var imgRgba = new SpriteImageRgba {
                    Width  = Reader.ReadUInt16(),
                    Height = Reader.ReadUInt16()
                };

                int size = (imgRgba.Width * imgRgba.Height * 4);
                imgRgba.Data = Reader.ReadBytes(size);

                ImagesRgba.Add(imgRgba);
            }

            // Palette \\
            Reader.BaseStream.Position = (Reader.BaseStream.Length - (4 * PalFormat.ColorCount));

            Palette.Read(Reader.BaseStream);

            Flush();
            return(true);
        }