Files
toho-miku/util/rendering.js
Minzkraut 3f53e33598 WIP Card rendering
Render card stacks on drops
Unclaimed cards are hidden, when expired they are shown as grayscale
2022-08-20 03:35:36 +02:00

47 lines
1.5 KiB
JavaScript

const sharp = require('sharp');
const { Character } = require('../models');
module.exports = {
name: "Rendering",
renderCardStack: async function(cards) {
for (let card of cards) {
const character = await Character.findOne({
where: {
id: card.characterId
}
});
card.imageIdentifier = card.userId ? character.imageIdentifier : 'card_cover.png';
const cardImage = await sharp(`./assets/cards/${card.imageIdentifier}`);
if (card.userId === 1) {
cardImage.grayscale()
.modulate({
brightness: 0.5
});
}
card.preProcessed = await cardImage.png().toBuffer();
}
const image = await sharp({
create: {
width: 900,
height: 500,
channels: 4,
background: { r: 255, g: 0, b: 0, alpha: 0.5 }
}
})
.composite([
{ input: cards[0].preProcessed, gravity: 'northwest' },
{ input: cards[1].preProcessed, gravity: 'centre' },
{ input: cards[2].preProcessed, gravity: 'northeast' },
{ input: './assets/overlays/rainbow_overlay.png', gravity: 'northwest' },
{ input: './assets/overlays/rainbow_overlay.png', gravity: 'centre' },
{ input: './assets/overlays/rainbow_overlay.png', gravity: 'northeast' },
])
.png()
.toBuffer();
return image;
}
}