Trying to solve save problems

This commit is contained in:
Denis
2023-10-27 14:25:08 +02:00
parent 2db06494e2
commit e4fdaa4c69
7 changed files with 29 additions and 32 deletions

View File

@@ -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);
}
}
}

View File

@@ -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);
}

View File

@@ -105,6 +105,11 @@ namespace BMGEditor
m_File.Close();
}
public void Flush()
{
m_File.Flush();
}
public override bool DirectoryExists(string directory)
{

View File

@@ -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;
}
}

View File

@@ -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
{

View File

@@ -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();
}
}
}

View File

@@ -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;