Skip to content

Commit 74cc120

Browse files
committed
allow arbitrary number of images imported
1 parent 20a5c2e commit 74cc120

File tree

1 file changed

+22
-15
lines changed

1 file changed

+22
-15
lines changed

Gui/ViewModels/SubObjectTypes/ImageTableViewModel.cs

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,7 @@ public async Task ImportImages()
218218

219219
if (offsets?.Count != G1Provider.G1Elements.Count)
220220
{
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.");
223222
}
224223

225224
foreach (var offset in offsets)
@@ -235,8 +234,7 @@ public async Task ImportImages()
235234

236235
if (files.Length != G1Provider.G1Elements.Count)
237236
{
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.");
240238
}
241239

242240
foreach (var filename in files)
@@ -273,19 +271,28 @@ void LoadSprite(string filename, SpriteOffset? offset = null)
273271

274272
var index = int.Parse(match.Groups[1].Value);
275273
var img = Image.Load<Rgba32>(filename);
276-
Images[index] = img;
277274

278-
var currG1 = G1Provider.G1Elements[index];
279-
currG1 = currG1 with
275+
if (index >= G1Provider.G1Elements.Count)
280276
{
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+
}
289296
}
290297

291298
// todo: second half should be in model

0 commit comments

Comments
 (0)