Skip to content

Commit 1211594

Browse files
committed
fix: GIF spritesheets not generated correctly
1 parent 90e5f38 commit 1211594

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

core/src/main/kotlin/com/mineinabyss/emojy/helpers/GifConverter.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,19 @@ class GifConverter(val gif: Gif, val resourcePack: ResourcePack) {
2222
gif.gifFile.inputStream().use(decoder::read)
2323
decoder.setFrameCount(frameCount)
2424

25-
var time = 0
26-
val totalTime = (0 until decoder.getFrameCount()).sumOf(decoder::getDelay)
27-
2825
val frames = buildList {
29-
if (gif.type == Gif.GifType.SPRITE) repeat(decoder.getFrameCount()) { this += decoder.getFrame(it) ?: return@repeat }
30-
else repeat(decoder.getFrameCount()) {
31-
val delay = decoder.getDelay(it)
32-
val start = time
33-
time += delay
34-
val end = time
35-
val image = toBufferedImage(decoder.getFrame(it) ?: return@repeat)
36-
this += generateFrame(image, start, end, totalTime)
26+
if (gif.type == Gif.GifType.SPRITE) repeat(decoder.getFrameCount()) { this += decoder.getFrame(it)?.let(::toBufferedImage) ?: return@repeat }
27+
else {
28+
var time = 0
29+
val totalTime = (0 until decoder.getFrameCount()).sumOf(decoder::getDelay)
30+
repeat(decoder.getFrameCount()) {
31+
val delay = decoder.getDelay(it)
32+
val start = time
33+
time += delay
34+
val end = time
35+
val image = toBufferedImage(decoder.getFrame(it)?.let(::toBufferedImage) ?: return@repeat)
36+
this += generateFrame(image, start, end, totalTime)
37+
}
3738
}
3839
}
3940

@@ -47,7 +48,7 @@ class GifConverter(val gif: Gif, val resourcePack: ResourcePack) {
4748
g.composite = AlphaComposite.Src
4849

4950
frames.forEachIndexed { i, frame ->
50-
g.drawImage(frame, i * width, 0, width, height, null)
51+
g.drawImage(frame, 0, i * height, width, height, null)
5152
}
5253
g.dispose()
5354

0 commit comments

Comments
 (0)