diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs b/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs index 0cc9566..b824909 100644 --- a/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs +++ b/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs @@ -19,7 +19,22 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders public int LastViewedY; public List Folders; public List Instances; - public uint Flags; + + public BitDict Flags = new BitDict(new string[] + { + "GrabDesktop", + "KeepDisplay", + "BackgroundCollisions", + "DisplayFrameTitle", + "ResizeToScreen", + "ForceLoadOnCall", + "NoDisplaySurface", + "ScreenSaverSetup", + "TimerBasedMovements", + "MochiAds", + "NoGlobalEvents" + }); + public string Password; public List Palette; public int StampHandle; @@ -39,7 +54,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders Writer.WriteInt32(SizeX); Writer.WriteInt32(SizeY); Writer.WriteColor(Background); - Writer.WriteUInt32(Flags); + Writer.WriteUInt32(Flags.flag); Writer.WriteInt32(MaxObjects); Writer.AutoWriteUnicode(Password); Writer.WriteInt32(0); @@ -50,6 +65,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders { Writer.WriteColor(item); } + Writer.WriteInt32(StampHandle); Writer.WriteInt32(ActiveLayer); Writer.WriteInt32(Layers.Count); @@ -57,6 +73,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders { layer.Write(Writer); } + //TODO: Do transitions Writer.WriteInt8(0); Writer.WriteInt8(0); @@ -66,22 +83,20 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders { item.Write(Writer); } + Writer.WriteInt32(Folders.Count); foreach (var item in Folders) { item.Write(Writer); } + Writer.WriteInt32(Instances.Count); foreach (var item in Instances) { item.Write(Writer); } - Events.Write(Writer); - - - - + Events.Write(Writer); } public override void Print() @@ -97,80 +112,77 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders SizeX = Reader.ReadInt32(); SizeY = Reader.ReadInt32(); Background = Reader.ReadColor(); - Flags = Reader.ReadUInt32(); + Flags.flag = Reader.ReadUInt32(); + MaxObjects = Reader.ReadInt32(); Password = Helper.AutoReadUnicode(Reader); Reader.Skip(4); + LastViewedX = Reader.ReadInt32(); LastViewedY = Reader.ReadInt32(); - var paletteNum = Reader.ReadInt32(); + var paletteSize = Reader.ReadInt32(); Palette = new List(); - for (int i = 0; i < paletteNum; i++) + for (int i = 0; i < paletteSize; i++) { Palette.Add(Reader.ReadColor()); } + StampHandle = Reader.ReadInt32(); + ActiveLayer = Reader.ReadInt32(); - var layersCunt = Reader.ReadInt32(); + + int layersCount = Reader.ReadInt32(); Layers = new List(); - for (int i = 0; i < layersCunt; i++) + for (int i = 0; i < layersCount; i++) { var layer = new Layer(Reader); layer.Read(); Layers.Add(layer); - } + //fadein + if (Reader.ReadByte() != 0) + { + throw new NotImplementedException(); + } //fadeout - Reader.Skip(2); + if (Reader.ReadByte() != 0) + { + throw new NotImplementedException(); + } + Items = new List(); - var frameitemsCount = Reader.ReadInt32(); - for (int i = 0; i < frameitemsCount; i++) + var frameItemsCount = Reader.ReadInt32(); + for (int i = 0; i < frameItemsCount; i++) { var frameitem = new FrameItem(Reader); frameitem.Read(); Items.Add(frameitem); - Console.WriteLine("Frameitem:"+frameitem.Name); + Console.WriteLine("Frameitem:" + frameitem.Name); } - + Folders = new List(); var folderCount = Reader.ReadInt32(); - for (int i = 0; i < frameitemsCount; i++) + for (int i = 0; i < folderCount; i++) { var folder = new ItemFolder(Reader); folder.Read(); Folders.Add(folder); } - + Instances = new List(); - var instancesCount = 0;//Reader.ReadInt32(); + var instancesCount = Reader.ReadInt32(); for (int i = 0; i < instancesCount; i++) { var inst = new FrameInstance(Reader); - //inst.Read(); + inst.Read(); Instances.Add(inst); } + Reader.Skip(96); Events = new Events(Reader); Events.Read(); - - - - - - } - - } - - - - -} - - - - - +} \ No newline at end of file diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs index 8960aca..bcf4f38 100644 --- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs +++ b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs @@ -67,7 +67,6 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks Movements.Read(); Behaviours = new Behaviours(Reader); Behaviours.Read(); - Reader.Skip(56); Print();