|
|
@ -19,7 +19,22 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
|
|
|
|
public int LastViewedY;
|
|
|
|
public int LastViewedY;
|
|
|
|
public List<ItemFolder> Folders;
|
|
|
|
public List<ItemFolder> Folders;
|
|
|
|
public List<FrameInstance> Instances;
|
|
|
|
public List<FrameInstance> 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 string Password;
|
|
|
|
public List<Color> Palette;
|
|
|
|
public List<Color> Palette;
|
|
|
|
public int StampHandle;
|
|
|
|
public int StampHandle;
|
|
|
@ -39,7 +54,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
|
|
|
|
Writer.WriteInt32(SizeX);
|
|
|
|
Writer.WriteInt32(SizeX);
|
|
|
|
Writer.WriteInt32(SizeY);
|
|
|
|
Writer.WriteInt32(SizeY);
|
|
|
|
Writer.WriteColor(Background);
|
|
|
|
Writer.WriteColor(Background);
|
|
|
|
Writer.WriteUInt32(Flags);
|
|
|
|
Writer.WriteUInt32(Flags.flag);
|
|
|
|
Writer.WriteInt32(MaxObjects);
|
|
|
|
Writer.WriteInt32(MaxObjects);
|
|
|
|
Writer.AutoWriteUnicode(Password);
|
|
|
|
Writer.AutoWriteUnicode(Password);
|
|
|
|
Writer.WriteInt32(0);
|
|
|
|
Writer.WriteInt32(0);
|
|
|
@ -50,6 +65,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Writer.WriteColor(item);
|
|
|
|
Writer.WriteColor(item);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Writer.WriteInt32(StampHandle);
|
|
|
|
Writer.WriteInt32(StampHandle);
|
|
|
|
Writer.WriteInt32(ActiveLayer);
|
|
|
|
Writer.WriteInt32(ActiveLayer);
|
|
|
|
Writer.WriteInt32(Layers.Count);
|
|
|
|
Writer.WriteInt32(Layers.Count);
|
|
|
@ -57,6 +73,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
|
|
|
|
{
|
|
|
|
{
|
|
|
|
layer.Write(Writer);
|
|
|
|
layer.Write(Writer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: Do transitions
|
|
|
|
//TODO: Do transitions
|
|
|
|
Writer.WriteInt8(0);
|
|
|
|
Writer.WriteInt8(0);
|
|
|
|
Writer.WriteInt8(0);
|
|
|
|
Writer.WriteInt8(0);
|
|
|
@ -66,22 +83,20 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item.Write(Writer);
|
|
|
|
item.Write(Writer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Writer.WriteInt32(Folders.Count);
|
|
|
|
Writer.WriteInt32(Folders.Count);
|
|
|
|
foreach (var item in Folders)
|
|
|
|
foreach (var item in Folders)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item.Write(Writer);
|
|
|
|
item.Write(Writer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Writer.WriteInt32(Instances.Count);
|
|
|
|
Writer.WriteInt32(Instances.Count);
|
|
|
|
foreach (var item in Instances)
|
|
|
|
foreach (var item in Instances)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
item.Write(Writer);
|
|
|
|
item.Write(Writer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Events.Write(Writer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Events.Write(Writer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void Print()
|
|
|
|
public override void Print()
|
|
|
@ -97,80 +112,77 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
|
|
|
|
SizeX = Reader.ReadInt32();
|
|
|
|
SizeX = Reader.ReadInt32();
|
|
|
|
SizeY = Reader.ReadInt32();
|
|
|
|
SizeY = Reader.ReadInt32();
|
|
|
|
Background = Reader.ReadColor();
|
|
|
|
Background = Reader.ReadColor();
|
|
|
|
Flags = Reader.ReadUInt32();
|
|
|
|
Flags.flag = Reader.ReadUInt32();
|
|
|
|
|
|
|
|
|
|
|
|
MaxObjects = Reader.ReadInt32();
|
|
|
|
MaxObjects = Reader.ReadInt32();
|
|
|
|
Password = Helper.AutoReadUnicode(Reader);
|
|
|
|
Password = Helper.AutoReadUnicode(Reader);
|
|
|
|
Reader.Skip(4);
|
|
|
|
Reader.Skip(4);
|
|
|
|
|
|
|
|
|
|
|
|
LastViewedX = Reader.ReadInt32();
|
|
|
|
LastViewedX = Reader.ReadInt32();
|
|
|
|
LastViewedY = Reader.ReadInt32();
|
|
|
|
LastViewedY = Reader.ReadInt32();
|
|
|
|
|
|
|
|
|
|
|
|
var paletteNum = Reader.ReadInt32();
|
|
|
|
var paletteSize = Reader.ReadInt32();
|
|
|
|
Palette = new List<Color>();
|
|
|
|
Palette = new List<Color>();
|
|
|
|
for (int i = 0; i < paletteNum; i++)
|
|
|
|
for (int i = 0; i < paletteSize; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Palette.Add(Reader.ReadColor());
|
|
|
|
Palette.Add(Reader.ReadColor());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
StampHandle = Reader.ReadInt32();
|
|
|
|
StampHandle = Reader.ReadInt32();
|
|
|
|
|
|
|
|
|
|
|
|
ActiveLayer = Reader.ReadInt32();
|
|
|
|
ActiveLayer = Reader.ReadInt32();
|
|
|
|
var layersCunt = Reader.ReadInt32();
|
|
|
|
|
|
|
|
|
|
|
|
int layersCount = Reader.ReadInt32();
|
|
|
|
Layers = new List<Layer>();
|
|
|
|
Layers = new List<Layer>();
|
|
|
|
for (int i = 0; i < layersCunt; i++)
|
|
|
|
for (int i = 0; i < layersCount; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var layer = new Layer(Reader);
|
|
|
|
var layer = new Layer(Reader);
|
|
|
|
layer.Read();
|
|
|
|
layer.Read();
|
|
|
|
Layers.Add(layer);
|
|
|
|
Layers.Add(layer);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//fadein
|
|
|
|
//fadein
|
|
|
|
|
|
|
|
if (Reader.ReadByte() != 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//fadeout
|
|
|
|
//fadeout
|
|
|
|
Reader.Skip(2);
|
|
|
|
if (Reader.ReadByte() != 0)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Items = new List<FrameItem>();
|
|
|
|
Items = new List<FrameItem>();
|
|
|
|
var frameitemsCount = Reader.ReadInt32();
|
|
|
|
var frameItemsCount = Reader.ReadInt32();
|
|
|
|
for (int i = 0; i < frameitemsCount; i++)
|
|
|
|
for (int i = 0; i < frameItemsCount; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var frameitem = new FrameItem(Reader);
|
|
|
|
var frameitem = new FrameItem(Reader);
|
|
|
|
frameitem.Read();
|
|
|
|
frameitem.Read();
|
|
|
|
Items.Add(frameitem);
|
|
|
|
Items.Add(frameitem);
|
|
|
|
Console.WriteLine("Frameitem:"+frameitem.Name);
|
|
|
|
Console.WriteLine("Frameitem:" + frameitem.Name);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Folders = new List<ItemFolder>();
|
|
|
|
Folders = new List<ItemFolder>();
|
|
|
|
var folderCount = Reader.ReadInt32();
|
|
|
|
var folderCount = Reader.ReadInt32();
|
|
|
|
for (int i = 0; i < frameitemsCount; i++)
|
|
|
|
for (int i = 0; i < folderCount; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var folder = new ItemFolder(Reader);
|
|
|
|
var folder = new ItemFolder(Reader);
|
|
|
|
folder.Read();
|
|
|
|
folder.Read();
|
|
|
|
Folders.Add(folder);
|
|
|
|
Folders.Add(folder);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Instances = new List<FrameInstance>();
|
|
|
|
Instances = new List<FrameInstance>();
|
|
|
|
var instancesCount = 0;//Reader.ReadInt32();
|
|
|
|
var instancesCount = Reader.ReadInt32();
|
|
|
|
for (int i = 0; i < instancesCount; i++)
|
|
|
|
for (int i = 0; i < instancesCount; i++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var inst = new FrameInstance(Reader);
|
|
|
|
var inst = new FrameInstance(Reader);
|
|
|
|
//inst.Read();
|
|
|
|
inst.Read();
|
|
|
|
Instances.Add(inst);
|
|
|
|
Instances.Add(inst);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Reader.Skip(96);
|
|
|
|
Events = new Events(Reader);
|
|
|
|
Events = new Events(Reader);
|
|
|
|
Events.Read();
|
|
|
|
Events.Read();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|