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); } }
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); } }