Stop task if image creation failed

This commit is contained in:
Dennis Postma 2025-01-30 02:50:06 +01:00
parent 7fd33aa36b
commit 876c96e2c6

View File

@ -44,6 +44,11 @@ export default class SpriteUpdateEvent extends BaseEvent {
// Create new actions
for (const actionData of data.spriteActions) {
// Generate sprite sheet for this action or return false
if (!await this.generateSpriteSheet(actionData.sprites, sprite.getId(), actionData.action)) {
return callback(false)
}
const spriteAction = new SpriteAction()
spriteAction.setSprite(sprite)
sprite.getSpriteActions().add(spriteAction)
@ -58,9 +63,6 @@ export default class SpriteUpdateEvent extends BaseEvent {
.setFrameRate(actionData.frameRate)
await spriteRepository.getEntityManager().persistAndFlush(spriteAction)
// Generate sprite sheet for this action
await this.generateSpriteSheet(actionData.sprites, sprite.getId(), actionData.action)
}
return callback(true)
@ -104,10 +106,10 @@ export default class SpriteUpdateEvent extends BaseEvent {
return Math.max(...heights)
}
private async generateSpriteSheet(sprites: string[], spriteId: string, action: string): Promise<void> {
private async generateSpriteSheet(sprites: string[], spriteId: string, action: string): Promise<boolean> {
try {
// Skip if no sprites
if (!sprites.length) return
if (!sprites.length) return true
// Process all base64 images to buffers and get their dimensions
const imageData = await Promise.all(
@ -172,9 +174,11 @@ export default class SpriteUpdateEvent extends BaseEvent {
// Save the sprite sheet
await fs.promises.writeFile(`${dir}/${action}.png`, spriteSheet)
return true
} catch (error) {
console.error('Error generating sprite sheet:', error)
throw error
return false
}
}
}