You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.9 KiB
C#
91 lines
2.9 KiB
C#
using System;
|
|
using System.Windows.Forms.VisualStyles;
|
|
using CTFAK.Utils;
|
|
|
|
namespace CTFAK.MMFParser.EXE.Loaders.Events.Expressions
|
|
{
|
|
public class Expression : DataLoader
|
|
{
|
|
public Constants.ObjectType ObjectType;
|
|
public int Num;
|
|
public int ObjectInfo;
|
|
public int ObjectInfoList;
|
|
public object value;
|
|
public object floatValue;
|
|
public Expression(ByteReader reader) : base(reader) { }
|
|
public override void Write(ByteWriter Writer)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override void Print()
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public override void Read()
|
|
{
|
|
var currentPosition = Reader.Tell();
|
|
ObjectType = (Constants.ObjectType) Reader.ReadInt16();
|
|
Num = Reader.ReadInt16();
|
|
if (ObjectType == 0 & Num == 0) return;
|
|
var size = Reader.ReadUInt16();
|
|
switch (ObjectType)
|
|
{
|
|
case Constants.ObjectType.System:
|
|
switch (Num)
|
|
{
|
|
//Long
|
|
case 0:
|
|
{
|
|
value = Reader.ReadInt32();
|
|
break;
|
|
}
|
|
//String
|
|
case 3:
|
|
{
|
|
value = Reader.ReadWideString();
|
|
break;
|
|
}
|
|
//Double
|
|
case 23:
|
|
{
|
|
value = Reader.ReadDouble();
|
|
floatValue = Reader.ReadSingle();
|
|
break;
|
|
}
|
|
//GlobalString
|
|
case 24:
|
|
break;
|
|
//GlobalValue
|
|
case 50:
|
|
break;
|
|
default:
|
|
{
|
|
if ((int)ObjectType >= 2 || (int)ObjectType == 7)
|
|
{
|
|
ObjectInfo = Reader.ReadUInt16();
|
|
ObjectInfoList = Reader.ReadUInt16();
|
|
// if self.num in extensionLoaders:
|
|
// loader = extensionLoaders[self.num]
|
|
// self.loader = self.new(loader, reader)
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
}
|
|
Reader.Seek(currentPosition+size);
|
|
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"Expression {ObjectType}=={Num}: {value}";
|
|
}
|
|
}
|
|
}
|