diff --git a/src/events/gameMaster/assetManager/sprite/update.ts b/src/events/gameMaster/assetManager/sprite/update.ts index cd64d9c..1b1f7f3 100644 --- a/src/events/gameMaster/assetManager/sprite/update.ts +++ b/src/events/gameMaster/assetManager/sprite/update.ts @@ -35,20 +35,22 @@ export default class SpriteUpdateEvent extends BaseEvent { // Update sprite in database await sprite.setName(data.name).save() + // First verify all sprite sheets can be generated + for (const actionData of data.spriteActions) { + if (!await this.generateSpriteSheet(actionData.sprites, sprite.getId(), actionData.action)) { + return callback(false) + } + } + const existingActions = sprite.getSpriteActions() - // Remove all existing actions - we'll recreate the ones we need + // Remove existing actions only after confirming sprite sheets generated successfully for (const existingAction of existingActions) { await spriteRepository.getEntityManager().removeAndFlush(existingAction) } // 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)