@@ -24,14 +24,11 @@ namespace FancadeLoaderLib.Partial;
2424/// </remarks>
2525public partial class PartialPrefabList : ICloneable
2626{
27- /// <summary>
28- /// The id offset of this list, <see cref="RawGame.CurrentNumbStockPrefabs"/> by default.
29- /// </summary>
30- public ushort IdOffset = RawGame . CurrentNumbStockPrefabs ;
31-
3227 internal readonly Dictionary < ushort , PartialPrefab > _prefabs ;
3328 internal readonly List < PartialPrefabSegment > _segments ;
3429
30+ private ushort _idOffset = RawGame . CurrentNumbStockPrefabs ;
31+
3532 public PartialPrefabList ( )
3633 {
3734 _prefabs = [ ] ;
@@ -56,7 +53,7 @@ public PartialPrefabList(IEnumerable<PartialPrefab> prefabs)
5653
5754 _segments = [ .. SegmentsFromPrefabs ( _prefabs ) ] ;
5855
59- IdOffset = _prefabs . Min ( item => item . Key ) ;
56+ _idOffset = _prefabs . Min ( item => item . Key ) ;
6057 }
6158
6259 public PartialPrefabList ( PartialPrefabList other , bool deepCopy )
@@ -75,10 +72,36 @@ public PartialPrefabList(PartialPrefabList other, bool deepCopy)
7572 }
7673 }
7774
78- private PartialPrefabList ( Dictionary < ushort , PartialPrefab > dict )
75+ private PartialPrefabList ( Dictionary < ushort , PartialPrefab > dict , ushort idOffset )
7976 {
8077 _prefabs = dict ;
8178 _segments = [ .. SegmentsFromPrefabs ( _prefabs ) ] ;
79+ _idOffset = idOffset ;
80+ }
81+
82+ /// <summary>
83+ /// Gets or sets the id offset of this list, <see cref="RawGame.CurrentNumbStockPrefabs"/> by default.
84+ /// Specifies the lowest prefab id.
85+ /// </summary>
86+ /// <value>Id offset of this list.</value>
87+ public ushort IdOffset
88+ {
89+ get => _idOffset ;
90+ set
91+ {
92+ if ( value < _idOffset )
93+ {
94+ _idOffset = 0 ;
95+ DecreaseAfter ( 0 , ( ushort ) ( _idOffset - value ) ) ;
96+ _idOffset = value ;
97+ }
98+ else if ( value > _idOffset )
99+ {
100+ _idOffset = 0 ;
101+ IncreaseAfter ( 0 , ( ushort ) ( value - _idOffset ) ) ;
102+ _idOffset = value ;
103+ }
104+ }
82105 }
83106
84107 public int PrefabCount => _prefabs . Count ;
@@ -131,10 +154,7 @@ public static PartialPrefabList Load(FcBinaryReader reader)
131154 }
132155 }
133156
134- return new PartialPrefabList ( prefabs )
135- {
136- IdOffset = idOffset ,
137- } ;
157+ return new PartialPrefabList ( prefabs , idOffset ) ;
138158 }
139159
140160 public void Save ( FcBinaryWriter writer )
0 commit comments