Fixed eventGroup reading

master
REDxEYE 4 years ago
parent d8872e71e1
commit 188a67e48c

@ -21,7 +21,10 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public List<int> NumberOfConditions = new List<int>();
public Events(Chunk chunk) : base(chunk) { }
public Events(Chunk chunk) : base(chunk)
{
}
public override void Print(bool ext)
{
throw new NotImplementedException();
@ -34,7 +37,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public override void Read()
{
while(true)
while (true)
{
var identifier = Reader.ReadAscii(4);
if (identifier == Header)
@ -46,14 +49,14 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
{
NumberOfConditions.Add(Reader.ReadInt16());
}
var qualifierCount = Reader.ReadInt16();//should be 0, so i dont give a fuck
var qualifierCount = Reader.ReadInt16(); //should be 0, so i dont give a fuck
Quailifers = new Quailifer[qualifierCount + 1];
for (int i = 0; i < qualifierCount; i++)
{
var newQualifier = new Quailifer(Reader);
QualifiersList.Add(newQualifier);//fucking python types
QualifiersList.Add(newQualifier); //fucking python types
//THIS IS NOT DONE
}
}
else if (identifier == EventCount)
@ -71,9 +74,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
}
}
else if (identifier == End) break;
}
}
}
@ -84,8 +85,13 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public Quailifer Qualifier;
List<int> _objects = new List<int>();
public Quailifer(Chunk chunk) : base(chunk) { }
public Quailifer(ByteReader reader) : base(reader) { }
public Quailifer(Chunk chunk) : base(chunk)
{
}
public Quailifer(ByteReader reader) : base(reader)
{
}
public override void Print(bool ext)
{
@ -102,7 +108,6 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
ObjectInfo = Reader.ReadUInt16();
Type = Reader.ReadInt16();
Qualifier = this;
}
}
@ -117,8 +122,13 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
public List<Condition> Conditions = new List<Condition>();
public List<Action> Actions = new List<Action>();
public EventGroup(Chunk chunk) : base(chunk) { }
public EventGroup(ByteReader reader) : base(reader) { }
public EventGroup(Chunk chunk) : base(chunk)
{
}
public EventGroup(ByteReader reader) : base(reader)
{
}
public override void Print(bool ext)
{
@ -137,30 +147,44 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
var numberOfConditions = Reader.ReadByte();
var numberOfActions = Reader.ReadByte();
var flags = Reader.ReadUInt16();
var nop = Reader.ReadInt16();
IsRestricted = Reader.ReadInt32();
RestrictCpt = Reader.ReadInt32();
if (Settings.Build >= 284)
{
var nop = Reader.ReadInt16();
IsRestricted = Reader.ReadInt32();
RestrictCpt = Reader.ReadInt32();
}
else
{
IsRestricted = Reader.ReadInt16();
RestrictCpt = Reader.ReadInt16();
Identifier = Reader.ReadInt16();
Undo = Reader.ReadInt16();
}
for (int i = 0; i < numberOfConditions; i++)
{
var item = new Condition(Reader);
item.Read();
Conditions.Add(item);
}
for (int i = 0; i < numberOfActions; i++)
{
var item = new Action(Reader);
item.Read();
Actions.Add(item);
}
Reader.Seek(currentPosition + size);
Console.WriteLine("IF:");
if (Conditions!=null)
if (Conditions != null)
{
foreach (var item in Conditions)
{
Console.WriteLine("\t" + item.ToString());
}
}
Console.WriteLine("DO:");
if (Actions != null)
{
@ -169,20 +193,10 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
Console.WriteLine("\t" + item.ToString());
}
}
}
public void Write(ByteWriter Writer)
{
}
}
}

@ -241,6 +241,7 @@ namespace DotNetCTFDumper.MMFParser.Data
MfaBuild = Reader.ReadInt32();
Product = Reader.ReadInt32();
BuildVersion = Reader.ReadInt32();
Settings.Build = BuildVersion;
LangId = Reader.ReadInt32();
Name = Helper.AutoReadUnicode(Reader);
Description = Helper.AutoReadUnicode(Reader);
@ -336,7 +337,6 @@ namespace DotNetCTFDumper.MMFParser.Data
IconImages.Add(Reader.ReadInt32());
}
//I STUCK HERE
QualCount = Reader.ReadInt32();
CustomQuals = new List<Tuple<string, int>>();
for (int i = 0; i < QualCount; i++) //qualifiers

@ -33,7 +33,6 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
public override void Read()
{
long currentPosition = Reader.Tell();
uint headerSize = Reader.ReadUInt32();
int menuOffset = Reader.ReadInt32();
@ -52,9 +51,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
AccelId = new List<short>();
for (int i = 0; i < accelSize / 8; i++)
{
AccelShift.Add(Reader.ReadByte());
Reader.Skip(1);
AccelKey.Add(Reader.ReadInt16());
AccelId.Add(Reader.ReadInt16());
@ -66,7 +63,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
{
writer.WriteInt32(20);
writer.WriteInt32(20);
writer.WriteInt32(458);
writer.WriteInt32(0);
ByteWriter menuDataWriter = new ByteWriter(new MemoryStream());
@ -75,7 +72,9 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
item.Write(menuDataWriter);
}
writer.WriteUInt32((uint) ( menuDataWriter.BaseStream.Position)+62);//shit
writer.WriteUInt32((uint) menuDataWriter.BaseStream.Position);
writer.WriteUInt32((uint) (24 + menuDataWriter.BaseStream.Position));
writer.WriteInt32(AccelKey.Count * 8);
writer.WriteInt32(0);
writer.WriteWriter(menuDataWriter);
@ -97,7 +96,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
newItem.Read();
Items.Add(newItem);
if (newItem.Name.Contains("About")) break;
// if (newItem.Name.Contains("About")) break;
if (ByteFlag.GetFlag((uint) newItem.Flags, 4))
{
Load(reader);
@ -114,8 +113,8 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
public class AppMenuItem : ChunkLoader
{
public string Name = "";
public short Flags = 0;
public short Id = 0;
public Int16 Flags = 0;
public Int16 Id = 0;
public string Mnemonic = null;
public AppMenuItem(ByteReader reader) : base(reader)
@ -150,10 +149,10 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
{
if (Name[i] == '&')
{
Mnemonic = Name[i + 1].ToString().ToUpper();
Mnemonic = Name[i + 1].ToString();
Name = Name.Replace("&", "");
break;
}
//Name = Name.Replace("&", "");
}
Console.WriteLine(Name);
@ -172,12 +171,12 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
}
String MName = Name;
if (Mnemonic!=null)
if (Mnemonic != null)
{
//MName = MName.Replace(Mnemonic, "&" + Mnemonic);
MName = MName.ReplaceFirst(Mnemonic, "&" + Mnemonic);
}
writer.WriteUnicode(MName);
writer.WriteUnicode(MName, true);
}
}
}
Loading…
Cancel
Save