diff --git a/CTFAK/CTFAK.csproj b/CTFAK/CTFAK.csproj index 9c978b3..6e71e15 100644 --- a/CTFAK/CTFAK.csproj +++ b/CTFAK/CTFAK.csproj @@ -163,8 +163,13 @@ + + + + + diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs new file mode 100644 index 0000000..a3b6e37 --- /dev/null +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Group.cs @@ -0,0 +1,41 @@ +using CTFAK.Utils; + +namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters +{ + public class Group:ParameterCommon + { + public long Offset; + public ushort Flags; + public ushort Id; + public string Name; + public int Password; + + public Group(ByteReader reader) : base(reader) + { + } + + public override void Read() + { + base.Read(); + Offset = Reader.Tell() - 24; + Flags = Reader.ReadUInt16(); + Id = Reader.ReadUInt16(); + Name = Reader.ReadWideString(); + Password = Reader.ReadInt32(); + } + + public override void Write(ByteWriter Writer) + { + base.Write(Writer); + Writer.WriteUInt16(Flags); + Writer.WriteUInt16(Id); + Writer.WriteAscii(Name); + Writer.WriteInt32(Password); + } + + public override string ToString() + { + return $"Group: {Name}"; + } + } +} \ No newline at end of file diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/GroupPointer.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/GroupPointer.cs new file mode 100644 index 0000000..b7dcacc --- /dev/null +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/GroupPointer.cs @@ -0,0 +1,29 @@ +using CTFAK.Utils; + +namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters +{ + public class GroupPointer:ParameterCommon + { + public int Pointer; + public short Id; + + public GroupPointer(ByteReader reader) : base(reader) + { + } + + public override void Read() + { + base.Read(); + Pointer = Reader.ReadInt32(); + Id = Reader.ReadInt16(); + + } + + public override void Write(ByteWriter Writer) + { + base.Write(Writer); + Writer.WriteInt32(Pointer); + Writer.WriteInt32(Id); + } + } +} \ No newline at end of file diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/StringParam.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/StringParam.cs new file mode 100644 index 0000000..059c54b --- /dev/null +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/StringParam.cs @@ -0,0 +1,31 @@ +using CTFAK.Utils; + +namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters +{ + public class StringParam:ParameterCommon + { + public string Value; + + public StringParam(ByteReader reader) : base(reader) + { + + } + + public override void Read() + { + base.Read(); + Value = Reader.ReadAscii(); + } + + public override void Write(ByteWriter Writer) + { + base.Write(Writer); + Writer.WriteAscii(Value); + } + + public override string ToString() + { + return $"String: {Value}"; + } + } +} \ No newline at end of file diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/TwoShorts.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/TwoShorts.cs new file mode 100644 index 0000000..9bd70ca --- /dev/null +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/TwoShorts.cs @@ -0,0 +1,33 @@ +using CTFAK.Utils; + +namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters +{ + public class TwoShorts:ParameterCommon + { + public short Value1; + public short Value2; + + public TwoShorts(ByteReader reader) : base(reader) + { + } + + public override void Read() + { + base.Read(); + Value1 = Reader.ReadInt16(); + Value2 = Reader.ReadInt16(); + } + + public override void Write(ByteWriter Writer) + { + base.Write(Writer); + Writer.WriteInt16(Value1); + Writer.WriteInt16(Value2); + } + + public override string ToString() + { + return $"Shorts: {Value1} and {Value2}"; + } + } +} \ No newline at end of file diff --git a/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Zone.cs b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Zone.cs new file mode 100644 index 0000000..6acef0d --- /dev/null +++ b/CTFAK/MMFParser/EXE/Loaders/Events/Parameters/Zone.cs @@ -0,0 +1,39 @@ +using CTFAK.Utils; + +namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters +{ + public class Zone:ParameterCommon + { + public short X1; + public short Y1; + public short X2; + public short Y2; + + public Zone(ByteReader reader) : base(reader) + { + } + + public override void Read() + { + base.Read(); + X1 = Reader.ReadInt16(); + Y1 = Reader.ReadInt16(); + X2 = Reader.ReadInt16(); + Y2 = Reader.ReadInt16(); + } + + public override void Write(ByteWriter Writer) + { + base.Write(Writer); + Writer.WriteInt16(X1); + Writer.WriteInt16(Y1); + Writer.WriteInt16(X2); + Writer.WriteInt16(Y2); + } + + public override string ToString() + { + return $"Zone ({X1}x{Y1})x({X2}x{Y2})"; + } + } +} \ No newline at end of file diff --git a/CTFAK/Utils/Helper.cs b/CTFAK/Utils/Helper.cs index faafa2b..c784ca2 100644 --- a/CTFAK/Utils/Helper.cs +++ b/CTFAK/Utils/Helper.cs @@ -133,12 +133,51 @@ namespace CTFAK.Utils item = new Create(reader); } + if (code == 13) + { + item = new Every(reader); + } + + if (code == 24) + { + item = new Colour(reader); + } + + if (code == 19) + { + item = new Zone(reader); + } + if (code == 14 || code == 44) { item = new KeyParameter(reader); } - + if (code == 38) + { + item = new CTFAK.MMFParser.EXE.Loaders.Events.Parameters.Group(reader); + } + + if (code == 39) + { + item = new GroupPointer(reader); + } + + if (code == 49) + { + item = new GlobalValue(reader); + } + + if (code == 41 || code == 64) + { + item = new StringParam(reader); + } + + if (code == 47 || code == 51) + { + item = new TwoShorts(reader); + } + if (code == 6 || code == 7 || code == 35 || code == 36) { item = new Sample(reader);