ME3Explorer.Texplorer2.saveChangesToolStripMenuItem_Click C# (CSharp) Method

saveChangesToolStripMenuItem_Click() private method

private saveChangesToolStripMenuItem_Click ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        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;
            });
        }
Texplorer2