Fixes for MFA event parser

master
1987kostya 4 years ago
parent 2cd7175b6e
commit 876ee58a29

@ -19,6 +19,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
public List<Quailifer> QualifiersList = new List<Quailifer>(); public List<Quailifer> QualifiersList = new List<Quailifer>();
public Quailifer[] Quailifers; public Quailifer[] Quailifers;
public List<int> NumberOfConditions = new List<int>(); public List<int> NumberOfConditions = new List<int>();
public List<EventGroup> Items = new List<EventGroup>();
public Events(Chunk chunk) : base(chunk) public Events(Chunk chunk) : base(chunk)
@ -71,6 +72,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
{ {
var eg = new EventGroup(Reader); var eg = new EventGroup(Reader);
eg.Read(); eg.Read();
Items.Add(eg);
if (Reader.Tell() >= endPosition) break; if (Reader.Tell() >= endPosition) break;
} }
@ -80,7 +82,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
} }
} }
public class Quailifer : ChunkLoader public class Quailifer : DataLoader
{ {
public int ObjectInfo; public int ObjectInfo;
public int Type; public int Type;
@ -95,15 +97,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
{ {
} }
public override void Print(bool ext)
{
throw new NotImplementedException();
}
public override string[] GetReadableData()
{
throw new NotImplementedException();
}
public override void Read() public override void Read()
{ {
@ -111,6 +105,17 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
Type = Reader.ReadInt16(); Type = Reader.ReadInt16();
Qualifier = this; Qualifier = this;
} }
public override void Write(ByteWriter Writer)
{
Writer.WriteUInt16((ushort) ObjectInfo);
Writer.WriteInt16((short) Type);
}
public override void Print()
{
throw new NotImplementedException();
}
} }
@ -197,7 +202,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
public void Write(ByteWriter Writer) public void Write(ByteWriter Writer)
{ {
ByteWriter newWriter = new ByteWriter(new MemoryStream()); ByteWriter newWriter = new ByteWriter(new MemoryStream());
newWriter.WriteInt8( NumberOfConditions); newWriter.WriteInt8(NumberOfConditions);
newWriter.WriteInt8(NumberOfActions); newWriter.WriteInt8(NumberOfActions);
newWriter.WriteUInt16(Flags); newWriter.WriteUInt16(Flags);
if (Settings.Build >= 284) if (Settings.Build >= 284)
@ -223,15 +228,18 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
newWriter.WriteInt16((short) Identifier); newWriter.WriteInt16((short) Identifier);
newWriter.WriteInt16((short) Undo); newWriter.WriteInt16((short) Undo);
} }
foreach (Condition condition in Conditions) foreach (Condition condition in Conditions)
{ {
condition.Write(newWriter); condition.Write(newWriter);
} }
foreach (Action action in Actions) foreach (Action action in Actions)
{ {
action.Write(newWriter); action.Write(newWriter);
} }
Writer.WriteInt16((short) ((newWriter.Size()+2)*-1)); Writer.WriteInt16((short) ((newWriter.Size()+2)*-1));
Writer.WriteWriter(newWriter); Writer.WriteWriter(newWriter);

@ -107,7 +107,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
{ {
parameter.Write(newWriter); parameter.Write(newWriter);
} }
Writer.WriteInt16((short) (newWriter.BaseStream.Position+2)); Writer.WriteUInt16((ushort) (newWriter.BaseStream.Position+2));
Writer.WriteWriter(newWriter); Writer.WriteWriter(newWriter);
} }
@ -156,7 +156,13 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
throw new NotImplementedException(); var newWriter = new ByteWriter(new MemoryStream());
newWriter.WriteInt16((short) Code);
Loader.Write(newWriter);
Writer.WriteUInt16((ushort) (newWriter.BaseStream.Position+2));
Writer.WriteWriter(newWriter);
} }
public override void Print() public override void Print()
@ -180,7 +186,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events
} }
else else
{ {
//throw new Exception("Loader is null"); throw new Exception("Loader is null");
} }
Reader.Seek(currentPosition+size); Reader.Seek(currentPosition+size);

@ -1,4 +1,5 @@
using System; using System;
using System.IO;
using System.Windows.Forms.VisualStyles; using System.Windows.Forms.VisualStyles;
using CTFAK.Utils; using CTFAK.Utils;
@ -15,7 +16,62 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
public Expression(ByteReader reader) : base(reader) { } public Expression(ByteReader reader) : base(reader) { }
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
throw new NotImplementedException(); Writer.WriteInt16((short) ObjectType);
Writer.WriteInt16((short) Num);
if (ObjectType == 0 && Num == 0) return;
var dataWriter = new ByteWriter(new MemoryStream());
switch (ObjectType)
{
case Constants.ObjectType.System:
switch (Num)
{
//Long
case 0:
{
dataWriter.WriteInt32((int) value);
break;
}
//String
case 3:
{
dataWriter.WriteUnicode(((string) value),true);
break;
}
//Double
case 23:
{
dataWriter.WriteSingle((float) value);
dataWriter.WriteSingle((float) value);
break;
}
//GlobalString
case 24:
break;
//GlobalValue
case 50:
break;
default:
{
if ((int)ObjectType >= 2 || (int)ObjectType == 7)
{
dataWriter.WriteInt16((short) ObjectInfo);
dataWriter.WriteInt16((short) ObjectInfoList);
// if self.num in extensionLoaders:
// loader = extensionLoaders[self.num]
// self.loader = self.new(loader, reader)
}
break;
}
}
break;
}
Writer.WriteInt16((short) (dataWriter.Size()+6));
Writer.WriteWriter(dataWriter);
} }
public override void Print() public override void Print()

@ -12,7 +12,6 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
{ {
var bytes = Reader.ReadBytes(4); var bytes = Reader.ReadBytes(4);
Value = Color.FromArgb(bytes[0], bytes[1], bytes[2]); Value = Color.FromArgb(bytes[0], bytes[1], bytes[2]);
} }
} }

@ -15,9 +15,17 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
Position.Read(); Position.Read();
ObjectInstances = Reader.ReadUInt16(); ObjectInstances = Reader.ReadUInt16();
ObjectInfo = Reader.ReadUInt16(); ObjectInfo = Reader.ReadUInt16();
// Reader.Skip(4);
}
public override void Write(ByteWriter Writer)
{
Position.Write(Writer);
Writer.WriteUInt16((ushort) ObjectInstances);
Writer.WriteUInt16((ushort) ObjectInfo);
// Writer.Skip(4);
} }
public override string ToString() public override string ToString()
{ {
return $"Create obj instance:{ObjectInstances} info:{ObjectInfo} pos:({Position.ToString()})"; return $"Create obj instance:{ObjectInstances} info:{ObjectInfo} pos:({Position.ToString()})";

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.CompilerServices;
using CTFAK.MMFParser.EXE.Loaders.Events.Expressions; using CTFAK.MMFParser.EXE.Loaders.Events.Expressions;
using CTFAK.Utils; using CTFAK.Utils;
@ -7,6 +8,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public class ExpressionParameter:ParameterCommon public class ExpressionParameter:ParameterCommon
{ {
public List<Expression> Items; public List<Expression> Items;
public short Comparsion;
public ExpressionParameter(ByteReader reader) : base(reader) public ExpressionParameter(ByteReader reader) : base(reader)
{ {
@ -15,14 +17,15 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Read() public override void Read()
{ {
base.Read(); base.Read();
var comparsion = Reader.ReadInt16(); Comparsion = Reader.ReadInt16();
Items = new List<Expression>(); Items = new List<Expression>();
while (true) while (true)
{ {
var expression = new Expression(Reader); var expression = new Expression(Reader);
expression.Read(); expression.Read();
if (expression.ObjectType == 0) break;
Items.Add(expression); Items.Add(expression);
if (expression.ObjectType == 0) break;
} }
} }
@ -30,6 +33,13 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
base.Write(Writer); base.Write(Writer);
Writer.WriteInt16(Comparsion);
foreach (Expression item in Items)
{
item.Write(Writer);
}
} }
public override string ToString() public override string ToString()

@ -10,7 +10,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public ParameterCommon(ByteReader reader) : base(reader) { } public ParameterCommon(ByteReader reader) : base(reader) { }
public override void Write(ByteWriter Writer) public override void Write(ByteWriter Writer)
{ {
throw new NotImplementedException();
} }
public override void Print() public override void Print()

@ -5,7 +5,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
public class Position : ParameterCommon public class Position : ParameterCommon
{ {
public int ObjectInfoParent; public int ObjectInfoParent;
public int Flags; public ushort Flags;
public int X; public int X;
public int Y; public int Y;
public int Slope; public int Slope;
@ -28,9 +28,22 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Parameters
TypeParent = Reader.ReadInt16(); TypeParent = Reader.ReadInt16();
ObjectInfoList = Reader.ReadInt16(); ObjectInfoList = Reader.ReadInt16();
Layer = Reader.ReadInt16(); Layer = Reader.ReadInt16();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt16((short) ObjectInfoParent);
Writer.WriteUInt16(Flags);
Writer.WriteInt16((short) X);
Writer.WriteInt16((short) Y);
Writer.WriteInt16((short) Slope);
Writer.WriteInt16((short) Angle);
Writer.WriteSingle(Direction);
Writer.WriteInt16((short) TypeParent);
Writer.WriteInt16((short) ObjectInfoList);
Writer.WriteInt16((short) Layer);
} }
public override string ToString() public override string ToString()
{ {
return $"Object X:{X} Y:{Y} Angle:{Angle} Direction:{Direction} Parent:{ObjectInfoList}"; return $"Object X:{X} Y:{Y} Angle:{Angle} Direction:{Direction} Parent:{ObjectInfoList}";

@ -9,15 +9,15 @@ namespace CTFAK.MMFParser.MFA.Loaders
{ {
public class Events:DataLoader public class Events:DataLoader
{ {
public readonly string EventData = "Evts"; public const string EventData = "Evts";
public readonly string CommentData = "Rems"; public const string CommentData = "Rems";
public readonly string ObjectData = "EvOb"; public const string ObjectData = "EvOb";
public readonly string EventEditorData = "EvCs"; public const string EventEditorData = "EvCs";
public readonly string ObjectListData = "EvEd"; public const string ObjectListData = "EvEd";
public readonly string TimeListData = "EvEd"; public const string TimeListData = "EvEd";
public readonly string EditorPositionData = "EvTs"; public const string EditorPositionData = "EvTs";
public readonly string EditorLineData = "EvLs"; public const string EditorLineData = "EvLs";
public readonly string EventEnd ="!DNE"; public const string EventEnd ="!DNE";
public List<EventGroup> Items; public List<EventGroup> Items;
public ushort Version; public ushort Version;
public ushort FrameType; public ushort FrameType;
@ -188,23 +188,27 @@ namespace CTFAK.MMFParser.MFA.Loaders
Writer.WriteUInt16(Version); Writer.WriteUInt16(Version);
Writer.WriteUInt16(FrameType); Writer.WriteUInt16(FrameType);
if (Items.Count>0) if (Items.Count>0)
{ {
Console.WriteLine("Writing EventData"); Console.WriteLine("Writing EventData");
Writer.WriteAscii(EventData); Writer.WriteAscii(EventData);
ByteWriter newWriter = new ByteWriter(new MemoryStream()); ByteWriter newWriter = new ByteWriter(new MemoryStream());
Writer.WriteUInt32(EventDataLen); //Writer.WriteUInt32(EventDataLen);
foreach (EventGroup eventGroup in Items) foreach (EventGroup eventGroup in Items)
{ {
eventGroup.isMFA = true;
eventGroup.Write(newWriter); eventGroup.Write(newWriter);
} }
Writer.WriteUInt32((uint) newWriter.BaseStream.Position);
Writer.WriteWriter(newWriter); Writer.WriteWriter(newWriter);
} }
if (Objects.Count>0) if (Objects.Count>0)
{ {
Console.WriteLine("Writing EventObjects"); Console.WriteLine("Writing EventObjects");
@ -215,7 +219,6 @@ namespace CTFAK.MMFParser.MFA.Loaders
eventObject.Write(Writer); eventObject.Write(Writer);
} }
} }
if (ObjectTypes != null) if (ObjectTypes != null)
{ {
Writer.WriteAscii(ObjectListData); Writer.WriteAscii(ObjectListData);
@ -243,7 +246,11 @@ namespace CTFAK.MMFParser.MFA.Loaders
} }
} }
//if (X != 0)
// if (X != 0)
{ {
Writer.WriteAscii(EditorPositionData); Writer.WriteAscii(EditorPositionData);
Writer.WriteInt16(1); Writer.WriteInt16(1);
@ -253,7 +260,7 @@ namespace CTFAK.MMFParser.MFA.Loaders
Writer.WriteUInt32(CaretX); Writer.WriteUInt32(CaretX);
Writer.WriteUInt32(CaretY); Writer.WriteUInt32(CaretY);
} }
//if (LineY != 0) // if (LineY != 0)
{ {
Writer.WriteAscii(EditorLineData); Writer.WriteAscii(EditorLineData);
Writer.WriteInt16(1); Writer.WriteInt16(1);
@ -263,6 +270,7 @@ namespace CTFAK.MMFParser.MFA.Loaders
Writer.WriteUInt32(EventLineY); Writer.WriteUInt32(EventLineY);
} }
Writer.WriteAscii(EventEditorData); Writer.WriteAscii(EventEditorData);
// Writer.Skip(4+2*2+4*3);
Writer.WriteInt32(EditorDataUnk); Writer.WriteInt32(EditorDataUnk);
Writer.WriteInt16((short) ConditionWidth); Writer.WriteInt16((short) ConditionWidth);
Writer.WriteInt16((short) ObjectHeight); Writer.WriteInt16((short) ObjectHeight);
@ -393,12 +401,12 @@ namespace CTFAK.MMFParser.MFA.Loaders
} }
else if (ObjectType == 2) else if (ObjectType == 2)
{ {
Code = "OIC2"; // Code = "OIC2";
Writer.WriteAscii(Code); Writer.WriteAscii(Code);
// if (Code == "OIC2") if (Code == "OIC2")
// { {
// Writer.AutoWriteUnicode(IconBuffer); Writer.AutoWriteUnicode(IconBuffer);
// } }
} }
if (ObjectType == 3) if (ObjectType == 3)
{ {

@ -65,8 +65,8 @@ namespace CTFAK.MMFParser.MFA.Loaders
Writer.AutoWriteUnicode(UnkString); Writer.AutoWriteUnicode(UnkString);
Writer.WriteInt32(LastViewedX); Writer.WriteInt32(LastViewedX);
Writer.WriteInt32(LastViewedY); Writer.WriteInt32(LastViewedY);
//Writer.WriteInt32(Palette.Count);//WTF HELP // Writer.WriteInt32(Palette.Count);//WTF HELP
Palette[0] = Color.FromArgb(0, 0, 1, 0);
foreach (var item in Palette) foreach (var item in Palette)
{ {
Writer.WriteColor(item); Writer.WriteColor(item);

@ -237,12 +237,13 @@ namespace CTFAK.MMFParser.MFA
foreach(var extension in Extensions) foreach(var extension in Extensions)
{ {
Writer.WriteInt32(extension.Item1); Writer.WriteInt32(extension.Item1);
Writer.AutoWriteUnicode(extension.Item2);
Writer.AutoWriteUnicode(extension.Item3); Writer.AutoWriteUnicode(extension.Item3);
Writer.AutoWriteUnicode(extension.Item2);
Writer.WriteInt32(extension.Item4); Writer.WriteInt32(extension.Item4);
Writer.WriteInt16((short) (extension.Item5.Length-1)); Writer.WriteInt16((short) (extension.Item5.Length-1));
Writer.Skip(1); Writer.Skip(1);
Writer.WriteInt8(0x80); Writer.WriteInt8(0x80);
//Writer.WriteInt8(0x01);
Writer.Skip(2); Writer.Skip(2);
Writer.WriteUnicode(extension.Item5, false); Writer.WriteUnicode(extension.Item5, false);
@ -384,8 +385,8 @@ namespace CTFAK.MMFParser.MFA
for (int i = 0; i < extCount; i++) //extensions for (int i = 0; i < extCount; i++) //extensions
{ {
var handle = Reader.ReadInt32(); var handle = Reader.ReadInt32();
var filename = Helper.AutoReadUnicode(Reader);
var name = Helper.AutoReadUnicode(Reader); var name = Helper.AutoReadUnicode(Reader);
var filename = Helper.AutoReadUnicode(Reader);
var magic = Reader.ReadInt32(); var magic = Reader.ReadInt32();
var subType = Reader.ReadWideString(Reader.ReadInt32()); var subType = Reader.ReadWideString(Reader.ReadInt32());
var tuple = new Tuple<int, string, string, int, string>(handle, filename, name, magic, subType); var tuple = new Tuple<int, string, string, int, string>(handle, filename, name, magic, subType);

@ -4,6 +4,7 @@ using System.Drawing;
using System.Linq; using System.Linq;
using CTFAK.MMFParser.EXE; using CTFAK.MMFParser.EXE;
using CTFAK.MMFParser.EXE.Loaders; using CTFAK.MMFParser.EXE.Loaders;
using CTFAK.MMFParser.EXE.Loaders.Events;
using CTFAK.MMFParser.EXE.Loaders.Objects; using CTFAK.MMFParser.EXE.Loaders.Objects;
using CTFAK.MMFParser.MFA.Loaders; using CTFAK.MMFParser.MFA.Loaders;
using CTFAK.MMFParser.MFA.Loaders.mfachunks; using CTFAK.MMFParser.MFA.Loaders.mfachunks;
@ -119,7 +120,7 @@ namespace CTFAK.MMFParser.Translation
var newObject = new ObjectLoader(null); var newObject = new ObjectLoader(null);
newObject.ObjectFlags = (int) (itemLoader?.Flags?.flag ?? 820); newObject.ObjectFlags = (int) (itemLoader?.Flags?.flag ?? 820);
newObject.NewObjectFlags =(int) (itemLoader?.NewFlags?.flag ?? 8); newObject.NewObjectFlags =(int) (itemLoader?.NewFlags?.flag ?? 8);
newObject.BackgroundColor = Color.FromArgb(0x0, 0xff, 0xff, 0xff); newObject.BackgroundColor = Color.Black;//itemLoader.BackColor;
//newLoader.Qualifiers; //newLoader.Qualifiers;
newObject.Strings = ConvertStrings(itemLoader.Strings); newObject.Strings = ConvertStrings(itemLoader.Strings);
newObject.Values = ConvertValue(itemLoader.Values); newObject.Values = ConvertValue(itemLoader.Values);
@ -130,7 +131,8 @@ namespace CTFAK.MMFParser.Translation
var newMov = new Movement(null); var newMov = new Movement(null);
newMov.Name = $"Movement #{j}"; newMov.Name = $"Movement #{j}";
newMov.Extension = ""; newMov.Extension = "";
newMov.Identifier = (uint) mov.Type; newMov.Identifier = 0;//(uint) mov.Type;
if(newMov.Identifier!=0)throw new Exception("Unknown Movement: "+newMov.Identifier);
newMov.Player = mov.Player; newMov.Player = mov.Player;
newMov.MovingAtStart = mov.MovingAtStart; newMov.MovingAtStart = mov.MovingAtStart;
newMov.DirectionAtStart = mov.DirectionAtStart; newMov.DirectionAtStart = mov.DirectionAtStart;
@ -352,7 +354,6 @@ namespace CTFAK.MMFParser.Translation
{ {
var newLayer = new Layer(null); var newLayer = new Layer(null);
newLayer.Name = layer.Name; newLayer.Name = layer.Name;
var layerFlags = layer.Flags;
newLayer.Flags["HideAtStart"] = originalFlags["ToHide"]; newLayer.Flags["HideAtStart"] = originalFlags["ToHide"];
newLayer.Flags["Visible"] = true; newLayer.Flags["Visible"] = true;
newLayer.Flags["NoBackground"] = originalFlags["DoNotSaveBackground"]; newLayer.Flags["NoBackground"] = originalFlags["DoNotSaveBackground"];
@ -361,6 +362,8 @@ namespace CTFAK.MMFParser.Translation
newLayer.XCoefficient = layer.XCoeff; newLayer.XCoefficient = layer.XCoeff;
newLayer.YCoefficient = layer.YCoeff; newLayer.YCoefficient = layer.YCoeff;
newFrame.Layers.Add(newLayer); newFrame.Layers.Add(newLayer);
if(frame.Layers.Items.IndexOf(layer)==1)break;
} }
Message("Translating frame: " + newFrame.Name); Message("Translating frame: " + newFrame.Name);
@ -378,8 +381,6 @@ namespace CTFAK.MMFParser.Translation
if (FrameItems.ContainsKey(instance.ObjectInfo)) if (FrameItems.ContainsKey(instance.ObjectInfo))
{ {
frameItem = FrameItems[instance.ObjectInfo]; frameItem = FrameItems[instance.ObjectInfo];
// if (frameItem.ObjectType >= 32) break;
if(!newFrameItems.Contains(frameItem)) newFrameItems.Add(frameItem); if(!newFrameItems.Contains(frameItem)) newFrameItems.Add(frameItem);
var newInstance = new FrameInstance((ByteReader) null); var newInstance = new FrameInstance((ByteReader) null);
newInstance.X = instance.X; newInstance.X = instance.X;
@ -388,11 +389,10 @@ namespace CTFAK.MMFParser.Translation
newInstance.Flags = instance.FrameItem.Flags; newInstance.Flags = instance.FrameItem.Flags;
newInstance.ParentType = (uint) instance.ParentType; newInstance.ParentType = (uint) instance.ParentType;
newInstance.ItemHandle = (uint) (instance.ObjectInfo); newInstance.ItemHandle = (uint) (instance.ObjectInfo);
newInstance.ParentHandle = 0xffffffff; newInstance.ParentHandle = (uint) instance.ParentHandle;
newInstance.Layer = (uint) instance.Layer; newInstance.Layer = 0;//(uint) instance.Layer;
newInstances.Add(newInstance); newInstances.Add(newInstance);
Logger.Log($"{instance.FrameItem.Name} - {i}"); Logger.Log($"{instance.FrameItem.Name} - {i}");
// if(i==52) break;
} }
} }
@ -414,7 +414,7 @@ namespace CTFAK.MMFParser.Translation
List<DataLoader> quailifers = new List<DataLoader>();
newFrame.Events = MFA.MFA.emptyEvents; newFrame.Events = MFA.MFA.emptyEvents;
newFrame.Events._ifMFA = true; newFrame.Events._ifMFA = true;
newFrame.Events.Version = 1028; newFrame.Events.Version = 1028;
@ -422,11 +422,11 @@ namespace CTFAK.MMFParser.Translation
{ {
var newObject = new EventObject((ByteReader) null); var newObject = new EventObject((ByteReader) null);
newObject.Handle = (uint) newFrame.Items.IndexOf(item);//(uint) item.Handle; newObject.Handle = (uint) item.Handle;
newObject.Name = item.Name ?? ""; newObject.Name = item.Name ?? "";
newObject.TypeName = ""; newObject.TypeName = "";
newObject.ItemType = (ushort) item.ObjectType; newObject.ItemType = (ushort) item.ObjectType;
newObject.ObjectType = (ushort) item.ObjectType; newObject.ObjectType = 1;
newObject.Flags = 0; newObject.Flags = 0;
newObject.ItemHandle = (uint) item.Handle; newObject.ItemHandle = (uint) item.Handle;
newObject.InstanceHandle = 0xFFFFFFFF; newObject.InstanceHandle = 0xFFFFFFFF;
@ -434,6 +434,30 @@ namespace CTFAK.MMFParser.Translation
} }
for (int i = 0; i < frame.Events.Quailifers.Length; i++)
{
var item = frame.Events.Quailifers[i];
if (quailifers.Contains(item))
{
}
else
{
var newObject = new EventObject((ByteReader) null);
quailifers.Add(newObject);
var newHandle = 0;
while (true)
{
}
}
}
newFrame.Chunks = new ChunkList(null); newFrame.Chunks = new ChunkList(null);
mfa.Frames.Add(newFrame); mfa.Frames.Add(newFrame);

@ -33,8 +33,8 @@ namespace CTFAK
LoadableSettings.FromFile("settings.sav"); LoadableSettings.FromFile("settings.sav");
// //
// MFAGenerator.ReadTestMFA(); MFAGenerator.ReadTestMFA();
// Environment.Exit(0); Environment.Exit(0);
AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) => AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) =>
{ {

Loading…
Cancel
Save