From bd8caaf27cd1c55d0d8598e3756a64e7be378f20 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Fri, 20 Dec 2024 23:51:39 +0100 Subject: [PATCH] POC 2 --- .../gameMaster/assetManager/sprite/update.ts | 50 +++++++++++++------ 1 file changed, 34 insertions(+), 16 deletions(-) diff --git a/src/socketEvents/gameMaster/assetManager/sprite/update.ts b/src/socketEvents/gameMaster/assetManager/sprite/update.ts index c52006b..0458f9e 100644 --- a/src/socketEvents/gameMaster/assetManager/sprite/update.ts +++ b/src/socketEvents/gameMaster/assetManager/sprite/update.ts @@ -154,7 +154,24 @@ export default class SpriteUpdateEvent { const idealCenter = Math.floor(frameWidth / 2) const offset = Math.round(idealCenter - analysis.massCenter) - // Create a new blank canvas with the target dimensions + // Process the input sprite + const processedInput = await sharp(buffer) + .ensureAlpha() + .resize({ + kernel: sharp.kernel.nearest, + fit: 'contain', + position: 'center' + }) + .png({ + compressionLevel: 9, + adaptiveFiltering: false, + palette: true, + quality: 100, + colors: 256 + }) + .toBuffer() + + // Create the final composition return sharp({ create: { width: frameWidth, @@ -164,23 +181,17 @@ export default class SpriteUpdateEvent { } }) .composite([{ - input: await sharp(buffer) - .resize({ - kernel: sharp.kernel.nearest - }) - .png({ - compressionLevel: 9, - adaptiveFiltering: false, - palette: true - }) - .toBuffer(), + input: processedInput, left: offset, - top: 0 + top: 0, + blend: 'over' }]) .png({ compressionLevel: 9, adaptiveFiltering: false, - palette: true + palette: true, + quality: 100, + colors: 256 }) .toBuffer() } @@ -316,7 +327,10 @@ export default class SpriteUpdateEvent { .png({ compressionLevel: 9, adaptiveFiltering: false, - palette: true + palette: true, + quality: 100, + colors: 256, + dither: 0 }) .toBuffer() @@ -324,12 +338,16 @@ export default class SpriteUpdateEvent { .composite(frames.map((frame, index) => ({ input: frame.buffer, left: index * ISOMETRIC_CONFIG.tileWidth, - top: 0 + top: 0, + blend: 'over' }))) .png({ compressionLevel: 9, adaptiveFiltering: false, - palette: true + palette: true, + quality: 100, + colors: 256, + dither: 0 }) .toBuffer() }