1
0
mirror of synced 2025-03-01 16:10:52 +01:00

bflan saving progress

This commit is contained in:
KillzXGaming 2019-09-10 21:25:30 -04:00
parent 674917f326
commit 82761a6120
2 changed files with 32 additions and 12 deletions

View File

@ -131,7 +131,10 @@ namespace LayoutBXLYT
{ {
writer.SetByteOrder(true); writer.SetByteOrder(true);
writer.WriteSignature(Magic); writer.WriteSignature(Magic);
writer.Write(ByteOrderMark); if (!IsBigEndian)
writer.Write((ushort)0xFFFE);
else
writer.Write((ushort)0xFEFF);
writer.SetByteOrder(IsBigEndian); writer.SetByteOrder(IsBigEndian);
writer.Write(HeaderSize); writer.Write(HeaderSize);
writer.Write(Version); writer.Write(Version);
@ -235,11 +238,11 @@ namespace LayoutBXLYT
writer.Write(ChildBinding); writer.Write(ChildBinding);
writer.Write(UnknownData); writer.Write(UnknownData);
writer.WriteUint32Offset(4, startPos); writer.WriteUint32Offset(startPos + 12, startPos);
writer.WriteString(Name); writer.WriteString(Name);
writer.Align(4); writer.Align(4);
writer.WriteUint32Offset(8, startPos); writer.WriteUint32Offset(startPos + 16, startPos);
for (int i = 0; i < Groups.Count; i++) for (int i = 0; i < Groups.Count; i++)
writer.WriteString(Groups[i], 0x24); writer.WriteString(Groups[i], 0x24);
} }
@ -291,29 +294,34 @@ namespace LayoutBXLYT
public override void Write(FileWriter writer, LayoutHeader header) public override void Write(FileWriter writer, LayoutHeader header)
{ {
long startPos = writer.Position; long startPos = writer.Position - 8;
writer.Write(FrameSize); writer.Write(FrameSize);
writer.Write(flags); writer.Write(flags);
writer.Write((byte)0); writer.Write((byte)0);
writer.Write((ushort)Textures.Count); writer.Write((ushort)Textures.Count);
writer.Write((ushort)Entries.Count); writer.Write((ushort)Entries.Count);
writer.Write(0);
if (Textures.Count > 0) if (Textures.Count > 0)
{ {
long startOfsPos = writer.Position;
writer.Write(new uint[Textures.Count]); writer.Write(new uint[Textures.Count]);
for (int i = 0; i < Textures.Count; i++) for (int i = 0; i < Textures.Count; i++)
{ {
writer.WriteUint32Offset(4 + (i * 4), startPos); writer.WriteUint32Offset(startOfsPos + (i * 4), startPos);
writer.WriteString(Textures[i]); writer.WriteString(Textures[i]);
} }
} }
if (Entries.Count > 0) if (Entries.Count > 0)
{ {
writer.WriteUint32Offset(startPos + 8, startPos);
long startOfsPos = writer.Position;
writer.Write(new uint[Entries.Count]); writer.Write(new uint[Entries.Count]);
for (int i = 0; i < Textures.Count; i++) for (int i = 0; i < Entries.Count; i++)
{ {
writer.WriteUint32Offset(4 + (i * 4), startPos); writer.WriteUint32Offset(startOfsPos + (i * 4), startPos);
Entries[i].Write(writer, header); Entries[i].Write(writer, header);
} }
} }
@ -353,14 +361,14 @@ namespace LayoutBXLYT
writer.WriteString(Name, 28); writer.WriteString(Name, 28);
writer.Write((byte)Tags.Count); writer.Write((byte)Tags.Count);
writer.Write(Target, true); writer.Write(Target, false);
writer.Write((byte)0); writer.Write((ushort)0);
if (Tags.Count > 0) if (Tags.Count > 0)
{ {
writer.Write(new uint[Tags.Count]); writer.Write(new uint[Tags.Count]);
for (int i = 0; i < Tags.Count; i++) for (int i = 0; i < Tags.Count; i++)
{ {
writer.WriteUint32Offset(4 + (i * 4), startPos); writer.WriteUint32Offset(startPos + 4 + (i * 4), startPos);
Tags[i].Write(writer, header, Target); Tags[i].Write(writer, header, Target);
} }
} }
@ -443,7 +451,7 @@ namespace LayoutBXLYT
writer.Write(new uint[Entries.Count]); writer.Write(new uint[Entries.Count]);
for (int i = 0; i < Entries.Count; i++) for (int i = 0; i < Entries.Count; i++)
{ {
writer.WriteUint32Offset(8 + (i * 4), startPos); writer.WriteUint32Offset(startPos + 8 + (i * 4), startPos);
Entries[i].Write(writer, header); Entries[i].Write(writer, header);
} }
} }
@ -500,7 +508,7 @@ namespace LayoutBXLYT
if (KeyFrames.Count > 0) if (KeyFrames.Count > 0)
{ {
writer.WriteUint32Offset(8, startPos); writer.WriteUint32Offset(startPos + 8, startPos);
for (int i = 0; i < KeyFrames.Count; i++) for (int i = 0; i < KeyFrames.Count; i++)
KeyFrames[i].Write(writer, DataType); KeyFrames[i].Write(writer, DataType);
} }

View File

@ -490,6 +490,18 @@ namespace LayoutBXLYT
private void saveToolStripMenuItem_Click(object sender, EventArgs e) private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{ {
if (ActiveAnimation != null && ActiveAnimation.FileInfo.CanSave)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = Utils.GetAllFilters(ActiveAnimation.FileInfo);
sfd.FileName = ActiveAnimation.FileInfo.FileName;
if (sfd.ShowDialog() == DialogResult.OK)
{
STFileSaver.SaveFileFormat(ActiveAnimation.FileInfo, sfd.FileName);
}
}
if (ActiveLayout != null && ActiveLayout.FileInfo.CanSave) if (ActiveLayout != null && ActiveLayout.FileInfo.CanSave)
{ {
SaveFileDialog sfd = new SaveFileDialog(); SaveFileDialog sfd = new SaveFileDialog();