1
0
forked from noxious/server
This commit is contained in:
Dennis Postma 2024-12-20 23:51:39 +01:00
parent 3cf86e322c
commit bd8caaf27c

View File

@ -154,7 +154,24 @@ export default class SpriteUpdateEvent {
const idealCenter = Math.floor(frameWidth / 2) const idealCenter = Math.floor(frameWidth / 2)
const offset = Math.round(idealCenter - analysis.massCenter) 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({ return sharp({
create: { create: {
width: frameWidth, width: frameWidth,
@ -164,23 +181,17 @@ export default class SpriteUpdateEvent {
} }
}) })
.composite([{ .composite([{
input: await sharp(buffer) input: processedInput,
.resize({
kernel: sharp.kernel.nearest
})
.png({
compressionLevel: 9,
adaptiveFiltering: false,
palette: true
})
.toBuffer(),
left: offset, left: offset,
top: 0 top: 0,
blend: 'over'
}]) }])
.png({ .png({
compressionLevel: 9, compressionLevel: 9,
adaptiveFiltering: false, adaptiveFiltering: false,
palette: true palette: true,
quality: 100,
colors: 256
}) })
.toBuffer() .toBuffer()
} }
@ -316,7 +327,10 @@ export default class SpriteUpdateEvent {
.png({ .png({
compressionLevel: 9, compressionLevel: 9,
adaptiveFiltering: false, adaptiveFiltering: false,
palette: true palette: true,
quality: 100,
colors: 256,
dither: 0
}) })
.toBuffer() .toBuffer()
@ -324,12 +338,16 @@ export default class SpriteUpdateEvent {
.composite(frames.map((frame, index) => ({ .composite(frames.map((frame, index) => ({
input: frame.buffer, input: frame.buffer,
left: index * ISOMETRIC_CONFIG.tileWidth, left: index * ISOMETRIC_CONFIG.tileWidth,
top: 0 top: 0,
blend: 'over'
}))) })))
.png({ .png({
compressionLevel: 9, compressionLevel: 9,
adaptiveFiltering: false, adaptiveFiltering: false,
palette: true palette: true,
quality: 100,
colors: 256,
dither: 0
}) })
.toBuffer() .toBuffer()
} }