|
|
@ -5,15 +5,18 @@ 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.Events;
|
|
|
|
|
|
|
|
using CTFAK.MMFParser.EXE.Loaders.Events.Parameters;
|
|
|
|
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;
|
|
|
|
using CTFAK.Utils;
|
|
|
|
using CTFAK.Utils;
|
|
|
|
|
|
|
|
using Action = CTFAK.MMFParser.EXE.Loaders.Events.Action;
|
|
|
|
using Animation = CTFAK.MMFParser.MFA.Loaders.mfachunks.Animation;
|
|
|
|
using Animation = CTFAK.MMFParser.MFA.Loaders.mfachunks.Animation;
|
|
|
|
using AnimationDirection = CTFAK.MMFParser.MFA.Loaders.mfachunks.AnimationDirection;
|
|
|
|
using AnimationDirection = CTFAK.MMFParser.MFA.Loaders.mfachunks.AnimationDirection;
|
|
|
|
using Backdrop = CTFAK.MMFParser.MFA.Loaders.mfachunks.Backdrop;
|
|
|
|
using Backdrop = CTFAK.MMFParser.MFA.Loaders.mfachunks.Backdrop;
|
|
|
|
using ChunkList = CTFAK.MMFParser.MFA.Loaders.ChunkList;
|
|
|
|
using ChunkList = CTFAK.MMFParser.MFA.Loaders.ChunkList;
|
|
|
|
using Counter = CTFAK.MMFParser.MFA.Loaders.mfachunks.Counter;
|
|
|
|
using Counter = CTFAK.MMFParser.MFA.Loaders.mfachunks.Counter;
|
|
|
|
|
|
|
|
using Events = CTFAK.MMFParser.MFA.Loaders.Events;
|
|
|
|
using Frame = CTFAK.MMFParser.EXE.Loaders.Frame;
|
|
|
|
using Frame = CTFAK.MMFParser.EXE.Loaders.Frame;
|
|
|
|
using Layer = CTFAK.MMFParser.MFA.Loaders.Layer;
|
|
|
|
using Layer = CTFAK.MMFParser.MFA.Loaders.Layer;
|
|
|
|
using Movement = CTFAK.MMFParser.MFA.Loaders.mfachunks.Movement;
|
|
|
|
using Movement = CTFAK.MMFParser.MFA.Loaders.mfachunks.Movement;
|
|
|
@ -43,12 +46,12 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
//mfa.Stamp = wtf;
|
|
|
|
//mfa.Stamp = wtf;
|
|
|
|
//if (game.Fonts != null) mfa.Fonts = game.Fonts;
|
|
|
|
//if (game.Fonts != null) mfa.Fonts = game.Fonts;
|
|
|
|
|
|
|
|
|
|
|
|
//mfa.Sounds = game.Sounds;
|
|
|
|
// mfa.Sounds = game.Sounds;
|
|
|
|
//foreach (var item in mfa.Sounds.Items)
|
|
|
|
// foreach (var item in mfa.Sounds.Items)
|
|
|
|
//{
|
|
|
|
// {
|
|
|
|
// item.IsCompressed = false;
|
|
|
|
// item.IsCompressed = false;
|
|
|
|
//}
|
|
|
|
// }
|
|
|
|
//mfa.Music = game.Music;
|
|
|
|
// mfa.Music = game.Music;
|
|
|
|
mfa.Images.Items = game.Images.Images;
|
|
|
|
mfa.Images.Items = game.Images.Images;
|
|
|
|
foreach (var key in mfa.Images.Items.Keys)
|
|
|
|
foreach (var key in mfa.Images.Items.Keys)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -319,7 +322,7 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
mfa.Frames.Clear();
|
|
|
|
mfa.Frames.Clear();
|
|
|
|
foreach (Frame frame in game.Frames)
|
|
|
|
foreach (Frame frame in game.Frames)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
// if (frame.Name != "title") continue;
|
|
|
|
|
|
|
|
var newFrame = new MFA.Loaders.Frame(null);
|
|
|
|
var newFrame = new MFA.Loaders.Frame(null);
|
|
|
|
//FrameInfo
|
|
|
|
//FrameInfo
|
|
|
|
newFrame.Handle = game.Frames.IndexOf(frame);
|
|
|
|
newFrame.Handle = game.Frames.IndexOf(frame);
|
|
|
@ -410,14 +413,17 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
newFolder.Items = new List<uint>() {(uint) newFrameItem.Handle};
|
|
|
|
newFolder.Items = new List<uint>() {(uint) newFrameItem.Handle};
|
|
|
|
newFrame.Folders.Add(newFolder);
|
|
|
|
newFrame.Folders.Add(newFolder);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//EventInfo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<DataLoader> quailifers = new List<DataLoader>();
|
|
|
|
newFrame.Events = new Events((ByteReader) null);//MFA.MFA.emptyEvents;
|
|
|
|
newFrame.Events = MFA.MFA.emptyEvents;
|
|
|
|
newFrame.Events.Items = new List<EventGroup>();
|
|
|
|
|
|
|
|
newFrame.Events.Objects=new List<EventObject>();
|
|
|
|
|
|
|
|
newFrame.Events._cache = MFA.MFA.emptyEvents._cache;
|
|
|
|
newFrame.Events._ifMFA = true;
|
|
|
|
newFrame.Events._ifMFA = true;
|
|
|
|
newFrame.Events.Version = 1028;
|
|
|
|
newFrame.Events.Version = 1028;
|
|
|
|
|
|
|
|
if (frame.Name == "Frame 1")
|
|
|
|
|
|
|
|
{
|
|
|
|
foreach (var item in newFrame.Items)
|
|
|
|
foreach (var item in newFrame.Items)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var newObject = new EventObject((ByteReader) null);
|
|
|
|
var newObject = new EventObject((ByteReader) null);
|
|
|
@ -431,33 +437,43 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
newObject.ItemHandle = (uint) item.Handle;
|
|
|
|
newObject.ItemHandle = (uint) item.Handle;
|
|
|
|
newObject.InstanceHandle = 0xFFFFFFFF;
|
|
|
|
newObject.InstanceHandle = 0xFFFFFFFF;
|
|
|
|
newFrame.Events.Objects.Add(newObject);
|
|
|
|
newFrame.Events.Objects.Add(newObject);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (EventGroup item in frame.Events.Items)
|
|
|
|
for (int i = 0; i < frame.Events.Quailifers.Length; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var item = frame.Events.Quailifers[i];
|
|
|
|
foreach (Action itemAction in item.Actions)
|
|
|
|
if (quailifers.Contains(item))
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
}
|
|
|
|
for (int a=0;a<itemAction.Items.Count;a++)
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var newObject = new EventObject((ByteReader) null);
|
|
|
|
if (itemAction.Items[a].Loader is ExpressionParameter exp)
|
|
|
|
quailifers.Add(newObject);
|
|
|
|
|
|
|
|
var newHandle = 0;
|
|
|
|
|
|
|
|
while (true)
|
|
|
|
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
itemAction.Items.Remove(itemAction.Items[a]);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (itemAction.Items[a].Loader is Sample)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
itemAction.Items.Remove(itemAction.Items[a]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (Condition itemAction in item.Conditions)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (int a=0;a<itemAction.Items.Count;a++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (itemAction.Items[a].Loader is ExpressionParameter exp)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
itemAction.Items.Remove(itemAction.Items[a]);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (itemAction.Items[a].Loader is Sample)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
itemAction.Items.Remove(itemAction.Items[a]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
newFrame.Events.Items.Add(item);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
newFrame.Chunks = new ChunkList(null);
|
|
|
|
newFrame.Chunks = new ChunkList(null);
|
|
|
|
mfa.Frames.Add(newFrame);
|
|
|
|
mfa.Frames.Add(newFrame);
|
|
|
|
|
|
|
|
|
|
|
|