Fixed some bugs in movement writing

master
1987kostya 4 years ago
parent 6ec7b77d17
commit 9dd220a99f

@ -197,16 +197,16 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
Writer.WriteWriter(newWriter);*/ Writer.WriteWriter(newWriter);*/
} }
if (Objects != null) // if (Objects != null)
{ // {
Console.WriteLine("Writing EventObjects"); // Console.WriteLine("Writing EventObjects");
Writer.WriteAscii(ObjectData); // Writer.WriteAscii(ObjectData);
Writer.WriteUInt32((uint) Objects.Count); // Writer.WriteUInt32((uint) Objects.Count);
foreach (EventObject eventObject in Objects) // foreach (EventObject eventObject in Objects)
{ // {
eventObject.Write(Writer); // eventObject.Write(Writer);
} // }
} // }
if (ObjectTypes != null) if (ObjectTypes != null)
{ {

@ -92,16 +92,16 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
FadeOut.Write(Writer); FadeOut.Write(Writer);
} }
else Writer.Skip(1); else Writer.Skip(1);
//Writer.Skip(2);
Writer.WriteInt32(Items.Count); Writer.WriteInt32(Items.Count);
foreach (var item in Items) foreach (var item in Items)
{ {
item.Write(Writer); item.Write(Writer);
Writer.Skip(4); //Writer.Skip(4);
var bytes = new byte[] {0x01,0x01,0x00,0x00, 0x00,0x00,0x00,0x00, 0x80,0x01,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x32,0x00, 0x00,0x00,0x32,0x00, 0x00,0x00,0x01,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00}; var bytes = new byte[] {0x01,0x01,0x00,0x00, 0x00,0x00,0x00,0x00, 0x80,0x01,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x32,0x00, 0x00,0x00,0x32,0x00, 0x00,0x00,0x01,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x01,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00};
Writer.WriteBytes(bytes); //Writer.WriteBytes(bytes);
//wtf help
} }
// Writer.WriteAscii("AA"); // Writer.WriteAscii("AA");

@ -1,4 +1,5 @@
using System; using System;
using System.Diagnostics;
using DotNetCTFDumper.MMFParser.EXE; using DotNetCTFDumper.MMFParser.EXE;
using DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks; using DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks;
using DotNetCTFDumper.Utils; using DotNetCTFDumper.Utils;
@ -22,6 +23,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
Debug.Assert(ObjectType==2);
Writer.WriteInt32(this.ObjectType); Writer.WriteInt32(this.ObjectType);
Writer.WriteInt32(Handle); Writer.WriteInt32(Handle);
Writer.AutoWriteUnicode(Name); Writer.AutoWriteUnicode(Name);

@ -56,7 +56,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
public override void Read() public override void Read()
{ {
Name = Helper.AutoReadUnicode(Reader); Name = Reader.AutoReadUnicode();
var type = Reader.ReadInt32(); var type = Reader.ReadInt32();
switch (type) switch (type)
{ {
@ -88,7 +88,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
else if (Value is double || Value is float) else if (Value is double || Value is float)
{ {
Writer.WriteInt32(1); Writer.WriteInt32(1);
Writer.Write((float)Value); Writer.WriteSingle((float)Value);
} }
} }
} }

@ -22,7 +22,17 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
Items.Add(item); Items.Add(item);
} }
} }
}
public override void Write(ByteWriter Writer)
{
base.Write(Writer);
Writer.WriteInt8(1);
Writer.WriteUInt32((uint) Items.Count);
foreach (Animation animation in Items)
{
animation.Write(Writer);
}
} }
@ -36,7 +46,12 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
throw new NotImplementedException(); Writer.AutoWriteUnicode(Name);
Writer.WriteInt32(Directions.Count);
foreach (AnimationDirection direction in Directions)
{
direction.Write(Writer);
}
} }
public override void Print() public override void Print()
@ -79,6 +94,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
Writer.WriteInt32(MaxSpeed); Writer.WriteInt32(MaxSpeed);
Writer.WriteInt32(Repeat); Writer.WriteInt32(Repeat);
Writer.WriteInt32(BackTo); Writer.WriteInt32(BackTo);
Writer.WriteInt32(Frames.Count);
foreach (int frame in Frames) foreach (int frame in Frames)
{ {
Writer.WriteInt32(frame); Writer.WriteInt32(frame);

@ -12,7 +12,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
public List<Movement> Items = new List<Movement>(); public List<Movement> Items = new List<Movement>();
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
Writer.WriteInt32(Items.Count); Writer.WriteUInt32((uint) Items.Count);
foreach (Movement movement in Items) foreach (Movement movement in Items)
{ {
movement.Write(Writer); movement.Write(Writer);
@ -50,13 +50,13 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
public byte MovingAtStart=1; public byte MovingAtStart=1;
public int DirectionAtStart; public int DirectionAtStart;
public int DataSize; public int DataSize;
public byte[] extData; public byte[] extData=new byte[0];
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
Writer.AutoWriteUnicode(Name); Writer.AutoWriteUnicode(Name);
Writer.AutoWriteUnicode(Extension); Writer.AutoWriteUnicode(Extension);
Writer.WriteUInt32((uint) Identifier); Writer.WriteInt32(Identifier);
Writer.WriteInt32(DataSize); //
var newWriter = new ByteWriter(new MemoryStream()); var newWriter = new ByteWriter(new MemoryStream());
if (Extension.Length==0) if (Extension.Length==0)
{ {
@ -66,8 +66,9 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
newWriter.WriteInt8(MovingAtStart); newWriter.WriteInt8(MovingAtStart);
newWriter.Skip(3); newWriter.Skip(3);
newWriter.WriteInt32(DirectionAtStart); newWriter.WriteInt32(DirectionAtStart);
// newWriter.WriteBytes(extData); //newWriter.WriteBytes(extData);
} }
//write loader
Writer.WriteWriter(newWriter); Writer.WriteWriter(newWriter);
@ -87,8 +88,6 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
if(Extension.Length>0) if(Extension.Length>0)
{ {
extData = Reader.ReadBytes(DataSize); extData = Reader.ReadBytes(DataSize);
} }
else else
{ {

@ -22,6 +22,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
Writer.WriteInt32(ObjectFlags); Writer.WriteInt32(ObjectFlags);
Writer.WriteInt32(NewObjectFlags); Writer.WriteInt32(NewObjectFlags);
Writer.WriteColor(BackgroundColor); Writer.WriteColor(BackgroundColor);
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
try try
@ -31,9 +32,10 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
} }
catch catch
{ {
Writer.WriteInt16(-1);
} }
} }
Values.Write(Writer); Values.Write(Writer);
Strings.Write(Writer); Strings.Write(Writer);
Movements.Write(Writer); Movements.Write(Writer);
@ -91,7 +93,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
Movements.Read(); Movements.Read();
Behaviours = new Behaviours(Reader); Behaviours = new Behaviours(Reader);
Behaviours.Read(); Behaviours.Read();
Reader.Skip(2);//TODO: Help Reader.Skip(2);//Transitions
Print(); Print();

Loading…
Cancel
Save