示例#1
0
        private void LoadMFB()
        {
            if (filesBox.SelectedIndex == -1)
            {
                return;
            }

            try
            {
                var mfb = new MFBFile(video.Entries.Find(
                                          item => item.Filename == filesBox.SelectedItem.ToString()).Data, palette);

                status.Text = $"Size: {mfb.Width} x {mfb.Height} | Offset: ({mfb.Offset.X}, {mfb.Offset.Y})";
                if (mfb.IsTransparent)
                {
                    status.Text += " | Transparent";
                }
                if (mfb.IsCompressed)
                {
                    status.Text += " | Compressed";
                }
                if (mfb.IsUnknown)
                {
                    status.Text += " | IsUnknown";
                }

                var imglist = new ImageList();
                spritesBox.LargeImageList = imglist;

                // Scaling
                imglist.ImageSize = new Size(
                    mfb.Width <= 256 ? mfb.Width : 256,
                    mfb.Height <= 256 ? mfb.Height : 256);
                imglist.Images.AddRange(mfb.Entries.ToArray());

                spritesBox.BeginUpdate();
                spritesBox.Items.Clear();
                for (var i = 0; i < mfb.Entries.Count; i++)
                {
                    spritesBox.Items.Add(new ListViewItem(i.ToString(), i));
                }
                spritesBox.EndUpdate();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message,
                                "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
示例#2
0
        public GameTexture2D this[string name, int frame]
        {
            get
            {
                var texture = textureList.FirstOrDefault(item => item.Type.Equals(name) && item.ID == frame);
                if (texture == null)
                {
                    BOXFile.Entry entry;
                    if ((entry = BOX.Entries.FirstOrDefault(item => item.Filename == name + ".mfb")) == null)
                    {
                        throw new Exception($"Texture (name: {name}.mfb) doesn't exists.");
                    }

                    var mfb = new MFBFile(entry.Data);

                    for (var i = 0; i < mfb.Entries.Count; i++)
                    {
                        var item = new GameTexture2D(
                            GetTexture2DFromBitmap(new Bitmap(mfb.Entries[i])),
                            mfb.Offset,
                            name.Replace(".mfb", null),
                            i
                            );
                        textureList.Add(item);
                        if (i == frame)
                        {
                            texture = item;
                        }
                    }
                }

                if (texture == null)
                {
                    throw new Exception($"{name}.mfb: frame {frame} doesn't exists.");
                }

                return(texture);
            }
        }