@@ -19,12 +19,12 @@ public sealed class Metadata : BinaryStream
19
19
public Il2CppPropertyDefinition [ ] propertyDefs ;
20
20
public Il2CppCustomAttributeTypeRange [ ] attributeTypeRanges ;
21
21
private Dictionary < Il2CppImageDefinition , Dictionary < uint , int > > attributeTypeRangesDic ;
22
- private Il2CppStringLiteral [ ] stringLiterals ;
22
+ public Il2CppStringLiteral [ ] stringLiterals ;
23
23
private Il2CppMetadataUsageList [ ] metadataUsageLists ;
24
24
private Il2CppMetadataUsagePair [ ] metadataUsagePairs ;
25
25
public int [ ] attributeTypes ;
26
26
public int [ ] interfaceIndices ;
27
- public Dictionary < uint , SortedDictionary < uint , uint > > metadataUsageDic ;
27
+ public Dictionary < Il2CppMetadataUsage , SortedDictionary < uint , uint > > metadataUsageDic ;
28
28
public long maxMetadataUsages ;
29
29
public int [ ] nestedTypeIndices ;
30
30
public Il2CppEventDefinition [ ] eventDefs ;
@@ -85,15 +85,17 @@ public Metadata(Stream stream) : base(stream)
85
85
genericParameters = ReadMetadataClassArray < Il2CppGenericParameter > ( header . genericParametersOffset , header . genericParametersCount ) ;
86
86
constraintIndices = ReadClassArray < int > ( header . genericParameterConstraintsOffset , header . genericParameterConstraintsCount / 4 ) ;
87
87
vtableMethods = ReadClassArray < uint > ( header . vtableMethodsOffset , header . vtableMethodsCount / 4 ) ;
88
- if ( Version > 16 && Version < 27 ) //TODO
88
+ stringLiterals = ReadMetadataClassArray < Il2CppStringLiteral > ( header . stringLiteralOffset , header . stringLiteralCount ) ;
89
+ if ( Version > 16 )
89
90
{
90
- stringLiterals = ReadMetadataClassArray < Il2CppStringLiteral > ( header . stringLiteralOffset , header . stringLiteralCount ) ;
91
- metadataUsageLists = ReadMetadataClassArray < Il2CppMetadataUsageList > ( header . metadataUsageListsOffset , header . metadataUsageListsCount ) ;
92
- metadataUsagePairs = ReadMetadataClassArray < Il2CppMetadataUsagePair > ( header . metadataUsagePairsOffset , header . metadataUsagePairsCount ) ;
93
-
94
- ProcessingMetadataUsage ( ) ;
95
-
96
91
fieldRefs = ReadMetadataClassArray < Il2CppFieldRef > ( header . fieldRefsOffset , header . fieldRefsCount ) ;
92
+ if ( Version < 27 )
93
+ {
94
+ metadataUsageLists = ReadMetadataClassArray < Il2CppMetadataUsageList > ( header . metadataUsageListsOffset , header . metadataUsageListsCount ) ;
95
+ metadataUsagePairs = ReadMetadataClassArray < Il2CppMetadataUsagePair > ( header . metadataUsagePairsOffset , header . metadataUsagePairsCount ) ;
96
+
97
+ ProcessingMetadataUsage ( ) ;
98
+ }
97
99
}
98
100
if ( Version > 20 )
99
101
{
@@ -178,10 +180,10 @@ public string GetStringLiteralFromIndex(uint index)
178
180
179
181
private void ProcessingMetadataUsage ( )
180
182
{
181
- metadataUsageDic = new Dictionary < uint , SortedDictionary < uint , uint > > ( ) ;
182
- for ( uint i = 1 ; i <= 6u ; i ++ )
183
+ metadataUsageDic = new Dictionary < Il2CppMetadataUsage , SortedDictionary < uint , uint > > ( ) ;
184
+ for ( uint i = 1 ; i <= 6 ; i ++ )
183
185
{
184
- metadataUsageDic [ i ] = new SortedDictionary < uint , uint > ( ) ;
186
+ metadataUsageDic [ ( Il2CppMetadataUsage ) i ] = new SortedDictionary < uint , uint > ( ) ;
185
187
}
186
188
foreach ( var metadataUsageList in metadataUsageLists )
187
189
{
@@ -191,7 +193,7 @@ private void ProcessingMetadataUsage()
191
193
var metadataUsagePair = metadataUsagePairs [ offset ] ;
192
194
var usage = GetEncodedIndexType ( metadataUsagePair . encodedSourceIndex ) ;
193
195
var decodedIndex = GetDecodedMethodIndex ( metadataUsagePair . encodedSourceIndex ) ;
194
- metadataUsageDic [ usage ] [ metadataUsagePair . destinationIndex ] = decodedIndex ;
196
+ metadataUsageDic [ ( Il2CppMetadataUsage ) usage ] [ metadataUsagePair . destinationIndex ] = decodedIndex ;
195
197
}
196
198
}
197
199
maxMetadataUsages = metadataUsageDic . Max ( x => x . Value . Max ( y => y . Key ) ) + 1 ;
0 commit comments