Fixed expressions for extensions

master
1987kostya 4 years ago
parent ca8e4223d0
commit d393571dbd

@ -39,8 +39,8 @@ namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
if(Num==16||Num==19)Loader.Write(newWriter);
else
{
temp = true;
newWriter.WriteInt32(_unk);
// temp = true;
// newWriter.WriteInt32(_unk);
}
}
else

@ -52,6 +52,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects
public short Type;
public byte MovingAtStart;
public int DirectionAtStart;
public MovementLoader Loader;
public Movement(ByteReader reader) : base(reader)
{
@ -73,7 +74,14 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects
MovingAtStart = Reader.ReadByte();
Reader.Skip(3);
DirectionAtStart = Reader.ReadInt32();
//TODO: Extension Stuff
switch (Type)
{
case 1:
Loader = new Mouse(Reader);
break;
}
Loader?.Read();
}
public override void Print(bool ext)
@ -86,4 +94,63 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects
throw new System.NotImplementedException();
}
}
public class MovementLoader:DataLoader
{
public MovementLoader(ByteReader reader) : base(reader)
{
}
public MovementLoader(ChunkList.Chunk chunk) : base(chunk)
{
}
public override void Read()
{
throw new System.NotImplementedException();
}
public override void Write(ByteWriter Writer)
{
throw new System.NotImplementedException();
}
public override void Print()
{
throw new System.NotImplementedException();
}
}
public class Mouse:MovementLoader
{
public short X1;
public short X2;
public short Y1;
public short Y2;
public Mouse(ByteReader reader) : base(reader)
{
}
public Mouse(ChunkList.Chunk chunk) : base(chunk)
{
}
public override void Read()
{
X1 = Reader.ReadInt16();
X2 = Reader.ReadInt16();
Y1 = Reader.ReadInt16();
Y2 = Reader.ReadInt16();
var unusedFlags = Reader.ReadInt16();
}
public override void Write(ByteWriter Writer)
{
Writer.WriteInt16(X1);
Writer.WriteInt16(X2);
Writer.WriteInt16(Y1);
Writer.WriteInt16(Y2);
Writer.WriteInt16(0);
}
}
}

@ -117,9 +117,12 @@ namespace CTFAK.MMFParser.MFA.Loaders
for (int i = 0; i < Layers.Count-1; i++)
{
Writer.WriteColor(Layers[i].RGBCoeff);
var rgb = Layers[i].RGBCoeff;
Writer.WriteInt32(Layers[i].Unk1);
Writer.WriteColor(rgb);
Writer.WriteInt32(Layers[i].Unk2);
Logger.Log($"{rgb.R},{rgb.G},{rgb.B},{rgb.A} - {Layers[i].Unk1} - {Layers[i].Unk2} ");
}
Chunks.Write(Writer);
@ -208,9 +211,10 @@ namespace CTFAK.MMFParser.MFA.Loaders
Events.Read();
for (int i=0;i<Layers.Count-1;i++)
{
Layers[i].RGBCoeff= Reader.ReadColor();
Layers[i].Unk1=Reader.ReadInt32();
Layers[i].RGBCoeff= Reader.ReadColor();
Layers[i].Unk2=Reader.ReadInt32();
}
Chunks = new ChunkList(Reader);

@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using CTFAK.MMFParser.EXE;
using CTFAK.MMFParser.EXE.Loaders.Objects;
using CTFAK.Utils;
namespace CTFAK.MMFParser.MFA.Loaders.mfachunks
@ -50,6 +52,8 @@ namespace CTFAK.MMFParser.MFA.Loaders.mfachunks
public int DirectionAtStart;
public int DataSize;
public byte[] extData=new byte[14];
public MovementLoader Loader;
public override void Write(ByteWriter Writer)
{
Writer.AutoWriteUnicode(Name);
@ -64,9 +68,11 @@ namespace CTFAK.MMFParser.MFA.Loaders.mfachunks
newWriter.WriteInt8(MovingAtStart);
newWriter.Skip(3);
newWriter.WriteInt32(DirectionAtStart);
newWriter.WriteBytes(extData);
// newWriter.WriteBytes(extData);
}
//write loader
var new2 = new ByteWriter(new MemoryStream());
Loader?.Write(new2);
newWriter.WriteWriter(new2);
Writer.WriteInt32((int) newWriter.Size());
Writer.WriteWriter(newWriter);
@ -96,9 +102,14 @@ namespace CTFAK.MMFParser.MFA.Loaders.mfachunks
Reader.Skip(3);
DirectionAtStart = Reader.ReadInt32();
extData = Reader.ReadBytes(DataSize-12);
//ONLY STATIC MOVEMENT IS SUPPORTED RN
//TODO:Movement Types
//implement types, but i am tired, fuck this shit
switch (Type)
{
case 1:
Loader = new Mouse(new ByteReader(extData));
break;
}
Loader?.Read();
}
}

@ -149,9 +149,9 @@ namespace CTFAK.MMFParser.Translation
// newLayer.Flags.flag = 0;
newLayer.XCoefficient = layer.XCoeff;
newLayer.YCoefficient = layer.YCoeff;
newLayer.RGBCoeff=Color.Green;
newLayer.RGBCoeff = Color.FromArgb(255,0,0,255);
newLayer.Unk1 = 0;
newLayer.Unk2 = 0;
newLayer.Unk2 = 65535;
newFrame.Layers.Add(newLayer);
break;
//

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

Loading…
Cancel
Save