115 lines
3.6 KiB
C#
115 lines
3.6 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Threading;
|
|||
|
using System.Drawing;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.IO;
|
|||
|
using System.Windows.Forms;
|
|||
|
using Toolbox.Library;
|
|||
|
using Toolbox.Library.IO;
|
|||
|
using Toolbox.Library.Forms;
|
|||
|
|
|||
|
namespace FirstPlugin.Forms
|
|||
|
{
|
|||
|
public partial class PokemonLoaderSwShForm : STForm
|
|||
|
{
|
|||
|
private bool CancelOperation = false;
|
|||
|
|
|||
|
public string SelectedPokemon = "";
|
|||
|
|
|||
|
ImageList ImageList;
|
|||
|
|
|||
|
public PokemonLoaderSwShForm()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
ImageList = new ImageList()
|
|||
|
{
|
|||
|
ColorDepth = ColorDepth.Depth32Bit,
|
|||
|
ImageSize = new Size(100, 100),
|
|||
|
};
|
|||
|
|
|||
|
listViewCustom1.SmallImageList = ImageList;
|
|||
|
listViewCustom1.LargeImageList = ImageList;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
private void PokemonLoaderSwShForm_Load(object sender, EventArgs e)
|
|||
|
{
|
|||
|
string gamePath = Runtime.PkSwShGamePath;
|
|||
|
if (Directory.Exists(gamePath))
|
|||
|
{
|
|||
|
string IconPath = $"{gamePath}/bin/appli/icon_pokemon";
|
|||
|
if (!Directory.Exists(IconPath))
|
|||
|
return;
|
|||
|
|
|||
|
Thread Thread = new Thread((ThreadStart)(() =>
|
|||
|
{
|
|||
|
foreach (var file in Directory.GetFiles(IconPath))
|
|||
|
{
|
|||
|
if (CancelOperation)
|
|||
|
break;
|
|||
|
|
|||
|
if (Utils.GetExtension(file) == ".bntx")
|
|||
|
{
|
|||
|
var bntx = (BNTX)STFileLoader.OpenFileFormat(file);
|
|||
|
|
|||
|
string name = bntx.Text.Replace($"poke_icon_", string.Empty);
|
|||
|
//All we need is the first 8 characters
|
|||
|
name = name.Substring(0, 7);
|
|||
|
|
|||
|
Bitmap bitmap = null;
|
|||
|
try
|
|||
|
{
|
|||
|
var tex = bntx.Textures.Values.FirstOrDefault();
|
|||
|
bitmap = tex.GetBitmap();
|
|||
|
}
|
|||
|
catch
|
|||
|
{
|
|||
|
bitmap = Properties.Resources.TextureError;
|
|||
|
}
|
|||
|
|
|||
|
AddTexture($"pm{name}.gfpak", bitmap);
|
|||
|
}
|
|||
|
}
|
|||
|
})); Thread.Start();
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void AddTexture(string name, Bitmap image)
|
|||
|
{
|
|||
|
if (listViewCustom1.Disposing || listViewCustom1.IsDisposed) return;
|
|||
|
|
|||
|
if (listViewCustom1.InvokeRequired)
|
|||
|
{
|
|||
|
listViewCustom1.Invoke((MethodInvoker)delegate {
|
|||
|
// Running on the UI thread
|
|||
|
ListViewItem item = new ListViewItem(name);
|
|||
|
listViewCustom1.Items.Add(item);
|
|||
|
if (image != null)
|
|||
|
{
|
|||
|
item.ImageIndex = ImageList.Images.Count;
|
|||
|
ImageList.Images.Add(image);
|
|||
|
var dummy = listViewCustom1.Handle;
|
|||
|
}
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void PokemonLoaderSwShForm_FormClosing(object sender, FormClosingEventArgs e) {
|
|||
|
CancelOperation = true;
|
|||
|
}
|
|||
|
|
|||
|
private void listViewCustom1_DoubleClick(object sender, EventArgs e) {
|
|||
|
if (listViewCustom1.SelectedItems.Count > 0) {
|
|||
|
CancelOperation = true;
|
|||
|
SelectedPokemon = listViewCustom1.SelectedItems[0].Text;
|
|||
|
DialogResult = DialogResult.OK;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|