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