@@ -218,8 +218,7 @@ public async Task ImportImages()
218
218
219
219
if ( offsets ? . Count != G1Provider . G1Elements . Count )
220
220
{
221
- Logger . Error ( $ "Expected { G1Provider . G1Elements . Count } offsets, got { offsets ? . Count } offsets") ;
222
- return ;
221
+ Logger . Warning ( $ "Expected { G1Provider . G1Elements . Count } offsets, got { offsets ? . Count } offsets. Continue at your peril.") ;
223
222
}
224
223
225
224
foreach ( var offset in offsets )
@@ -235,8 +234,7 @@ public async Task ImportImages()
235
234
236
235
if ( files . Length != G1Provider . G1Elements . Count )
237
236
{
238
- Logger . Error ( $ "Expected { G1Provider . G1Elements . Count } offsets, got { files . Length } offsets") ;
239
- return ;
237
+ Logger . Warning ( $ "Expected { G1Provider . G1Elements . Count } images, got { files . Length } images. Continue at your peril.") ;
240
238
}
241
239
242
240
foreach ( var filename in files )
@@ -273,19 +271,28 @@ void LoadSprite(string filename, SpriteOffset? offset = null)
273
271
274
272
var index = int . Parse ( match . Groups [ 1 ] . Value ) ;
275
273
var img = Image . Load < Rgba32 > ( filename ) ;
276
- Images [ index ] = img ;
277
274
278
- var currG1 = G1Provider . G1Elements [ index ] ;
279
- currG1 = currG1 with
275
+ if ( index >= G1Provider . G1Elements . Count )
280
276
{
281
- Width = ( int16_t ) img . Width ,
282
- Height = ( int16_t ) img . Height ,
283
- Flags = currG1 . Flags & ~ G1ElementFlags . IsRLECompressed , // SawyerStreamWriter::SaveImageTable does this anyways
284
- ImageData = PaletteMap . ConvertRgba32ImageToG1Data ( img , currG1 . Flags ) ,
285
- XOffset = offset ? . X ?? currG1 . XOffset ,
286
- YOffset = offset ? . Y ?? currG1 . YOffset
287
- } ;
288
- G1Provider . G1Elements [ index ] = currG1 ;
277
+ var newElement = new G1Element32 ( 0 , ( int16_t ) img . Width , ( int16_t ) img . Height , 0 , 0 , ~ G1ElementFlags . IsRLECompressed , 0 ) ;
278
+ G1Provider . G1Elements . Insert ( index , newElement ) ;
279
+ Images . Insert ( index , img ) ; // update the UI
280
+ }
281
+ else
282
+ {
283
+ var currG1 = G1Provider . G1Elements [ index ] ;
284
+ currG1 = currG1 with
285
+ {
286
+ Width = ( int16_t ) img . Width ,
287
+ Height = ( int16_t ) img . Height ,
288
+ Flags = currG1 . Flags & ~ G1ElementFlags . IsRLECompressed , // SawyerStreamWriter::SaveImageTable does this anyways
289
+ ImageData = PaletteMap . ConvertRgba32ImageToG1Data ( img , currG1 . Flags ) ,
290
+ XOffset = offset ? . X ?? currG1 . XOffset ,
291
+ YOffset = offset ? . Y ?? currG1 . YOffset
292
+ } ;
293
+ G1Provider . G1Elements [ index ] = currG1 ;
294
+ Images [ index ] = img ; // update the UI
295
+ }
289
296
}
290
297
291
298
// todo: second half should be in model
0 commit comments