diff --git a/src/events/gameMaster/assetManager/sprite/update.ts b/src/events/gameMaster/assetManager/sprite/update.ts index dfbaf28..cd64d9c 100644 --- a/src/events/gameMaster/assetManager/sprite/update.ts +++ b/src/events/gameMaster/assetManager/sprite/update.ts @@ -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 { + private async generateSpriteSheet(sprites: string[], spriteId: string, action: string): Promise { 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 } } }