From ef2ccf95f4f67385080d0eeb573a82b24b7f5df5 Mon Sep 17 00:00:00 2001 From: dartz Date: Thu, 25 Jul 2024 18:46:41 -0400 Subject: [PATCH] Add image opacity support --- src/index.ts | 5 +++-- src/predictor.ts | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index 224f197..1108a40 100644 --- a/src/index.ts +++ b/src/index.ts @@ -106,7 +106,8 @@ if (!config.token) { case "simulate": var electionname = (i.options as CommandInteractionOptionResolver).getSubcommand(); var overlayimage = (i.options as CommandInteractionOptionResolver).getAttachment('image_overlay'); - + var overlayopacity = Number(i.options.get('image_opacity')?.value); + var election = structuredClone(Elections[electionname]); for (const candidate of election.candidates) { var option = (i.options as CommandInteractionOptionResolver).getString(candidate.party.toLowerCase().replace(/ /g, "_") + "_candidate"); @@ -152,7 +153,7 @@ if (!config.token) { return; } } - var result = await MakePrediction(election, overlayimage?.url); + var result = await MakePrediction(election, overlayimage?.url, overlayopacity ? Math.round((overlayopacity / 100) * 255) : 255); var embed = new EmbedBuilder() .setTitle(election.title) .setDescription(election.description.replace("$WINNER", result.winner)) diff --git a/src/predictor.ts b/src/predictor.ts index 3ec6f10..6e28072 100644 --- a/src/predictor.ts +++ b/src/predictor.ts @@ -5,7 +5,7 @@ import crypto from "crypto"; import Election from "./election.js"; import VoteType from './VoteType.js'; -export function MakePrediction(election : Election, overlay_image?: string) : Promise { +export function MakePrediction(election : Election, overlay_image?: string, overlay_opacity?: number) : Promise { return new Promise(async res => { const window = createSVGWindow(); registerWindow(window, window.document); @@ -50,7 +50,7 @@ export function MakePrediction(election : Election, overlay_image?: string) : Pr const overlay = await sharp(overlayBuffer) .composite([{ - input: Buffer.from([0, 0, 0, 255]), + input: Buffer.from([0, 0, 0, overlay_opacity !== undefined ? overlay_opacity : 255]), raw: { width: 1, height: 1,