diff --git a/NetMFAPatcher/DotNetCTFDumper.csproj b/NetMFAPatcher/DotNetCTFDumper.csproj
index 8bf9531..d772aa4 100644
--- a/NetMFAPatcher/DotNetCTFDumper.csproj
+++ b/NetMFAPatcher/DotNetCTFDumper.csproj
@@ -190,7 +190,9 @@
+
+
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs b/NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs
index 3256f8b..7ac0cb8 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs
+++ b/NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs
@@ -18,6 +18,11 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public int ObjectInfoList;
public List Items = new List();
public Condition(ByteReader reader) : base(reader) { }
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
@@ -65,6 +70,11 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public int ObjectInfoList;
public List Items = new List();
public Action(ByteReader reader) : base(reader) { }
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print( )
{
throw new NotImplementedException();
@@ -106,6 +116,11 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public Parameter(ByteReader reader) : base(reader) { }
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs b/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs
index 221f7a6..a675546 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs
+++ b/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs
@@ -11,6 +11,11 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Expressions
public int ObjectInfo;
public int ObjectInfoList;
public Expression(ByteReader reader) : base(reader) { }
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs b/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs
index 3154163..0e893c9 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs
+++ b/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs
@@ -9,6 +9,11 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
public ParameterCommon(ByteReader reader) : base(reader) { }
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/MMFParser/Data/DataLoader.cs b/NetMFAPatcher/MMFParser/Data/DataLoader.cs
index 4b78599..36dac3c 100644
--- a/NetMFAPatcher/MMFParser/Data/DataLoader.cs
+++ b/NetMFAPatcher/MMFParser/Data/DataLoader.cs
@@ -20,7 +20,7 @@ namespace DotNetCTFDumper.MMFParser.Data
}
public abstract void Read();
- //public abstract void Write();
+ public abstract void Write(ByteWriter Writer);
public abstract void Print();
diff --git a/NetMFAPatcher/MMFParser/Data/MFA.cs b/NetMFAPatcher/MMFParser/Data/MFA.cs
index adb2566..6dc038c 100644
--- a/NetMFAPatcher/MMFParser/Data/MFA.cs
+++ b/NetMFAPatcher/MMFParser/Data/MFA.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Drawing;
+using System.IO;
using DotNetCTFDumper.MMFParser.ChunkLoaders;
using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
using DotNetCTFDumper.MMFParser.MFALoaders;
@@ -106,6 +107,8 @@ namespace DotNetCTFDumper.MMFParser.Data
public List Frames;
+
+
public override void Print()
{
//Logger.Log($"MFA Product:{product}");
@@ -113,113 +116,67 @@ namespace DotNetCTFDumper.MMFParser.Data
//Logger.Log($"MFA Product:{buildVersion}");
}
- public void Write(ByteWriter writer)
+ public override void Write(ByteWriter Writer)
{
- writer.WriteAscii("MFU2");
- writer.WriteInt32(MfaBuild);
- writer.WriteInt32(Product);
- writer.WriteInt32(BuildVersion);
- writer.WriteInt32(LangId);
- writer.AutoWriteUnicode(Name);
- writer.AutoWriteUnicode(Description);
- writer.AutoWriteUnicode(Path);
-
- writer.WriteUInt32((uint)Stamp.Length);
- writer.WriteBytes(Stamp);
- writer.WriteAscii(FontBankId);
- Fonts.Write(writer);
- writer.WriteAscii(SoundBankId);
- Sounds.Write(writer);
+ Writer.WriteAscii("MFU2");
+ Writer.WriteInt32(MfaBuild);
+ Writer.WriteInt32(Product);
+ Writer.WriteInt32(BuildVersion);
+ Writer.WriteInt32(LangId);
+ Writer.AutoWriteUnicode(Name);
+ Writer.AutoWriteUnicode(Description);
+ Writer.AutoWriteUnicode(Path);
+
+ Writer.WriteUInt32((uint)Stamp.Length);
+ Writer.WriteBytes(Stamp);
+ Writer.WriteAscii(FontBankId);
+ Fonts.Write(Writer);
+ Writer.WriteAscii(SoundBankId);
+ Sounds.Write(Writer);
- writer.WriteAscii(MusicBankId);
- //music.Write();//cum cum cum cum cum cum cum cum
- writer.WriteInt32(0);//someone is using musics lol?
+ Writer.WriteAscii(MusicBankId);
+ //music.Write();
+ Writer.WriteInt32(0);//someone is using musics lol?
//TODO: Do music
- //I am not an asshole lol
- writer.WriteAscii(ImageBankId);
- Icons.Write(writer);
-
- writer.WriteAscii(ImageBankId);
- Images.Write(writer);
- writer.AutoWriteUnicode(Name);
- writer.AutoWriteUnicode(Author);
- writer.AutoWriteUnicode(Description);
- writer.AutoWriteUnicode(Copyright);
- writer.AutoWriteUnicode(Company);
- writer.AutoWriteUnicode(Version);
- writer.WriteInt32(WindowX);
- writer.WriteInt32(WindowY);
- writer.WriteColor(Color.White);
- writer.WriteInt32((int) DisplayFlags.flag);
- writer.WriteInt32((int) GraphicFlags.flag);
- writer.WriteUInt32((uint) InitialScore);
- writer.WriteUInt32((uint) InitialLifes);
- writer.WriteInt32(FrameRate);
- writer.WriteInt32(BuildType);
- writer.AutoWriteUnicode(BuildPath);
- writer.WriteInt32(0);
- writer.AutoWriteUnicode(CommandLine);
- writer.AutoWriteUnicode(Aboutbox);
- writer.WriteInt32(0);//anaconda
- writer.WriteInt32(0);//binary files are not supported because i am lazy asshole
+ Writer.WriteAscii(ImageBankId);
+ Icons.Write(Writer);
- Controls.Write(writer);
+ Writer.WriteAscii(ImageBankId);
+ Images.Write(Writer);
+
- //Menu = null; //TODO:Menu
+ Writer.AutoWriteUnicode(Name);
+ Writer.AutoWriteUnicode(Author);
+ Writer.AutoWriteUnicode(Description);
+ Writer.AutoWriteUnicode(Copyright);
+ Writer.AutoWriteUnicode(Company);
+ Writer.AutoWriteUnicode(Version);
+ Writer.WriteInt32(WindowX);
+ Writer.WriteInt32(WindowY);
+ Writer.WriteColor(Color.White);
+ Writer.WriteInt32((int) DisplayFlags.flag);
+ Writer.WriteInt32((int) GraphicFlags.flag);
+ Writer.WriteUInt32((uint) InitialScore);
+ Writer.WriteUInt32((uint) InitialLifes);
+ Writer.WriteInt32(FrameRate);
+ Writer.WriteInt32(BuildType);
+ Writer.AutoWriteUnicode(BuildPath);
+ Writer.AutoWriteUnicode(CommandLine);
+ Writer.AutoWriteUnicode(Aboutbox);
+ Menu = null; //TODO:Menu
if (Menu != null)
{
byte[] menuData = new byte[1]; //Menu.Generate;
- writer.WriteInt32(menuData.Length);
- writer.WriteBytes(menuData);
+ Writer.WriteInt32(menuData.Length);
+ Writer.WriteBytes(menuData);
}
else
{
- writer.WriteInt32(0);
- }
- return;
- writer.WriteInt32(windowMenuIndex);
- writer.WriteInt32(menuImages.Length);
- foreach (var item in menuImages)
- {
- writer.WriteInt32(item);
- }
-
- GlobalValues.Write(writer);
- GlobalStrings.Write(writer);
- writer.WriteInt32(GlobalEvents.Length);
- writer.WriteBytes(GlobalEvents);
- writer.WriteInt32(GraphicMode);
- writer.WriteInt32(IconImages.Count);
- foreach (var item in IconImages)
- {
- writer.WriteInt32(item);
+ Writer.WriteInt32(0);
}
- //Qualifiers
- writer.WriteInt32(CustomQuals.Count);
- foreach (var item in CustomQuals)
- {
- writer.AutoWriteUnicode(item.Item1);
- writer.WriteInt32(item.Item2);
- }
- //Extensions
-
- foreach (var item in Extensions)
- {
- writer.WriteInt32(item.Item1);
- writer.AutoWriteUnicode(item.Item2);
- writer.AutoWriteUnicode(item.Item3);
- writer.WriteInt32(item.Item4);
- writer.WriteBytes(item.Item5);
-
- }
- writer.WriteInt32(Frames.Count);
- var startPosition = writer.Tell() + 4 * Frames.Count + 4;
- //help
- //how to implement write writer
-
@@ -234,6 +191,9 @@ namespace DotNetCTFDumper.MMFParser.Data
+
+
+
}
public override void Read()
diff --git a/NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs b/NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs
index e4a3a7d..16d9452 100644
--- a/NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs
+++ b/NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs
@@ -6,7 +6,7 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
{
public static class MFAGenerator
{
- public static readonly string TemplatePath = @"C:\Users\ivani\Desktop\CTFResearch\testreader.mfa";
+ public static readonly string TemplatePath = @"C:\Users\ivani\Desktop\CTFResearch\testNoFrames.mfa";
public static void BuildMFA()
{
diff --git a/NetMFAPatcher/MMFParser/mfaloaders/FrameInstance.cs b/NetMFAPatcher/MMFParser/mfaloaders/FrameInstance.cs
new file mode 100644
index 0000000..86b0971
--- /dev/null
+++ b/NetMFAPatcher/MMFParser/mfaloaders/FrameInstance.cs
@@ -0,0 +1,55 @@
+using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.Utils;
+
+namespace DotNetCTFDumper.MMFParser.MFALoaders
+{
+ public class FrameInstance:DataLoader
+ {
+ public int X;
+ public int Y;
+ public uint Layer;
+ public int Handle;
+ public uint Flags;
+ public uint ParentType;
+ public uint ParentHandle;
+ public uint ItemHandle;
+
+ public FrameInstance(ByteReader reader) : base(reader)
+ {
+ }
+
+ public FrameInstance(Data.ChunkList.Chunk chunk) : base(chunk)
+ {
+ }
+
+ public override void Read()
+ {
+ X = Reader.ReadInt32();
+ Y = Reader.ReadInt32();
+ Layer = Reader.ReadUInt32();
+ Handle = Reader.ReadInt32();
+ Flags = Reader.ReadUInt32();
+ ParentType = Reader.ReadUInt32();
+ ItemHandle = Reader.ReadUInt32();
+ ParentHandle = Reader.ReadUInt32();
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ Writer.WriteInt32(X);
+ Writer.WriteInt32(Y);
+ Writer.WriteUInt32(Layer);
+ Writer.WriteInt32(Handle);
+ Writer.WriteUInt32(Flags);
+ Writer.WriteUInt32(ParentType);
+ Writer.WriteUInt32(ItemHandle);
+ Writer.WriteUInt32(ParentHandle);
+
+ }
+
+ public override void Print()
+ {
+ throw new System.NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/mfaloaders/ItemFolder.cs b/NetMFAPatcher/MMFParser/mfaloaders/ItemFolder.cs
new file mode 100644
index 0000000..859a787
--- /dev/null
+++ b/NetMFAPatcher/MMFParser/mfaloaders/ItemFolder.cs
@@ -0,0 +1,66 @@
+using System.Collections.Generic;
+using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.Utils;
+
+namespace DotNetCTFDumper.MMFParser.MFALoaders
+{
+ public class ItemFolder:DataLoader
+ {
+ public List Items;
+ public string Name;
+
+ public ItemFolder(ByteReader reader) : base(reader)
+ {
+ }
+
+ public ItemFolder(Data.ChunkList.Chunk chunk) : base(chunk)
+ {
+ }
+
+ public override void Read()
+ {
+ var value = Reader.ReadUInt32();
+ if (value == 0x70000004)
+ {
+ Name = Helper.AutoReadUnicode(Reader);
+ Items = new List();
+ var count = Reader.ReadUInt32();
+ for (int i = 0; i < count; i++)
+ {
+ Items.Add(Reader.ReadUInt32());
+ }
+ }
+ else
+ {
+ Name = "";
+ Items = new List();
+ }
+
+
+ }
+
+ public override void Write(ByteWriter Writer)
+ {
+ if (Name.Length == 0)
+ {
+ Writer.WriteUInt32(0x70000005);
+ }
+ else
+ {
+ Writer.WriteUInt32(0x70000004);
+ Writer.AutoWriteUnicode(Name);
+ Writer.WriteInt32(Items.Count);
+ }
+
+ foreach (var item in Items)
+ {
+ Writer.WriteUInt32(item);
+ }
+ }
+
+ public override void Print()
+ {
+ throw new System.NotImplementedException();
+ }
+ }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/Utils/ByteWriter.cs b/NetMFAPatcher/Utils/ByteWriter.cs
index 736ae80..3f27d38 100644
--- a/NetMFAPatcher/Utils/ByteWriter.cs
+++ b/NetMFAPatcher/Utils/ByteWriter.cs
@@ -65,7 +65,7 @@ namespace DotNetCTFDumper.Utils
public void WriteUInt16(ushort value) => Write(value);
public void WriteUInt32(uint value) => Write(value);
public void WriteUInt64(ulong value) => Write(value);
-
+ public void WriteSingle(float value) => Write(value);
public void WriteBytes(byte[] value) => Write(value);
diff --git a/NetMFAPatcher/Utils/Helper.cs b/NetMFAPatcher/Utils/Helper.cs
index b680185..f1c52d3 100644
--- a/NetMFAPatcher/Utils/Helper.cs
+++ b/NetMFAPatcher/Utils/Helper.cs
@@ -63,10 +63,11 @@ namespace DotNetCTFDumper.Utils
public static void AutoWriteUnicode(this ByteWriter writer, string value)
{
writer.WriteInt16((short) value.Length);
- writer.Skip(2);
+ writer.Skip(1);
+ writer.WriteInt8(0x80);
writer.WriteUnicode(value);
}
-
+
public static DataLoader LoadParameter(int code, ByteReader reader)
{
DataLoader item = null;
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs b/NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs
index 613cf15..63ed89f 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs
+++ b/NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs
@@ -47,7 +47,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
}
public override void Read()
{
- Reader.Seek(0); //Reset the reader to avoid bugs when dumping more than once
+ if (!Settings.DoMFA)Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
Images = new Dictionary();
@@ -300,7 +300,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
chunk.WriteInt16((short) ActionY);
chunk.WriteBytes(_transparent);
- chunk.WriteBytes(rawImg);
+ chunk.WriteBytes(_colorArray);
if(Flags["Alpha"])chunk.WriteBytes(rawAlpha);
writer.WriteInt32(Handle);
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs b/NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs
index 1ea6efe..5745d36 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs
+++ b/NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs
@@ -35,7 +35,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
{
//Someone is using this lol?
//Actually,yes
- Reader.Seek(0);
+ if (!Settings.DoMFA)Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
Items = new List();
NumOfItems = Reader.ReadInt32();
if (!Settings.DumpMusic) return;
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs b/NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs
index 1f40731..0b1e892 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs
+++ b/NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs
@@ -37,8 +37,11 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
public override void Read()
{
//Implementing for standalone-only because of my lazyness
+ if (!Settings.DoMFA)Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
+
+
+
- Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
Items = new List();
NumOfItems = Reader.ReadInt32();
Logger.Log("Found " + NumOfItems + " sounds");
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs b/NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs
index 14762cc..be7516b 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs
@@ -8,6 +8,12 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
class ChunkList : DataLoader//This is used for MFA reading/writing
{
List _items = new List();
+
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
@@ -20,7 +26,8 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
{
var id = Reader.ReadByte();
if(id==0) break;
- Console.WriteLine("ChunkFound:"+id);
+ var data = new ByteReader(Reader.ReadBytes((int) Reader.ReadUInt32()));
+
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Controls.cs b/NetMFAPatcher/mmfparser/mfaloaders/Controls.cs
index 9c31a5f..de3e1b6 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/Controls.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/Controls.cs
@@ -31,7 +31,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
}
}
- public void Write(ByteWriter writer)
+ public override void Write(ByteWriter writer)
{
writer.WriteInt32(Items.Count);
foreach (var item in Items)
@@ -85,7 +85,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
}
}
- public void Write(ByteWriter writer)
+ public override void Write(ByteWriter writer)
{
writer.WriteInt32(ControlType);
writer.WriteUInt32(16);
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs b/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs
index f458288..49967d5 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs
@@ -13,12 +13,70 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
public int SizeY;
public Color Background;
public int MaxObjects;
+ public List Items;
+ public int Handle;
+ public int LastViewedX;
+ public int LastViewedY;
+ public List Folders;
+ public List Instances;
+ public uint Flags;
+ public string Password;
+ public List Palette;
+ public int StampHandle;
+ public int ActiveLayer;
+ public List Layers;
public Frame(ByteReader reader) : base(reader)
{
}
+ public override void Write(ByteWriter Writer)
+ {
+ Writer.WriteInt32(Handle);
+ Writer.AutoWriteUnicode(Name);
+ Writer.WriteInt32(SizeX);
+ Writer.WriteInt32(SizeY);
+ Writer.WriteColor(Background);
+ Writer.WriteUInt32(Flags);
+ Writer.WriteInt32(MaxObjects);
+ Writer.AutoWriteUnicode(Password);
+ Writer.WriteInt32(0);
+ Writer.WriteInt32(LastViewedX);
+ Writer.WriteInt32(LastViewedY);
+ Writer.WriteInt32(Palette.Count);
+ foreach (var item in Palette)
+ {
+ Writer.WriteColor(item);
+ }
+ Writer.WriteInt32(StampHandle);
+ Writer.WriteInt32(ActiveLayer);
+ Writer.WriteInt32(Layers.Count);
+ foreach (var layer in Layers)
+ {
+ layer.Write(Writer);
+ }
+ //TODO: Do transitions
+ Writer.WriteInt8(0);
+ foreach (var item in Items)
+ {
+ item.Write(Writer);
+ }
+ foreach (var item in Folders)
+ {
+ item.Write(Writer);
+ }
+ foreach (var item in Instances)
+ {
+ item.Write(Writer);
+ }
+
+
+
+
+
+ }
+
public override void Print()
{
throw new NotImplementedException();
@@ -26,63 +84,68 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
public override void Read()
{
- var handle = Reader.ReadInt32();
+ Handle = Reader.ReadInt32();
Name = Helper.AutoReadUnicode(Reader);
Console.WriteLine(Name);
SizeX = Reader.ReadInt32();
SizeY = Reader.ReadInt32();
- var background = Reader.ReadColor();
- var flags = Reader.ReadInt32();
+ Background = Reader.ReadColor();
+ Flags = Reader.ReadUInt32();
MaxObjects = Reader.ReadInt32();
- var password = Helper.AutoReadUnicode(Reader);
+ Password = Helper.AutoReadUnicode(Reader);
Reader.Skip(4);
- var lastViewedX = Reader.ReadInt32();
- var lastViewedY = Reader.ReadInt32();
+ LastViewedX = Reader.ReadInt32();
+ LastViewedY = Reader.ReadInt32();
var paletteNum = Reader.ReadInt32();
- List palette = new List();
+ Palette = new List();
for (int i = 0; i < paletteNum; i++)
{
- palette.Add(Reader.ReadColor());
+ Palette.Add(Reader.ReadColor());
}
- var stampHandle = Reader.ReadInt32();
- var activeLayer = Reader.ReadInt32();
+ StampHandle = Reader.ReadInt32();
+ ActiveLayer = Reader.ReadInt32();
var layersCunt = Reader.ReadInt32();
- var layers = new List();
+ Layers = new List();
for (int i = 0; i < layersCunt; i++)
{
var layer = new Layer(Reader);
layer.Read();
- layers.Add(layer);
+ Layers.Add(layer);
}
//fadein
//fadeout
Reader.Skip(2);
- var frameitems = new List();
+ Items = new List();
var frameitemsCount = Reader.ReadInt32();
-
for (int i = 0; i < frameitemsCount; i++)
{
var frameitem = new FrameItem(Reader);
frameitem.Read();
- frameitems.Add(frameitem);
+ Items.Add(frameitem);
Console.WriteLine("Frameitem:"+frameitem.Name);
- //break;
-
}
-
-
-
- //ПРОЧИТАЙ ЭТО
- //вжух и весь код для фрейма готов
- //блин не сработало
- //я задолбался, завтра доделаю
- //короче я из будущего, тут надо с циклами аккуратно работать, надо создавать переменную для размера
- //тип var frameCount = reader.ReadInt32();
- //for(int i=0;i();
+ var folderCount = Reader.ReadInt32();
+ for (int i = 0; i < frameitemsCount; i++)
+ {
+ var folder = new ItemFolder(Reader);
+ folder.Read();
+ Folders.Add(folder);
+ }
+
+ Instances = new List();
+ var instancesCount = 0;//Reader.ReadInt32();
+ for (int i = 0; i < instancesCount; i++)
+ {
+ var inst = new FrameInstance(Reader);
+ //inst.Read();
+ Instances.Add(inst);
+ }
+
@@ -90,10 +153,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
}
- public void Write(ByteWriter Writer)
- {
-
- }
+
}
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs b/NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs
index 42ed650..6872ed4 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs
@@ -10,13 +10,25 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
public int ObjectType;
public int Handle;
public string Name;
- public bool Transparent;
+ public int Transparent;
public int InkEffect;
public int InkEffectParameter;
public int AntiAliasing;
public int Flags;
public int IconType;
+ public override void Write(ByteWriter Writer)
+ {
+ Writer.WriteInt32(this.ObjectType);
+ Writer.WriteInt32(Handle);
+ Writer.AutoWriteUnicode(Name);
+ Writer.WriteInt32(Transparent);
+ Writer.WriteInt32(InkEffect);
+ Writer.WriteInt32(InkEffectParameter);
+
+
+ }
+
public override void Print()
{
Console.WriteLine($"Name: {Name}");
@@ -27,7 +39,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
ObjectType = Reader.ReadInt32();
Handle = Reader.ReadInt32();
Name = Helper.AutoReadUnicode(Reader);
- var transparent1 = Reader.ReadInt32();
+ Transparent = Reader.ReadInt32();
InkEffect = Reader.ReadInt32();
InkEffectParameter = Reader.ReadInt32();
@@ -47,18 +59,15 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
chunks.Read();
if(ObjectType>=32)//extension base
{
- //swallow some cum
+ //TODO: Nonactives
}
else
{
-
var loader = new Active(Reader);
loader.Read();
-
-
}
- Print();
+
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs b/NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs
index ee72ecb..5deffaf 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs
@@ -46,7 +46,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
var item = new ImageItem(Reader);
item.Debug = true;
item.Read();
- item.Save($"{Settings.ImagePath}\\{i}.png");
+ //item.Save($"{Settings.ImagePath}\\{i}.png");
Items.Add(item.Handle,item);
}
@@ -55,7 +55,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
- public void Write(ByteWriter writer)
+ public override void Write(ByteWriter writer)
{
writer.WriteInt32(GraphicMode);
writer.WriteInt16((short) PaletteVersion);
@@ -64,10 +64,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
{
writer.WriteColor(Palette[i]);
}
- writer.WriteInt32(Items.Count);
+
+ writer.WriteInt32(0);//(Items.Count);
foreach (var key in Items.Keys)
{
- Items[key].Write(writer);
+ //Items[key].Write(writer);
}
}
public AgmiBank(ByteReader reader) : base(reader)
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Layer.cs b/NetMFAPatcher/mmfparser/mfaloaders/Layer.cs
index d1db328..cc6bee3 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/Layer.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/Layer.cs
@@ -4,7 +4,7 @@ using DotNetCTFDumper.Utils;
namespace DotNetCTFDumper.MMFParser.MFALoaders
{
- class Layer : DataLoader
+ public class Layer : DataLoader
{
public string Name="ERROR";
public float XCoefficient;
@@ -12,6 +12,14 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
public int Flags;
+ public override void Write(ByteWriter Writer)
+ {
+ Helper.AutoWriteUnicode(Writer,Name);
+ Writer.WriteInt32(Flags);
+ Writer.WriteSingle(XCoefficient);
+ Writer.WriteSingle(YCoefficient);
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs b/NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs
index ef8ad4a..497c40f 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs
@@ -29,7 +29,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
}
}
- public void Write(ByteWriter Writer)
+ public override void Write(ByteWriter Writer)
{
Writer.WriteInt32(Items.Count);
foreach (var item in Items)
@@ -72,7 +72,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
}
}
- public void Write(ByteWriter Writer)
+ public override void Write(ByteWriter Writer)
{
Writer.AutoWriteUnicode(Name);
if (Value is string)
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs
index 822ba14..d8b47d8 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs
@@ -29,6 +29,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
class Animation : DataLoader
{
public string Name = "Animation-UNKNOWN";
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
Logger.Log($" Found animation: {Name} ");
@@ -54,6 +59,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
class AnimationDirection : DataLoader
{
public string Name = "Animation-UNKNOWN";
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs
index 1b0cefc..65a19b2 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs
@@ -8,6 +8,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
class Behaviours : DataLoader
{
List _items = new List();
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
@@ -29,6 +34,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
{
public string Name = "ERROR";
public ByteReader Data;
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs
index 5a5110d..8fcf5e9 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs
@@ -8,6 +8,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
class Movements : DataLoader
{
public List Items = new List();
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
@@ -32,6 +37,11 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
{
public string Name="ERROR";
+ public override void Write(ByteWriter Writer)
+ {
+ throw new NotImplementedException();
+ }
+
public override void Print()
{
throw new NotImplementedException();
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs
index 0c22e8f..8960aca 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs
+++ b/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs
@@ -15,7 +15,12 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
public ValueList Strings;
public Movements Movements;
public Behaviours Behaviours;
-
+
+ public override void Write(ByteWriter Writer)
+ {
+ throw new System.NotImplementedException();
+ }
+
public override void Print()
{
Logger.Log("Object Loader: ");