diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/Events.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/Events.cs index 52740c1..edb824e 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/Events.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/Events.cs @@ -197,16 +197,16 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders Writer.WriteWriter(newWriter);*/ } - if (Objects != null) - { - Console.WriteLine("Writing EventObjects"); - Writer.WriteAscii(ObjectData); - Writer.WriteUInt32((uint) Objects.Count); - foreach (EventObject eventObject in Objects) - { - eventObject.Write(Writer); - } - } + // if (Objects != null) + // { + // Console.WriteLine("Writing EventObjects"); + // Writer.WriteAscii(ObjectData); + // Writer.WriteUInt32((uint) Objects.Count); + // foreach (EventObject eventObject in Objects) + // { + // eventObject.Write(Writer); + // } + // } if (ObjectTypes != null) { diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/Frame.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/Frame.cs index 69a97fd..28ce555 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/Frame.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/Frame.cs @@ -92,16 +92,16 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders FadeOut.Write(Writer); } else Writer.Skip(1); - //Writer.Skip(2); Writer.WriteInt32(Items.Count); foreach (var item in Items) { 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}; - Writer.WriteBytes(bytes); + //Writer.WriteBytes(bytes); + //wtf help } // Writer.WriteAscii("AA"); diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/FrameItem.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/FrameItem.cs index 6e5b4c5..b32202b 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/FrameItem.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/FrameItem.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics; using DotNetCTFDumper.MMFParser.EXE; using DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks; using DotNetCTFDumper.Utils; @@ -22,6 +23,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders public override void Write(ByteWriter Writer) { + Debug.Assert(ObjectType==2); Writer.WriteInt32(this.ObjectType); Writer.WriteInt32(Handle); Writer.AutoWriteUnicode(Name); diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/ValueList.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/ValueList.cs index 6fc7258..ef53e0c 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/ValueList.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/ValueList.cs @@ -56,7 +56,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders public override void Read() { - Name = Helper.AutoReadUnicode(Reader); + Name = Reader.AutoReadUnicode(); var type = Reader.ReadInt32(); switch (type) { @@ -88,7 +88,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders else if (Value is double || Value is float) { Writer.WriteInt32(1); - Writer.Write((float)Value); + Writer.WriteSingle((float)Value); } } } diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs index accc5f9..2a53362 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs @@ -22,9 +22,19 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks 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); + } } - + public AnimationObject(ByteReader reader) : base(reader) { } } @@ -36,7 +46,12 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks 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() @@ -79,6 +94,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks Writer.WriteInt32(MaxSpeed); Writer.WriteInt32(Repeat); Writer.WriteInt32(BackTo); + Writer.WriteInt32(Frames.Count); foreach (int frame in Frames) { Writer.WriteInt32(frame); diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/Movements.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/Movements.cs index 8c8c359..7f7cabe 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/Movements.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/Movements.cs @@ -12,7 +12,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks public List Items = new List(); public override void Write(ByteWriter Writer) { - Writer.WriteInt32(Items.Count); + Writer.WriteUInt32((uint) Items.Count); foreach (Movement movement in Items) { movement.Write(Writer); @@ -50,13 +50,13 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks public byte MovingAtStart=1; public int DirectionAtStart; public int DataSize; - public byte[] extData; + public byte[] extData=new byte[0]; public override void Write(ByteWriter Writer) { Writer.AutoWriteUnicode(Name); Writer.AutoWriteUnicode(Extension); - Writer.WriteUInt32((uint) Identifier); - Writer.WriteInt32(DataSize); + Writer.WriteInt32(Identifier); + // var newWriter = new ByteWriter(new MemoryStream()); if (Extension.Length==0) { @@ -66,8 +66,9 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks newWriter.WriteInt8(MovingAtStart); newWriter.Skip(3); newWriter.WriteInt32(DirectionAtStart); - // newWriter.WriteBytes(extData); + //newWriter.WriteBytes(extData); } + //write loader Writer.WriteWriter(newWriter); @@ -87,8 +88,6 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks if(Extension.Length>0) { extData = Reader.ReadBytes(DataSize); - - } else { diff --git a/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs b/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs index 8b36969..0e1c78b 100644 --- a/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs +++ b/DotNetCTFDumper/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs @@ -22,6 +22,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks Writer.WriteInt32(ObjectFlags); Writer.WriteInt32(NewObjectFlags); Writer.WriteColor(BackgroundColor); + for (int i = 0; i < 9; i++) { try @@ -31,9 +32,10 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks } catch { - Writer.WriteInt16(-1); + } } + Values.Write(Writer); Strings.Write(Writer); Movements.Write(Writer); @@ -91,7 +93,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks Movements.Read(); Behaviours = new Behaviours(Reader); Behaviours.Read(); - Reader.Skip(2);//TODO: Help + Reader.Skip(2);//Transitions Print();