From e4fdaa4c6969f8693ad214ae5f7eaa1774aee255 Mon Sep 17 00:00:00 2001 From: Denis <93516910+Bussun@users.noreply.github.com> Date: Fri, 27 Oct 2023 14:25:08 +0200 Subject: [PATCH] Trying to solve save problems --- BMGEditor/FS/ExternalFilesystem.cs | 2 +- BMGEditor/FS/FilesystemBase.cs | 8 ++++---- BMGEditor/FS/RarcFilesystem.cs | 5 +++++ BMGEditor/FS/Yaz0Stream.cs | 5 ----- BMGEditor/Program.cs | 2 +- BMGEditor/UI/BMGEditForm.Methods.cs | 15 ++++++++------- BMGEditor/UI/BMGEditForm.cs | 24 ++++++++++-------------- 7 files changed, 29 insertions(+), 32 deletions(-) diff --git a/BMGEditor/FS/ExternalFilesystem.cs b/BMGEditor/FS/ExternalFilesystem.cs index ac89403..8e47460 100644 --- a/BMGEditor/FS/ExternalFilesystem.cs +++ b/BMGEditor/FS/ExternalFilesystem.cs @@ -67,7 +67,7 @@ namespace BMGEditor { public ExternalFile(string filename, bool create) { - Stream = File.Open(filename, create ? FileMode.Create : FileMode.Open, FileAccess.ReadWrite, FileShare.Read); + Stream = File.Open(filename, create ? FileMode.Create : FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite); } } } diff --git a/BMGEditor/FS/FilesystemBase.cs b/BMGEditor/FS/FilesystemBase.cs index bcc9387..752263f 100644 --- a/BMGEditor/FS/FilesystemBase.cs +++ b/BMGEditor/FS/FilesystemBase.cs @@ -69,11 +69,11 @@ namespace BMGEditor private void InitRW() { //Original code - Reader = m_BigEndian ? new BinaryReaderBE(m_Stream, m_Encoding) : new BinaryReader(m_Stream, m_Encoding); - Writer = m_BigEndian ? new BinaryWriterBE(m_Stream, m_Encoding) : new BinaryWriter(m_Stream, m_Encoding); + //Reader = m_BigEndian ? new BinaryReaderBE(m_Stream, m_Encoding) : new BinaryReader(m_Stream, m_Encoding); + //Writer = m_BigEndian ? new BinaryWriterBE(m_Stream, m_Encoding) : new BinaryWriter(m_Stream, m_Encoding); - //Reader = Tests.isBE ? new BinaryReaderBE(m_Stream, m_Encoding) : new BinaryReader(m_Stream, m_Encoding); - //Writer = Tests.isBE ? new BinaryWriterBE(m_Stream, m_Encoding) : new BinaryWriter(m_Stream, m_Encoding); + Reader = Tests.isBE ? new BinaryReaderBE(m_Stream, m_Encoding) : new BinaryReader(m_Stream, m_Encoding); + Writer = Tests.isBE ? new BinaryWriterBE(m_Stream, m_Encoding) : new BinaryWriter(m_Stream, m_Encoding); } diff --git a/BMGEditor/FS/RarcFilesystem.cs b/BMGEditor/FS/RarcFilesystem.cs index 1a5ed9f..884336b 100644 --- a/BMGEditor/FS/RarcFilesystem.cs +++ b/BMGEditor/FS/RarcFilesystem.cs @@ -105,6 +105,11 @@ namespace BMGEditor m_File.Close(); } + public void Flush() + { + m_File.Flush(); + } + public override bool DirectoryExists(string directory) { diff --git a/BMGEditor/FS/Yaz0Stream.cs b/BMGEditor/FS/Yaz0Stream.cs index c70da17..0156afe 100644 --- a/BMGEditor/FS/Yaz0Stream.cs +++ b/BMGEditor/FS/Yaz0Stream.cs @@ -137,11 +137,6 @@ namespace BMGEditor Array.Resize(ref data, decompSize + 1); output.CopyTo(data, 0); - - FileStream test = File.OpenWrite("./test.bin"); - test.Write(output); - test.Flush(); - test.Close(); return; } } diff --git a/BMGEditor/Program.cs b/BMGEditor/Program.cs index 26815ba..65c620c 100644 --- a/BMGEditor/Program.cs +++ b/BMGEditor/Program.cs @@ -18,7 +18,7 @@ namespace BMGEditor public static class Tests { //Not a good place to put this I know but I'm trying to figure it out - public static bool isBE = false; + public static bool isBE = true; } internal static class Program { diff --git a/BMGEditor/UI/BMGEditForm.Methods.cs b/BMGEditor/UI/BMGEditForm.Methods.cs index 0d7e85f..2c1112a 100644 --- a/BMGEditor/UI/BMGEditForm.Methods.cs +++ b/BMGEditor/UI/BMGEditForm.Methods.cs @@ -7,14 +7,14 @@ namespace BMGEditor { private void openEditor() { - Form txtEditForm = new TextEntryEditorForm(m_File.Entries[entriesListBox.SelectedIndex]); + Form txtEditForm = new TextEntryEditorForm(m_BMG.Entries[entriesListBox.SelectedIndex]); txtEditForm.Show(); } private void RefreshEntriesList() { entriesListBox.Items.Clear(); - foreach (BMG.TextEntry txtEntry in m_File.Entries) + foreach (BMG.TextEntry txtEntry in m_BMG.Entries) { entriesListBox.Items.Add(txtEntry.entryName); } @@ -22,7 +22,7 @@ namespace BMGEditor private void Save() { - m_File.Entries.Sort((x, y) => + m_BMG.Entries.Sort((x, y) => { string entryNameA = x.entryName, entryNameB = y.entryName; return String.CompareOrdinal(entryNameA, entryNameB); @@ -30,7 +30,7 @@ namespace BMGEditor m_BCSV.Entries.Clear(); - foreach (BMG.TextEntry txtEntry in m_File.Entries) + foreach (BMG.TextEntry txtEntry in m_BMG.Entries) { Bcsv.Entry entry = new Bcsv.Entry(); m_BCSV.Entries.Add(entry); @@ -76,19 +76,20 @@ namespace BMGEditor } m_BCSV.Flush(); - m_File.Entries.Sort((x, y) => + m_BMG.Entries.Sort((x, y) => { int entryIndexA = x.entryNo, entryIndexB = y.entryNo; return entryIndexA.CompareTo(entryIndexB); }); - m_File.WriteToFile(); + m_BMG.WriteToFile(); } private void CloseArchive() { - m_File.Close(); + m_BMG.Close(); m_BCSV.Close(); m_ARC.Close(); + m_File.Close(); } } } diff --git a/BMGEditor/UI/BMGEditForm.cs b/BMGEditor/UI/BMGEditForm.cs index 5d8541e..c7f294b 100644 --- a/BMGEditor/UI/BMGEditForm.cs +++ b/BMGEditor/UI/BMGEditForm.cs @@ -7,21 +7,12 @@ namespace BMGEditor { public partial class BMGEditForm : Form { + private ExternalFile m_File = null; private RarcFilesystem m_ARC = null; - private BMG m_File = null; + private BMG m_BMG = null; private Bcsv m_BCSV = null; private bool arcOpen = false; - [Obsolete] - public BMGEditForm(RarcFilesystem m_ARC) - { - InitializeComponent(); - Text = $"Text editor - {Variables.softwareName} {Variables.softwareVersion}"; - if (Variables.isBeta) Text += " [BETA]"; - - deleteEntryBtn.Enabled = false; - } - public BMGEditForm() { InitializeComponent(); @@ -50,7 +41,7 @@ namespace BMGEditor private void addEntryBtn_Click(object sender, EventArgs e) { - Form newEntryForm = new NewEntryForm(m_File); + Form newEntryForm = new NewEntryForm(m_BMG); newEntryForm.ShowDialog(); RefreshEntriesList(); @@ -69,10 +60,13 @@ namespace BMGEditor private void saveBMGbtn_Click(object sender, EventArgs e) { Save(); + m_ARC.Flush(); + m_File.Flush(); } private void quitBtn_Click(object sender, EventArgs e) { + CloseArchive(); Dispose(); } @@ -95,7 +89,8 @@ namespace BMGEditor { fileName = openARCDialog.FileName; File.Copy(fileName, fileName + ".backup", true); - m_ARC = new RarcFilesystem(new ExternalFile(fileName, false)); + m_File = new ExternalFile(fileName, false); + m_ARC = new RarcFilesystem(m_File); if (m_ARC.FileExists($"{m_ARC.rootName}/message.bmg") && m_ARC.FileExists($"{m_ARC.rootName}/messageid.tbl")) { @@ -108,11 +103,12 @@ namespace BMGEditor MessageBoxButtons.OK, MessageBoxIcon.Error); m_ARC.Close(); + m_File.Close(); return; } arcOpen = true; m_BCSV = new Bcsv(m_ARC.OpenFile($"{m_ARC.rootName}/messageid.tbl")); - m_File = new BMG(m_ARC.OpenFile($"{m_ARC.rootName}/message.bmg"), m_BCSV); + m_BMG = new BMG(m_ARC.OpenFile($"{m_ARC.rootName}/message.bmg"), m_BCSV); RefreshEntriesList(); saveFileBtn.Enabled = true;