This commit is contained in:
KillzXGaming 2023-10-18 19:47:28 -04:00
commit 7e5b80e575
9 changed files with 532 additions and 227 deletions

View file

@ -160,17 +160,17 @@ namespace Bfres.Structs
} }
} }
public override void ReplaceAll() public override void ReplaceAll(string ReplacePath = "")
{ {
FolderSelectDialog sfd = new FolderSelectDialog(); FolderSelectDialog sfd = new FolderSelectDialog();
if (sfd.ShowDialog() == DialogResult.OK) if (ReplacePath != "" || sfd.ShowDialog() == DialogResult.OK)
{ {
if (Type == BRESGroupType.Textures) if (Type == BRESGroupType.Textures)
{ {
GTXTextureImporter importer = new GTXTextureImporter(); GTXTextureImporter importer = new GTXTextureImporter();
List<GTXImporterSettings> settings = new List<GTXImporterSettings>(); List<GTXImporterSettings> settings = new List<GTXImporterSettings>();
foreach (string file in System.IO.Directory.GetFiles(sfd.SelectedPath)) foreach (string file in System.IO.Directory.GetFiles(ReplacePath != "" ? ReplacePath : sfd.SelectedPath))
{ {
string FileName = System.IO.Path.GetFileNameWithoutExtension(file); string FileName = System.IO.Path.GetFileNameWithoutExtension(file);
@ -260,7 +260,7 @@ namespace Bfres.Structs
} }
else else
{ {
foreach (string file in System.IO.Directory.GetFiles(sfd.SelectedPath)) foreach (string file in System.IO.Directory.GetFiles(ReplacePath != "" ? ReplacePath : sfd.SelectedPath))
{ {
string FileName = System.IO.Path.GetFileNameWithoutExtension(file); string FileName = System.IO.Path.GetFileNameWithoutExtension(file);

View file

@ -100,7 +100,7 @@ namespace Toolbox.Library.NodeWrappers
ReplaceAll(); ReplaceAll();
} }
public virtual void ReplaceAll() public virtual void ReplaceAll(string ReplacePath = "")
{ {
FolderSelectDialog sfd = new FolderSelectDialog(); FolderSelectDialog sfd = new FolderSelectDialog();
if (sfd.ShowDialog() == DialogResult.OK) if (sfd.ShowDialog() == DialogResult.OK)

View file

@ -845,7 +845,7 @@ namespace Toolbox.Library
{ {
if (IsAtscFormat(Format)) if (IsAtscFormat(Format))
{ {
return "Supported Formats|*.astc; *.png;*.tga;*.jpg;*.tiff|" + return "Supported Formats|*.dds; *.astc; *.png;*.tga;*.jpg;*.tiff|" +
"ASTC |*.astc|" + "ASTC |*.astc|" +
"Portable Network Graphics |*.png|" + "Portable Network Graphics |*.png|" +
"Joint Photographic Experts Group |*.jpg|" + "Joint Photographic Experts Group |*.jpg|" +

View file

@ -23,6 +23,7 @@ namespace Toolbox.Library
public static bool UseDirectXTexDecoder = true; public static bool UseDirectXTexDecoder = true;
public static bool DEVELOPER_DEBUG_MODE = false; public static bool DEVELOPER_DEBUG_MODE = false;
public static bool AlwaysCompressOnSave = false; public static bool AlwaysCompressOnSave = false;
public static bool AlwaysSaveAll = true;
public static class ResourceTables public static class ResourceTables
{ {

File diff suppressed because it is too large Load diff

View file

@ -88,6 +88,7 @@ namespace Toolbox
chkBotwFileTable.Checked = Runtime.ResourceTables.BotwTable; chkBotwFileTable.Checked = Runtime.ResourceTables.BotwTable;
chkTpFileTable.Checked = Runtime.ResourceTables.TpTable; chkTpFileTable.Checked = Runtime.ResourceTables.TpTable;
chkFrameCamera.Checked = Runtime.FrameCamera; chkFrameCamera.Checked = Runtime.FrameCamera;
chkAlwaysSaveAll.Checked = Runtime.AlwaysSaveAll;
chkAlwaysCompressOnSave.Checked = Runtime.AlwaysCompressOnSave; chkAlwaysCompressOnSave.Checked = Runtime.AlwaysCompressOnSave;
chkViewportGrid.Checked = Runtime.displayGrid; chkViewportGrid.Checked = Runtime.displayGrid;
chkViewportAxisLines.Checked = Runtime.displayAxisLines; chkViewportAxisLines.Checked = Runtime.displayAxisLines;
@ -664,6 +665,11 @@ namespace Toolbox
Runtime.FrameCamera = chkFrameCamera.Checked; Runtime.FrameCamera = chkFrameCamera.Checked;
} }
private void chkAlwaysSaveAll_CheckedChanged(object sender, EventArgs e)
{
Runtime.AlwaysSaveAll = chkAlwaysSaveAll.Checked;
}
private void chkAlwaysCompressOnSave_CheckedChanged(object sender, EventArgs e) { private void chkAlwaysCompressOnSave_CheckedChanged(object sender, EventArgs e) {
Runtime.AlwaysCompressOnSave = chkAlwaysCompressOnSave.Checked; Runtime.AlwaysCompressOnSave = chkAlwaysCompressOnSave.Checked;
} }

View file

@ -47,6 +47,9 @@
this.hashCalculatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.hashCalculatorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.batchExportTexturesAllSupportedFormatsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.batchExportTexturesAllSupportedFormatsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.batchExportModelsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.batchExportModelsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.batchReplaceFTPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.batchRenameBNTXToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.batchReplaceTXTGToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.experimentalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.experimentalToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.windowsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.windowsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.cascadeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@ -192,7 +195,10 @@
this.batchToolStripMenuItem, this.batchToolStripMenuItem,
this.hashCalculatorToolStripMenuItem, this.hashCalculatorToolStripMenuItem,
this.batchExportTexturesAllSupportedFormatsToolStripMenuItem, this.batchExportTexturesAllSupportedFormatsToolStripMenuItem,
this.batchExportModelsToolStripMenuItem}); this.batchExportModelsToolStripMenuItem,
this.batchReplaceFTPToolStripMenuItem,
this.batchReplaceTXTGToolStripMenuItem,
this.batchRenameBNTXToolStripMenuItem,});
this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem"; this.toolsToolStripMenuItem.Name = "toolsToolStripMenuItem";
this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 21); this.toolsToolStripMenuItem.Size = new System.Drawing.Size(46, 21);
this.toolsToolStripMenuItem.Text = "Tools"; this.toolsToolStripMenuItem.Text = "Tools";
@ -231,6 +237,27 @@
this.batchExportModelsToolStripMenuItem.Text = "Batch Export Models"; this.batchExportModelsToolStripMenuItem.Text = "Batch Export Models";
this.batchExportModelsToolStripMenuItem.Click += new System.EventHandler(this.batchExportModelsToolStripMenuItem_Click); this.batchExportModelsToolStripMenuItem.Click += new System.EventHandler(this.batchExportModelsToolStripMenuItem_Click);
// //
// batchReplaceFTPToolStripMenuItem
//
this.batchReplaceFTPToolStripMenuItem.Name = "batchReplaceFTPToolStripMenuItem";
this.batchReplaceFTPToolStripMenuItem.Size = new System.Drawing.Size(316, 22);
this.batchReplaceFTPToolStripMenuItem.Text = "Batch Replace FTP";
this.batchReplaceFTPToolStripMenuItem.Click += new System.EventHandler(this.batchReplaceFTPToolStripMenuItem_Click);
//
// batchReplaceTXTGToolStripMenuItem
//
this.batchReplaceTXTGToolStripMenuItem.Name = "batchReplaceTXTGToolStripMenuItem";
this.batchReplaceTXTGToolStripMenuItem.Size = new System.Drawing.Size(316, 22);
this.batchReplaceTXTGToolStripMenuItem.Text = "Batch Replace TXTG";
this.batchReplaceTXTGToolStripMenuItem.Click += new System.EventHandler(this.batchReplaceTXTGToolStripMenuItem_Click);
//
// batchRenameBNTXToolStripMenuItem
//
this.batchRenameBNTXToolStripMenuItem.Name = "batchRenameBNTXToolStripMenuItem";
this.batchRenameBNTXToolStripMenuItem.Size = new System.Drawing.Size(316, 22);
this.batchRenameBNTXToolStripMenuItem.Text = "Batch Rename BNTX from Filename";
this.batchRenameBNTXToolStripMenuItem.Click += new System.EventHandler(this.batchRenameBNTXToolStripMenuItem_Click);
//
// experimentalToolStripMenuItem // experimentalToolStripMenuItem
// //
this.experimentalToolStripMenuItem.Name = "experimentalToolStripMenuItem"; this.experimentalToolStripMenuItem.Name = "experimentalToolStripMenuItem";
@ -590,6 +617,9 @@
private System.Windows.Forms.ToolStripMenuItem hashCalculatorToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem hashCalculatorToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem batchExportTexturesAllSupportedFormatsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem batchExportTexturesAllSupportedFormatsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem batchExportModelsToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem batchExportModelsToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem batchReplaceFTPToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem batchReplaceTXTGToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem batchRenameBNTXToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem donateToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem donateToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openUserFolderToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem openUserFolderToolStripMenuItem;
} }

View file

@ -17,6 +17,10 @@ using System.Reflection;
using OpenTK.Graphics.OpenGL; using OpenTK.Graphics.OpenGL;
using Toolbox.Library.NodeWrappers; using Toolbox.Library.NodeWrappers;
using Toolbox.Library.Rendering; using Toolbox.Library.Rendering;
using Bfres.Structs;
using Syroot.NintenTools.NSW.Bntx;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
using FirstPlugin;
namespace Toolbox namespace Toolbox
{ {
@ -475,7 +479,16 @@ namespace Toolbox
if (format != null) if (format != null)
{ {
if (!format.CanSave) if (!format.CanSave)
{
if (Runtime.AlwaysSaveAll)
{
continue;
}
else
{
return; return;
}
}
string FileName = format.FilePath; string FileName = format.FilePath;
if (!File.Exists(FileName)) if (!File.Exists(FileName))
@ -488,7 +501,16 @@ namespace Toolbox
sfd.FileName = format.FileName; sfd.FileName = format.FileName;
if (sfd.ShowDialog() != DialogResult.OK) if (sfd.ShowDialog() != DialogResult.OK)
{
if (Runtime.AlwaysSaveAll)
{
continue;
}
else
{
return; return;
}
}
FileName = sfd.FileName; FileName = sfd.FileName;
} }
@ -498,8 +520,15 @@ namespace Toolbox
if (format is STGenericWrapper && !(format is STGenericTexture)) if (format is STGenericWrapper && !(format is STGenericTexture))
{ {
((STGenericWrapper)format).Export(FileName); ((STGenericWrapper)format).Export(FileName);
if (Runtime.AlwaysSaveAll)
{
continue;
}
else
{
return; return;
} }
}
if (node is ArchiveBase) if (node is ArchiveBase)
STFileSaver.SaveFileFormat(((IFileFormat)((ArchiveBase)node).ArchiveFile), FileName, UseCompressDialog); STFileSaver.SaveFileFormat(((IFileFormat)((ArchiveBase)node).ArchiveFile), FileName, UseCompressDialog);
@ -1396,6 +1425,131 @@ namespace Toolbox
} }
} }
private void batchReplaceTXTGToolStripMenuItem_Click(object sender, EventArgs e)
{
BatchReplaceTXTG();
}
private void BatchReplaceTXTG()
{
ObjectEditor ObjectEditor = (ObjectEditor)ActiveMdiChild;
FolderSelectDialog sfd = new FolderSelectDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
foreach (TreeNode node in ObjectEditor.GetNodes())
{
STGenericWrapper foundNode = (STGenericWrapper)node;
if (foundNode == null)
{
continue;
}
foreach (string file in System.IO.Directory.GetFiles(sfd.SelectedPath))
{
if (!file.Contains(foundNode.Text + "."))
{
continue;
}
foundNode.Replace(file);
}
}
}
}
private void batchReplaceFTPToolStripMenuItem_Click(object sender, EventArgs e)
{
BatchReplaceFTP();
}
private void BatchReplaceFTP()
{
ObjectEditor ObjectEditor = (ObjectEditor)ActiveMdiChild;
FolderSelectDialog sfd = new FolderSelectDialog();
if (sfd.ShowDialog() == DialogResult.OK)
{
foreach (TreeNode node in ObjectEditor.GetNodes())
{
TreeNode foundNode = FindNodeByText(node, "Texture Pattern Animations");
// Skip if no Texture Pattern Animation node
if (foundNode == null)
{
continue;
}
string parentName = foundNode.FullPath.Split('\\')[0];
string sourcePath = Path.Combine(sfd.SelectedPath, parentName + ".bfres");
// Skip if no path found
if (!Directory.Exists(sourcePath))
{
continue;
}
BFRESGroupNode groupNode = (BFRESGroupNode)foundNode;
groupNode.ReplaceAll(sourcePath);
}
}
}
private TreeNode FindNodeByText(TreeNode treeNode, string searchText)
{
// Check if the current node matches the searchText.
if (treeNode.Text == searchText)
{
return treeNode; // Found a match, return the current node.
}
// Recursively search in each child node.
foreach (TreeNode tn in treeNode.Nodes)
{
TreeNode result = FindNodeByText(tn, searchText);
if (result != null)
{
return result; // If a match is found in the child nodes, return it.
}
}
// If no match is found in this subtree, return null.
return null;
}
private void batchRenameBNTXToolStripMenuItem_Click(object sender, EventArgs e)
{
ObjectEditor ObjectEditor = (ObjectEditor)ActiveMdiChild;
foreach (TreeNode node in ObjectEditor.GetNodes())
{
FirstPlugin.BNTX foundNode = (FirstPlugin.BNTX)node;
// Skip if no BNTX
if (foundNode == null)
{
continue;
}
string fileName = Path.GetFileNameWithoutExtension(foundNode.FilePath).Split('.')[0];
// Rename file
foundNode.Text = fileName;
if (foundNode.BinaryTexFile != null)
{
foundNode.BinaryTexFile.Name = fileName;
}
string textureKey = foundNode.Textures.Keys.FirstOrDefault();
TextureData textureData = foundNode.Textures.Values.FirstOrDefault();
if (textureData != null)
{
textureData.Text = fileName;
textureData.Name = fileName;
textureData.Texture.Name = fileName;
foundNode.Textures.Remove(textureKey);
foundNode.Textures.Add(fileName, textureData);
}
}
ObjectEditor.Update();
}
private List<string> failedFiles = new List<string>(); private List<string> failedFiles = new List<string>();
private List<string> batchExportFileList = new List<string>(); private List<string> batchExportFileList = new List<string>();
private void BatchExportModels(string[] files, string outputFolder) private void BatchExportModels(string[] files, string outputFolder)

View file

@ -73,6 +73,7 @@
<HintPath>Lib\OpenTK.GLControl.dll</HintPath> <HintPath>Lib\OpenTK.GLControl.dll</HintPath>
<Private>False</Private> <Private>False</Private>
</Reference> </Reference>
<Reference Include="Syroot.NintenTools.NSW.Bntx, Version=1.2.3.0, Culture=neutral, PublicKeyToken=null" />
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />