diff --git a/BMGEditor/BMG.cs b/BMGEditor/BMG.cs index 8a79b5d..7dddc42 100644 --- a/BMGEditor/BMG.cs +++ b/BMGEditor/BMG.cs @@ -118,7 +118,7 @@ namespace BMGEditor m_File_Tbl.Entries.Sort((x, y) => { - int a = (int)x[70793394], b = (int)y[70793394]; + UInt32 a = (UInt32)x[70793394], b = (UInt32)y[70793394]; return a.CompareTo(b); }); int l = 0; diff --git a/BMGEditor/UI/BMGEditForm.cs b/BMGEditor/UI/BMGEditForm.cs index 660709d..cd4aa0a 100644 --- a/BMGEditor/UI/BMGEditForm.cs +++ b/BMGEditor/UI/BMGEditForm.cs @@ -76,7 +76,60 @@ namespace BMGEditor return String.CompareOrdinal(entryNameA, entryNameB); }); - //m_FileTbl + m_FileTbl.Entries.Clear(); + + foreach (BMG.TextEntry txtEntry in m_File.Entries) + { + Bcsv.Entry entry = new Bcsv.Entry(); + m_FileTbl.Entries.Add(entry); + + int index = 0; + foreach (Bcsv.Field field in m_FileTbl.Fields.Values) + { + uint hash = field.NameHash; + string valstring; + if (index == 0) + valstring = txtEntry.entryName; + else + valstring = String.Concat(txtEntry.entryNo); + + index++; + + + try + { + switch (field.Type) + { + case 0: + case 3: entry.Add(hash, uint.Parse(valstring)); break; + case 4: entry.Add(hash, ushort.Parse(valstring)); break; + case 5: entry.Add(hash, byte.Parse(valstring)); break; + case 2: entry.Add(hash, float.Parse(valstring)); break; + case 6: entry.Add(hash, valstring); break; + } + } + catch + { + switch (field.Type) + { + case 0: + case 3: entry.Add(hash, (uint)0); break; + case 4: entry.Add(hash, (ushort)0); break; + case 5: entry.Add(hash, (byte)0); break; + case 2: entry.Add(hash, 0f); break; + case 6: entry.Add(hash, ""); break; + } + } + } + } + + m_FileTbl.Flush(); + m_File.Entries.Sort((x, y) => + { + int entryIndexA = x.entryNo, entryIndexB = y.entryNo; + return entryIndexA.CompareTo(entryIndexB); + }); + m_File.WriteToFile(); } }