|
|
@ -3,16 +3,21 @@ using System.Collections.Generic;
|
|
|
|
using System.Drawing;
|
|
|
|
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.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 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 ChunkList = CTFAK.MMFParser.MFA.Loaders.ChunkList;
|
|
|
|
using ChunkList = CTFAK.MMFParser.MFA.Loaders.ChunkList;
|
|
|
|
|
|
|
|
using Counter = CTFAK.MMFParser.MFA.Loaders.mfachunks.Counter;
|
|
|
|
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;
|
|
|
|
|
|
|
|
using Paragraph = CTFAK.MMFParser.MFA.Loaders.mfachunks.Paragraph;
|
|
|
|
|
|
|
|
using Text = CTFAK.MMFParser.MFA.Loaders.mfachunks.Text;
|
|
|
|
|
|
|
|
|
|
|
|
namespace CTFAK.MMFParser.Translation
|
|
|
|
namespace CTFAK.MMFParser.Translation
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -81,30 +86,42 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var key = game.Frameitems.ItemDict.Keys.ToArray()[i];
|
|
|
|
var key = game.Frameitems.ItemDict.Keys.ToArray()[i];
|
|
|
|
var item = game.Frameitems.ItemDict[key];
|
|
|
|
var item = game.Frameitems.ItemDict[key];
|
|
|
|
if (item.ObjectType != 2) continue;
|
|
|
|
//if (item.ObjectType != 2 && item.ObjectType != 1 && item.ObjectType != 3) break;
|
|
|
|
var newItem = new FrameItem(null);
|
|
|
|
var newItem = new FrameItem(null);
|
|
|
|
newItem.Name = item.Name;
|
|
|
|
newItem.Name = item.Name;
|
|
|
|
newItem.ObjectType = 2;//item.ObjectType;
|
|
|
|
newItem.ObjectType = item.ObjectType;
|
|
|
|
newItem.Handle = item.Handle;
|
|
|
|
newItem.Handle = item.Handle;
|
|
|
|
newItem.Transparent = item.Transparent ? 1 : 0;
|
|
|
|
newItem.Transparent = item.Transparent ? 1 : 0;
|
|
|
|
newItem.InkEffect = item.InkEffect;
|
|
|
|
newItem.InkEffect = item.InkEffect;
|
|
|
|
newItem.InkEffectParameter = item.InkEffectValue;
|
|
|
|
newItem.InkEffectParameter = item.InkEffectValue;
|
|
|
|
newItem.AntiAliasing = item.Antialias ? 1 : 0;
|
|
|
|
newItem.AntiAliasing = item.Antialias ? 1 : 0;
|
|
|
|
newItem.Flags = (int) item.Flags; //32 TODO:Fix this
|
|
|
|
newItem.Flags = (int) item.Flags; //32 TODO:Fix this
|
|
|
|
newItem.IconHandle = 10;
|
|
|
|
newItem.IconHandle = 12;
|
|
|
|
newItem.Chunks = new ChunkList(null);
|
|
|
|
newItem.Chunks = new ChunkList(null);
|
|
|
|
var itemLoader = (ObjectCommon)item.Properties.Loader;
|
|
|
|
|
|
|
|
//Only actives
|
|
|
|
|
|
|
|
//TODO:Other types of objects
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var newLoader = new Active(null);
|
|
|
|
|
|
|
|
newLoader.ObjectFlags = (int) itemLoader.Flags.flag;//820
|
|
|
|
if (item.ObjectType == 1)
|
|
|
|
newLoader.NewObjectFlags = (int) itemLoader.NewFlags.flag;//8
|
|
|
|
{
|
|
|
|
newLoader.BackgroundColor = Color.FromArgb(0x0, 0xff, 0xff, 0xff);
|
|
|
|
var backdropLoader = (EXE.Loaders.Objects.Backdrop) item.Properties.Loader;
|
|
|
|
|
|
|
|
var backdrop = new Backdrop((ByteReader) null);
|
|
|
|
|
|
|
|
backdrop.ObstacleType = (uint) backdropLoader.ObstacleType;
|
|
|
|
|
|
|
|
backdrop.CollisionType = (uint) backdropLoader.CollisionType;
|
|
|
|
|
|
|
|
backdrop.Handle = backdropLoader.Image;
|
|
|
|
|
|
|
|
//TODO:Implement QuickBackdrops
|
|
|
|
|
|
|
|
newItem.Loader = backdrop;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var itemLoader = (ObjectCommon) item.Properties.Loader;
|
|
|
|
|
|
|
|
//CommonSection
|
|
|
|
|
|
|
|
var newObject = new ObjectLoader(null);
|
|
|
|
|
|
|
|
newObject.ObjectFlags = (int) itemLoader.Flags.flag;
|
|
|
|
|
|
|
|
newObject.NewObjectFlags =(int) itemLoader.NewFlags.flag;
|
|
|
|
|
|
|
|
newObject.BackgroundColor = Color.FromArgb(0x0, 0xff, 0xff, 0xff);
|
|
|
|
//newLoader.Qualifiers;
|
|
|
|
//newLoader.Qualifiers;
|
|
|
|
newLoader.Strings = ConvertStrings(itemLoader.Strings);
|
|
|
|
newObject.Strings = ConvertStrings(itemLoader.Strings);
|
|
|
|
newLoader.Values = ConvertValue(itemLoader.Values);
|
|
|
|
newObject.Values = ConvertValue(itemLoader.Values);
|
|
|
|
newLoader.Movements=new MFA.Loaders.mfachunks.Movements(null);
|
|
|
|
newObject.Movements = new MFA.Loaders.mfachunks.Movements(null);
|
|
|
|
for (int j = 0; j < itemLoader.Movements.Items.Count; j++)
|
|
|
|
for (int j = 0; j < itemLoader.Movements.Items.Count; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var mov = itemLoader.Movements.Items[j];
|
|
|
|
var mov = itemLoader.Movements.Items[j];
|
|
|
@ -115,34 +132,52 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
newMov.Player = mov.Player;
|
|
|
|
newMov.Player = mov.Player;
|
|
|
|
newMov.MovingAtStart = mov.MovingAtStart;
|
|
|
|
newMov.MovingAtStart = mov.MovingAtStart;
|
|
|
|
newMov.DirectionAtStart = mov.DirectionAtStart;
|
|
|
|
newMov.DirectionAtStart = mov.DirectionAtStart;
|
|
|
|
newLoader.Movements.Items.Add(newMov);
|
|
|
|
newObject.Movements.Items.Add(newMov);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
newLoader.Behaviours=new Behaviours(null);
|
|
|
|
|
|
|
|
|
|
|
|
newObject.Behaviours = new Behaviours(null);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (item.ObjectType == 2)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var active = new Active(null);
|
|
|
|
|
|
|
|
//Shit Section
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
active.ObjectFlags = newObject.ObjectFlags;
|
|
|
|
|
|
|
|
active.NewObjectFlags = newObject.NewObjectFlags;
|
|
|
|
|
|
|
|
active.BackgroundColor = newObject.BackgroundColor;
|
|
|
|
|
|
|
|
active.Strings = newObject.Strings;
|
|
|
|
|
|
|
|
active.Values = newObject.Values;
|
|
|
|
|
|
|
|
active.Movements = newObject.Movements;
|
|
|
|
|
|
|
|
active.Behaviours = newObject.Behaviours;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//TODO: Transitions
|
|
|
|
//TODO: Transitions
|
|
|
|
if (itemLoader.Animations != null)
|
|
|
|
if (itemLoader.Animations != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var animHeader = itemLoader.Animations;
|
|
|
|
var animHeader = itemLoader.Animations;
|
|
|
|
for (int j = 0; j < animHeader.AnimationDict.Count; j++)
|
|
|
|
for (int j = 0; j < animHeader.AnimationDict.Count; j++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
var origAnim = animHeader.AnimationDict.ToArray()[j];
|
|
|
|
var newAnimation = new Animation(null);
|
|
|
|
var newAnimation = new Animation(null);
|
|
|
|
var newDirections = new List<AnimationDirection>();
|
|
|
|
var newDirections = new List<AnimationDirection>();
|
|
|
|
EXE.Loaders.Objects.Animation animation = null;
|
|
|
|
EXE.Loaders.Objects.Animation animation = null;
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (animHeader.AnimationDict.ContainsKey(j)) animation = animHeader.AnimationDict[j];
|
|
|
|
if (animHeader.AnimationDict.ContainsKey(origAnim.Key))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
animation = animHeader.AnimationDict[origAnim.Key];
|
|
|
|
|
|
|
|
}
|
|
|
|
else break;
|
|
|
|
else break;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
catch
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Console.WriteLine(e);
|
|
|
|
|
|
|
|
//throw;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (animation != null)
|
|
|
|
if (animation != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for (int n = 0; n < 1; n++)
|
|
|
|
for (int n = 0; n < animation.DirectionDict.Count; n++)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var direction = animation.DirectionDict.ToArray()[n].Value;
|
|
|
|
var direction = animation.DirectionDict.ToArray()[n].Value;
|
|
|
|
var newDirection = new AnimationDirection(null);
|
|
|
|
var newDirection = new AnimationDirection(null);
|
|
|
@ -156,25 +191,131 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
newAnimation.Directions = newDirections;
|
|
|
|
newAnimation.Directions = newDirections;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
active.Items.Add(j, newAnimation);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
newItem.Loader = active;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
newLoader.Items.Add(newAnimation);
|
|
|
|
if (item.ObjectType >= 32)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var newExt = new ExtensionObject(null);
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
newExt.ObjectFlags = newObject.ObjectFlags;
|
|
|
|
|
|
|
|
newExt.NewObjectFlags = newObject.NewObjectFlags;
|
|
|
|
|
|
|
|
newExt.BackgroundColor = newObject.BackgroundColor;
|
|
|
|
|
|
|
|
newExt.Strings = newObject.Strings;
|
|
|
|
|
|
|
|
newExt.Values = newObject.Values;
|
|
|
|
|
|
|
|
newExt.Movements = newObject.Movements;
|
|
|
|
|
|
|
|
newExt.Behaviours = newObject.Behaviours;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
var exts = Exe.Instance.GameData.GameChunks.GetChunk<Extensions>();
|
|
|
|
|
|
|
|
Extension ext = null;
|
|
|
|
|
|
|
|
foreach (var testExt in exts.Items)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (testExt.Handle == 1) ext = testExt;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
newExt.ExtensionType = -1;
|
|
|
|
|
|
|
|
newExt.ExtensionName = ext.Name;
|
|
|
|
|
|
|
|
newExt.Filename = $"{ext.Name}.mfx";
|
|
|
|
|
|
|
|
newExt.Magic = (uint) ext.MagicNumber;
|
|
|
|
|
|
|
|
newExt.SubType = ext.SubType;
|
|
|
|
|
|
|
|
newExt.ExtensionVersion = itemLoader.ExtensionVersion;
|
|
|
|
|
|
|
|
newExt.ExtensionId = itemLoader.ExtensionId;
|
|
|
|
|
|
|
|
newExt.ExtensionPrivate = itemLoader.ExtensionPrivate;
|
|
|
|
|
|
|
|
newExt.ExtensionData = itemLoader.ExtensionData;
|
|
|
|
|
|
|
|
newItem.Loader = newExt;
|
|
|
|
|
|
|
|
// var tuple = new Tuple<int, string, string, int, byte[]>(ext.Handle, ext.Name, "",
|
|
|
|
|
|
|
|
// ext.MagicNumber, ext.SubType);
|
|
|
|
|
|
|
|
// mfa.Extensions.Add();
|
|
|
|
|
|
|
|
|
|
|
|
newItem.Loader = newLoader;
|
|
|
|
}
|
|
|
|
FrameItems.Add(newItem.Handle,newItem);
|
|
|
|
else if (item.ObjectType == 3)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var text = itemLoader.Text;
|
|
|
|
|
|
|
|
var newText = new Text(null);
|
|
|
|
|
|
|
|
//Shit Section
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
newText.ObjectFlags = newObject.ObjectFlags;
|
|
|
|
|
|
|
|
newText.NewObjectFlags = newObject.NewObjectFlags;
|
|
|
|
|
|
|
|
newText.BackgroundColor = newObject.BackgroundColor;
|
|
|
|
|
|
|
|
newText.Strings = newObject.Strings;
|
|
|
|
|
|
|
|
newText.Values = newObject.Values;
|
|
|
|
|
|
|
|
newText.Movements = newObject.Movements;
|
|
|
|
|
|
|
|
newText.Behaviours = newObject.Behaviours;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
newText.Width = (uint) text.Width;
|
|
|
|
|
|
|
|
newText.Height = (uint) text.Height;
|
|
|
|
|
|
|
|
var paragraph = text.Items[0];
|
|
|
|
|
|
|
|
newText.Font = paragraph.FontHandle;
|
|
|
|
|
|
|
|
newText.Color = paragraph.Color;
|
|
|
|
|
|
|
|
newText.Flags = 0;
|
|
|
|
|
|
|
|
newText.Items = new List<Paragraph>();
|
|
|
|
|
|
|
|
foreach (EXE.Loaders.Objects.Paragraph exePar in text.Items)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var newPar = new Paragraph((ByteReader) null);
|
|
|
|
|
|
|
|
newPar.Value = exePar.Value;
|
|
|
|
|
|
|
|
newPar.Flags = exePar.Flags.flag;
|
|
|
|
|
|
|
|
newText.Items.Add(newPar);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
newItem.Loader = newText;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else if (item.ObjectType == 7)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var counter = itemLoader.Counters;
|
|
|
|
|
|
|
|
var newCount = new Counter(null);
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
newCount.ObjectFlags = newObject.ObjectFlags;
|
|
|
|
|
|
|
|
newCount.NewObjectFlags = newObject.NewObjectFlags;
|
|
|
|
|
|
|
|
newCount.BackgroundColor = newObject.BackgroundColor;
|
|
|
|
|
|
|
|
newCount.Strings = newObject.Strings;
|
|
|
|
|
|
|
|
newCount.Values = newObject.Values;
|
|
|
|
|
|
|
|
newCount.Movements = newObject.Movements;
|
|
|
|
|
|
|
|
newCount.Behaviours = newObject.Behaviours;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
newCount.Value = itemLoader.Counter.Initial;
|
|
|
|
|
|
|
|
newCount.Maximum = itemLoader.Counter.Maximum;
|
|
|
|
|
|
|
|
newCount.Minimum = itemLoader.Counter.Minimum;
|
|
|
|
|
|
|
|
if (counter == null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
newCount.DisplayType = 0;
|
|
|
|
|
|
|
|
newCount.CountType = 0;
|
|
|
|
|
|
|
|
newCount.Width = 0;
|
|
|
|
|
|
|
|
newCount.Height = 0;
|
|
|
|
|
|
|
|
newCount.Images=new List<int>(){0};
|
|
|
|
|
|
|
|
newCount.Font = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
newCount.DisplayType = counter.DisplayType;
|
|
|
|
|
|
|
|
newCount.CountType = counter.Inverse ? 1:0;
|
|
|
|
|
|
|
|
newCount.Width = (int) counter.Width;
|
|
|
|
|
|
|
|
newCount.Height = (int) counter.Height;
|
|
|
|
|
|
|
|
newCount.Images = counter.Frames;
|
|
|
|
|
|
|
|
newCount.Font = counter.Font;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
newCount.Color1=Color.White;
|
|
|
|
|
|
|
|
newCount.Color2=Color.White;
|
|
|
|
|
|
|
|
newCount.Flags = 0;
|
|
|
|
|
|
|
|
newCount.VerticalGradient = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
newItem.Loader = newCount;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// if(newItem.Loader==null) throw new NotImplementedException("Unsupported Object");
|
|
|
|
|
|
|
|
FrameItems.Add(newItem.Handle, newItem);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mfa.Frames.Clear();
|
|
|
|
mfa.Frames.Clear();
|
|
|
|
foreach (Frame frame in game.Frames)
|
|
|
|
foreach (Frame frame in game.Frames)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
//if(frame.Name!="what day")continue;
|
|
|
|
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);
|
|
|
@ -219,6 +360,7 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
newLayer.YCoefficient = layer.YCoeff;
|
|
|
|
newLayer.YCoefficient = layer.YCoeff;
|
|
|
|
newFrame.Layers.Add(newLayer);
|
|
|
|
newFrame.Layers.Add(newLayer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Message("Translating frame: " + newFrame.Name);
|
|
|
|
Message("Translating frame: " + newFrame.Name);
|
|
|
|
var newFrameItems = new List<FrameItem>();
|
|
|
|
var newFrameItems = new List<FrameItem>();
|
|
|
|
var newInstances = new List<FrameInstance>();
|
|
|
|
var newInstances = new List<FrameInstance>();
|
|
|
@ -240,23 +382,28 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
var newInstance = new FrameInstance((ByteReader) null);
|
|
|
|
var newInstance = new FrameInstance((ByteReader) null);
|
|
|
|
newInstance.X = instance.X;
|
|
|
|
newInstance.X = instance.X;
|
|
|
|
newInstance.Y = instance.Y;
|
|
|
|
newInstance.Y = instance.Y;
|
|
|
|
newInstance.Handle = i;
|
|
|
|
newInstance.Handle = instance.Handle;
|
|
|
|
newInstance.Flags = 1;
|
|
|
|
newInstance.Flags = instance.FrameItem.Flags;
|
|
|
|
newInstance.ParentType = (uint) instance.ParentType;
|
|
|
|
newInstance.ParentType = (uint) instance.ParentType;
|
|
|
|
newInstance.ItemHandle = (uint) (instance.ObjectInfo + 3);
|
|
|
|
newInstance.ItemHandle = (uint) (instance.ObjectInfo);
|
|
|
|
newInstance.ParentHandle = (uint) instance.ParentHandle; //0xffffffff;
|
|
|
|
newInstance.ParentHandle = 0xffffffff;
|
|
|
|
newInstance.Layer = (uint) instance.Layer;
|
|
|
|
newInstance.Layer = (uint) instance.Layer;
|
|
|
|
newInstances.Add(newInstance);
|
|
|
|
newInstances.Add(newInstance);
|
|
|
|
|
|
|
|
// if(i==34) break;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
newFrame.Items = newFrameItems;
|
|
|
|
newFrame.Items = newFrameItems;
|
|
|
|
newFrame.Instances = newInstances;
|
|
|
|
newFrame.Instances = newInstances;
|
|
|
|
newFrame.Folders = new List<ItemFolder>();
|
|
|
|
newFrame.Folders = new List<ItemFolder>();
|
|
|
|
foreach (FrameItem newFrameItem in newFrame.Items)
|
|
|
|
foreach (FrameItem newFrameItem in newFrame.Items)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var newFolder = new ItemFolder((ByteReader) null);
|
|
|
|
var newFolder = new ItemFolder((ByteReader) null);
|
|
|
|
|
|
|
|
newFolder.isRetard = true;
|
|
|
|
newFolder.Items = new List<uint>() {(uint) newFrameItem.Handle};
|
|
|
|
newFolder.Items = new List<uint>() {(uint) newFrameItem.Handle};
|
|
|
|
newFrame.Folders.Add(newFolder);
|
|
|
|
newFrame.Folders.Add(newFolder);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -275,22 +422,20 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
newObject.Name = item.Name ?? "";
|
|
|
|
newObject.Name = item.Name ?? "";
|
|
|
|
newObject.TypeName = "";
|
|
|
|
newObject.TypeName = "";
|
|
|
|
newObject.ItemType = (ushort) item.ObjectType;
|
|
|
|
newObject.ItemType = (ushort) item.ObjectType;
|
|
|
|
newObject.ObjectType = 2;
|
|
|
|
newObject.ObjectType = (ushort) item.ObjectType;
|
|
|
|
newObject.Flags = 0;
|
|
|
|
newObject.Flags = 0;
|
|
|
|
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);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
newFrame.Chunks = new ChunkList(null);
|
|
|
|
newFrame.Chunks = new ChunkList(null);
|
|
|
|
mfa.Frames.Add(newFrame);
|
|
|
|
mfa.Frames.Add(newFrame);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static MFA.Loaders.Transition ConvertTransition(EXE.Loaders.Transition gameTrans)
|
|
|
|
public static MFA.Loaders.Transition ConvertTransition(EXE.Loaders.Transition gameTrans)
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -321,6 +466,10 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
alterables.Items.Add(newValue);
|
|
|
|
alterables.Items.Add(newValue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return alterables;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return alterables;
|
|
|
|
return alterables;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -338,6 +487,10 @@ namespace CTFAK.MMFParser.Translation
|
|
|
|
alterables.Items.Add(newValue);
|
|
|
|
alterables.Items.Add(newValue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return alterables;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return alterables;
|
|
|
|
return alterables;
|
|
|
|
}
|
|
|
|
}
|
|
|
|