void ReadMethods(RhydonContext ctx, int count) { for (var i = 0; i < count; i++) { var id = ctx.ReadCompressedUint(); var export = MethodExport.Create(ctx); ctx.Logger.Debug($"Methods[{id:D3}]: Offset: 0x{export.Offset:X8} Key: 0x{export.Key:X8}"); Methods[id] = export; } }
public static MethodExport Create(RhydonContext ctx) { var obj = new MethodExport { Offset = ctx.Reader.ReadUInt32() }; if (obj.Offset != 0) { obj.Key = ctx.Reader.ReadUInt32(); } obj.Flags = ctx.Reader.ReadByte(); obj.ArgumentTypes = new ITypeDefOrRef[ctx.Reader.ReadCompressedUint()]; for (var i = 0; i < obj.ArgumentTypes.Length; i++) { obj.ArgumentTypes[i] = (ITypeDefOrRef)ctx.Module.ResolveToken(KoiHeader.FromCodedToken(ctx.Reader.ReadCompressedUint())); } obj.ReturnType = (ITypeDefOrRef)ctx.Module.ResolveToken(KoiHeader.FromCodedToken(ctx.Reader.ReadCompressedUint())); return(obj); }