mirror of
https://github.com/4sval/FModel.git
synced 2026-03-22 01:34:37 -05:00
fixed enumproperty parsing
This commit is contained in:
parent
06c4ebd539
commit
16bf9de35e
|
|
@ -69,7 +69,7 @@ namespace FModel.PakReader.Parsers.PropertyTagData
|
|||
"Int8Property" => new Int8Property(reader),
|
||||
"MapProperty" => new MapProperty(reader, tag),
|
||||
"SetProperty" => new SetProperty(reader, tag),
|
||||
"EnumProperty" => new EnumProperty(reader, tag),
|
||||
"EnumProperty" => new EnumProperty(reader, tag, readType),
|
||||
_ => null, //throw new NotImplementedException($"Parsing of {type.String} types aren't supported yet."),
|
||||
};
|
||||
return prop;
|
||||
|
|
@ -105,7 +105,7 @@ namespace FModel.PakReader.Parsers.PropertyTagData
|
|||
"Int8Property" => new Int8Property(reader).Value,
|
||||
"MapProperty" => new MapProperty(reader, tag).Value,
|
||||
"SetProperty" => new SetProperty(reader, tag).Value,
|
||||
"EnumProperty" => new EnumProperty(reader, tag).Value,
|
||||
"EnumProperty" => new EnumProperty(reader, tag, readType).Value,
|
||||
_ => null, //throw new NotImplementedException($"Parsing of {type.String} types aren't supported yet."),
|
||||
};
|
||||
return prop;
|
||||
|
|
|
|||
|
|
@ -8,31 +8,31 @@ namespace FModel.PakReader.Parsers.PropertyTagData
|
|||
{
|
||||
Value = new FName(ByteToEnum(tag.EnumName.String, 0));
|
||||
}
|
||||
internal EnumProperty(PackageReader reader, FPropertyTag tag)
|
||||
internal EnumProperty(PackageReader reader, FPropertyTag tag, ReadType readType)
|
||||
{
|
||||
Position = reader.Position;
|
||||
|
||||
if (reader is IoPackageReader)
|
||||
{
|
||||
object byteValue = tag.EnumType.String == "IntProperty" ? reader.ReadInt32() : reader.ReadByte();
|
||||
Value = new FName(ByteToEnum(tag.EnumName.String, byteValue));
|
||||
}
|
||||
else
|
||||
if (!(reader is IoPackageReader) || readType != ReadType.NORMAL)
|
||||
{
|
||||
Value = reader.ReadFName();
|
||||
}
|
||||
else
|
||||
{
|
||||
var byteValue = tag.EnumType.String == "IntProperty" ? reader.ReadInt32() : reader.ReadByte();
|
||||
Value = new FName(ByteToEnum(tag.EnumName.String, byteValue));
|
||||
}
|
||||
}
|
||||
|
||||
private static string ByteToEnum(string enumName, object value)
|
||||
private static string ByteToEnum(string enumName, int value)
|
||||
{
|
||||
string result;
|
||||
|
||||
if (enumName == null)
|
||||
return value.ToString();
|
||||
|
||||
string result;
|
||||
|
||||
if (Globals.EnumMappings.TryGetValue(enumName, out var values))
|
||||
{
|
||||
result = values.TryGetValue((int)value, out var member) ? string.Concat(enumName, "::", member) : string.Concat(enumName, "::", value);
|
||||
result = values.TryGetValue(value, out var member) ? string.Concat(enumName, "::", member) : string.Concat(enumName, "::", value);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user