forked from noxious/server
Stop task if image creation failed
This commit is contained in:
parent
7fd33aa36b
commit
876c96e2c6
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user