@@ -16,6 +16,7 @@ public class UpdateFieldInfo
1616 public string Name ;
1717 public int Size ;
1818 public UpdateFieldType Format ;
19+ public Type EnumType ;
1920 }
2021
2122 public static class UpdateFields
@@ -64,15 +65,15 @@ private static bool LoadUFDictionariesInto(Dictionary<Type, SortedList<int, Upda
6465 } ;
6566
6667 bool loaded = false ;
67- foreach ( Type enumType in enumTypes )
68+ foreach ( Type ufEnumType in enumTypes )
6869 {
6970 string vTypeString =
70- $ "WowPacketParserModule.{ GetUpdateFieldDictionaryBuildName ( build ) } .Enums.{ enumType . Name } ";
71+ $ "WowPacketParserModule.{ GetUpdateFieldDictionaryBuildName ( build ) } .Enums.{ ufEnumType . Name } ";
7172 Type vEnumType = asm . GetType ( vTypeString ) ;
7273 if ( vEnumType == null )
7374 {
7475 vTypeString =
75- $ "WowPacketParser.Enums.Version.{ GetUpdateFieldDictionaryBuildName ( build ) } .{ enumType . Name } ";
76+ $ "WowPacketParser.Enums.Version.{ GetUpdateFieldDictionaryBuildName ( build ) } .{ ufEnumType . Name } ";
7677 vEnumType = Assembly . GetExecutingAssembly ( ) . GetType ( vTypeString ) ;
7778 if ( vEnumType == null )
7879 continue ; // versions prior to 4.3.0 do not have AreaTriggerField
@@ -86,22 +87,22 @@ private static bool LoadUFDictionariesInto(Dictionary<Type, SortedList<int, Upda
8687
8788 for ( int i = 0 ; i < vValues . Length ; ++ i )
8889 {
89- var format = enumType . GetMember ( vNames [ i ] )
90+ UpdateFieldAttribute attribute = ( UpdateFieldAttribute ) ufEnumType . GetMember ( vNames [ i ] )
9091 . SelectMany ( member => member . GetCustomAttributes ( typeof ( UpdateFieldAttribute ) , false ) )
9192 . Where ( attribute => ( ( UpdateFieldAttribute ) attribute ) . Version <= ClientVersion . VersionDefiningBuild )
92- . OrderByDescending ( attribute => ( ( UpdateFieldAttribute ) attribute ) . Version )
93- . Select ( attribute => ( ( UpdateFieldAttribute ) attribute ) . UFAttribute )
94- . DefaultIfEmpty ( UpdateFieldType . Default ) . First ( ) ;
93+ . OrderByDescending ( attribute => ( ( UpdateFieldAttribute ) attribute ) . Version ) . FirstOrDefault ( ) ; ;
94+ UpdateFieldType format = attribute ? . UFAttribute ?? UpdateFieldType . Default ;
95+ Type enumType = attribute ? . EnumType ?? null ;
9596
96- result . Add ( ( int ) vValues . GetValue ( i ) , new UpdateFieldInfo ( ) { Value = ( int ) vValues . GetValue ( i ) , Name = vNames [ i ] , Size = 0 , Format = format } ) ;
97+ result . Add ( ( int ) vValues . GetValue ( i ) , new UpdateFieldInfo ( ) { Value = ( int ) vValues . GetValue ( i ) , Name = vNames [ i ] , Size = 0 , Format = format , EnumType = enumType } ) ;
9798 namesResult . Add ( vNames [ i ] , ( int ) vValues . GetValue ( i ) ) ;
9899 }
99100
100101 for ( var i = 0 ; i < result . Count - 1 ; ++ i )
101102 result . Values [ i ] . Size = result . Keys [ i + 1 ] - result . Keys [ i ] ;
102103
103- dicts . Add ( enumType , result ) ;
104- nameToValueDict . Add ( enumType , namesResult ) ;
104+ dicts . Add ( ufEnumType , result ) ;
105+ nameToValueDict . Add ( ufEnumType , namesResult ) ;
105106 loaded = true ;
106107 }
107108
@@ -1009,6 +1010,7 @@ private static string GetUpdateFieldDictionaryBuildName(ClientVersionBuild build
10091010 case ClientVersionBuild . V11_2_7_64797 :
10101011 case ClientVersionBuild . V11_2_7_64877 :
10111012 case ClientVersionBuild . V11_2_7_64978 :
1013+ case ClientVersionBuild . V11_2_7_65299 :
10121014 {
10131015 return "V11_2_7_64632" ;
10141016 }
0 commit comments