private void saveChangesToolStripMenuItem_Click(object sender, EventArgs e)
{
if (ChangedTextures.Count == 0)
{
MessageBox.Show("You haven't made any changes yet.", "Emergency Induction Port...", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
DisableContext = true;
ProgBarUpdater.ChangeProgressBar(0, ChangedTextures.Count);
OutputBoxPrintLn("Saving " + ChangedTextures.Count + " Textures...");
// KFreon: Run save function on backbone
backbone.AddToBackBone(b =>
{
for (int i = 0; i < ChangedTextures.Count; i++)
{
// KFreon: Check cancellation
if (cts.IsCancellationRequested)
{
StatusUpdater.UpdateText("Saving Cancelled!");
OutputBoxPrintLn("Saving Cancelled!");
return false; // KFreon: return doesn't matter right now
}
// KFreon: Setup objects
TreeTexInfo tex = Tree.GetTex(ChangedTextures[i]);
StatusUpdater.UpdateText("Saving " + tex.TexName + " | " + MainProgressBar.Value + 1 + " \\ " + MainProgressBar.Maximum);
PCCObjects.IPCCObject pcc = PCCObjects.Creation.CreatePCCObject(tex.Files[0], WhichGame);
{
Textures.ITexture2D tex2D = tex.Textures[0];
{
// KFreon: Save first file
/*PCCObjects.IExportEntry expEntry = pcc.Exports[tex2D.pccExpIdx];
expEntry.SetData(tex2D.ToArray(expEntry.DataOffset, pcc));
pcc.saveToFile(pcc.pccFileName);*/
/*this.Invoke(new Action(() => MainProgressBar.Increment(1)));
OutputBoxPrintLn("Initial saving complete for " + tex.TexName + ". Now saving remaining PCC's for this texture...");*/
// KFreon: Save first file and refresh object for next file. Dunno why necessary but it is. git: #296
if (!SaveFile(new List<string>() { tex.Files[0] }, new List<int>() { tex.ExpIDs[0] }, tex2D, 0))
return false;
// KFreon: Refresh objects
if (tex.Files.Count > 1)
{
pcc = PCCObjects.Creation.CreatePCCObject(tex.Files[0], WhichGame);
tex2D = pcc.CreateTexture2D(tex.ExpIDs[0], pathBIOGame);
}
// KFreon: Save files
for (int j = 1; j < tex.Files.Count; j++)
{
if (!SaveFile(tex.Files, tex.ExpIDs, tex2D, j))
return false;
}
tex2D.hasChanged = false;
}
}
ProgBarUpdater.IncrementBar();
}
OutputBoxPrintLn("All textures saved!");
ChangedTextures.Clear();
DisableContext = false;
StatusUpdater.UpdateText("Updating TOC's...");
ProgBarUpdater.ChangeProgressBar(0, 1);
UpdateTOCs(WhichGame);
ProgBarUpdater.ChangeProgressBar(1, 1);
StatusUpdater.UpdateText("All textures saved!");
return true;
});
}