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); if(Num==16||Num==19)Loader.Write(newWriter);
else else
{ {
temp = true; // temp = true;
newWriter.WriteInt32(_unk); // newWriter.WriteInt32(_unk);
} }
} }
else else

@ -52,6 +52,7 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects
public short Type; public short Type;
public byte MovingAtStart; public byte MovingAtStart;
public int DirectionAtStart; public int DirectionAtStart;
public MovementLoader Loader;
public Movement(ByteReader reader) : base(reader) public Movement(ByteReader reader) : base(reader)
{ {
@ -73,7 +74,14 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects
MovingAtStart = Reader.ReadByte(); MovingAtStart = Reader.ReadByte();
Reader.Skip(3); Reader.Skip(3);
DirectionAtStart = Reader.ReadInt32(); DirectionAtStart = Reader.ReadInt32();
//TODO: Extension Stuff switch (Type)
{
case 1:
Loader = new Mouse(Reader);
break;
}
Loader?.Read();
} }
public override void Print(bool ext) public override void Print(bool ext)
@ -86,4 +94,63 @@ namespace CTFAK.MMFParser.EXE.Loaders.Objects
throw new System.NotImplementedException(); 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++) 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.WriteInt32(Layers[i].Unk1);
Writer.WriteColor(rgb);
Writer.WriteInt32(Layers[i].Unk2); Writer.WriteInt32(Layers[i].Unk2);
Logger.Log($"{rgb.R},{rgb.G},{rgb.B},{rgb.A} - {Layers[i].Unk1} - {Layers[i].Unk2} ");
} }
Chunks.Write(Writer); Chunks.Write(Writer);
@ -208,9 +211,10 @@ namespace CTFAK.MMFParser.MFA.Loaders
Events.Read(); Events.Read();
for (int i=0;i<Layers.Count-1;i++) for (int i=0;i<Layers.Count-1;i++)
{ {
Layers[i].RGBCoeff= Reader.ReadColor();
Layers[i].Unk1=Reader.ReadInt32(); Layers[i].Unk1=Reader.ReadInt32();
Layers[i].RGBCoeff= Reader.ReadColor();
Layers[i].Unk2=Reader.ReadInt32(); Layers[i].Unk2=Reader.ReadInt32();
} }
Chunks = new ChunkList(Reader); Chunks = new ChunkList(Reader);

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

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

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

Loading…
Cancel
Save