@@ -18,6 +18,19 @@ namespace D2SSharp.Model;
1818[ JsonDerivedType ( typeof ( NormalScrollBookQualityData ) , "NormalScrollBook" ) ]
1919public abstract partial class ItemQualityData
2020{
21+ /// <summary>
22+ /// Gets the file index for this quality type, if applicable.
23+ /// Returns null for quality types that don't have a file index (Magic, Rare, Craft, Tempered, Charm, ScrollBook).
24+ /// </summary>
25+ public ushort ? FileIndex => this switch
26+ {
27+ InferiorQualityData inferior => inferior . InferiorFileIndex ,
28+ SuperiorQualityData superior => superior . SuperiorFileIndex ,
29+ SetUniqueQualityData setUnique => setUnique . SetUniqueFileIndex ,
30+ NormalBodyPartQualityData bodyPart => bodyPart . BodyPartFileIndex ,
31+ _ => null
32+ } ;
33+
2134 /// <summary>Writes the quality data to a BitWriter.</summary>
2235 /// <param name="writer">The BitWriter to write to.</param>
2336 /// <param name="magicPrefixOffset">Magic prefix ID offset from external data (applied to prefixes only).</param>
@@ -30,20 +43,20 @@ public abstract partial class ItemQualityData
3043public partial class InferiorQualityData : ItemQualityData
3144{
3245 /// <summary>Low quality type file index (0-7).</summary>
33- public byte FileIndex { get ; set ; }
46+ public byte InferiorFileIndex { get ; set ; }
3447
3548 public static InferiorQualityData Read ( ref BitReader reader )
3649 {
3750 return new InferiorQualityData
3851 {
39- FileIndex = ( byte ) reader . ReadBits ( 3 )
52+ InferiorFileIndex = ( byte ) reader . ReadBits ( 3 )
4053 } ;
4154 }
4255
4356 public override void Write ( ref BitWriter writer , int magicPrefixOffset = 0 )
4457 {
4558 // C++: clamps to 0-7 (3 bits)
46- writer . WriteBits ( Math . Clamp ( FileIndex , ( byte ) 0 , ( byte ) 7 ) , 3 ) ;
59+ writer . WriteBits ( Math . Clamp ( InferiorFileIndex , ( byte ) 0 , ( byte ) 7 ) , 3 ) ;
4760 }
4861}
4962
@@ -53,20 +66,20 @@ public override void Write(ref BitWriter writer, int magicPrefixOffset = 0)
5366public partial class SuperiorQualityData : ItemQualityData
5467{
5568 /// <summary>Superior type file index (0-7).</summary>
56- public byte FileIndex { get ; set ; }
69+ public byte SuperiorFileIndex { get ; set ; }
5770
5871 public static SuperiorQualityData Read ( ref BitReader reader )
5972 {
6073 return new SuperiorQualityData
6174 {
62- FileIndex = ( byte ) reader . ReadBits ( 3 )
75+ SuperiorFileIndex = ( byte ) reader . ReadBits ( 3 )
6376 } ;
6477 }
6578
6679 public override void Write ( ref BitWriter writer , int magicPrefixOffset = 0 )
6780 {
6881 // C++: clamps to 0-7 (3 bits)
69- writer . WriteBits ( Math . Clamp ( FileIndex , ( byte ) 0 , ( byte ) 7 ) , 3 ) ;
82+ writer . WriteBits ( Math . Clamp ( SuperiorFileIndex , ( byte ) 0 , ( byte ) 7 ) , 3 ) ;
7083 }
7184}
7285
@@ -118,20 +131,20 @@ public override void Write(ref BitWriter writer, int magicPrefixOffset = 0)
118131public partial class SetUniqueQualityData : ItemQualityData
119132{
120133 /// <summary>Set or Unique item file index (0-4095).</summary>
121- public ushort FileIndex { get ; set ; }
134+ public ushort SetUniqueFileIndex { get ; set ; }
122135
123136 public static SetUniqueQualityData Read ( ref BitReader reader )
124137 {
125138 return new SetUniqueQualityData
126139 {
127- FileIndex = ( ushort ) reader . ReadBits ( 12 )
140+ SetUniqueFileIndex = ( ushort ) reader . ReadBits ( 12 )
128141 } ;
129142 }
130143
131144 public override void Write ( ref BitWriter writer , int magicPrefixOffset = 0 )
132145 {
133146 // C++: clamps to 0-4095 (12 bits), also handles negative as 4095
134- writer . WriteBits ( Math . Clamp ( FileIndex , ( ushort ) 0 , ( ushort ) 4095 ) , 12 ) ;
147+ writer . WriteBits ( Math . Clamp ( SetUniqueFileIndex , ( ushort ) 0 , ( ushort ) 4095 ) , 12 ) ;
135148 }
136149}
137150
@@ -311,20 +324,20 @@ public override void Write(ref BitWriter writer, int magicPrefixOffset = 0)
311324public partial class NormalBodyPartQualityData : ItemQualityData
312325{
313326 /// <summary>Monster ID file index (0-1023).</summary>
314- public ushort FileIndex { get ; set ; }
327+ public ushort BodyPartFileIndex { get ; set ; }
315328
316329 public static NormalBodyPartQualityData Read ( ref BitReader reader )
317330 {
318331 return new NormalBodyPartQualityData
319332 {
320- FileIndex = ( ushort ) reader . ReadBits ( 10 )
333+ BodyPartFileIndex = ( ushort ) reader . ReadBits ( 10 )
321334 } ;
322335 }
323336
324337 public override void Write ( ref BitWriter writer , int magicPrefixOffset = 0 )
325338 {
326339 // C++: clamps to 0-1023 (10 bits)
327- writer . WriteBits ( Math . Clamp ( FileIndex , ( ushort ) 0 , ( ushort ) 1023 ) , 10 ) ;
340+ writer . WriteBits ( Math . Clamp ( BodyPartFileIndex , ( ushort ) 0 , ( ushort ) 1023 ) , 10 ) ;
328341 }
329342}
330343
0 commit comments