place Bringer icon next to name in Leaderboard:sequential-extra-stats

This commit is contained in:
Nuno Duque Nunes 2026-06-22 06:06:00 +01:00
parent 1e0c0c7344
commit 2502b9e70b

View file

@ -36,7 +36,7 @@
function formatRow( function formatRow(
row: LeaderboardRow, row: LeaderboardRow,
context: NationContext, context: NationContext,
allNames: string[], allNameBlocks: string[],
allScores: string[], allScores: string[],
allKds: string[], allKds: string[],
allTgs: string[], allTgs: string[],
@ -62,12 +62,17 @@
const kdColumn = [...allKds, ...allDefs]; const kdColumn = [...allKds, ...allDefs];
const tgsColumn = [...allTgs, ...allHeals]; const tgsColumn = [...allTgs, ...allHeals];
const bringerTag = Layout.bringer(char as any, week);
const nameBlock = `${char.name}${bringerTag}`;
const paddedBlock = TextAlign.padToMax(nameBlock, allNameBlocks);
const cockroach = Layout.cockroach(char as any);
const tokens: Record<string, string> = { const tokens: Record<string, string> = {
rank: row.position ? formatRankOnly(row.position.currentRank, goalMet) : "—", rank: row.position ? formatRankOnly(row.position.currentRank, goalMet) : "—",
class: Emoji.class(classKey) || classKey || "?", class: Emoji.class(classKey) || classKey || "?",
name: TextAlign.padToMax(char.name, allNames), name: paddedBlock,
indicators: Layout.indicators(char as any, { week }), indicators: cockroach,
score: `${scoreEmoji} ${TextAlign.gap(4)}${TextAlign.padToMax(scoreText, scoreColumn)}`, score: `${scoreEmoji} ${TextAlign.padToMax(scoreText, scoreColumn)}`,
kd: TextAlign.gap(KD_GAP) + TextAlign.padToMax(kdText, kdColumn), kd: TextAlign.gap(KD_GAP) + TextAlign.padToMax(kdText, kdColumn),
tgs: TextAlign.gap(TGS_GAP) + TextAlign.padLeftToMax(tgText, tgsColumn), tgs: TextAlign.gap(TGS_GAP) + TextAlign.padLeftToMax(tgText, tgsColumn),
}; };
@ -97,8 +102,8 @@
const sortedCapella = [...capellaRows].sort(sortByPts); const sortedCapella = [...capellaRows].sort(sortByPts);
const sortedProcyon = [...procyonRows].sort(sortByPts); const sortedProcyon = [...procyonRows].sort(sortByPts);
const capellaNames = sortedCapella.map((r) => r.character.name); const capellaNameBlocks = sortedCapella.map((r) => `${r.character.name}${Layout.bringer(r.character as any, week)}`);
const procyonNames = sortedProcyon.map((r) => r.character.name); const procyonNameBlocks = sortedProcyon.map((r) => `${r.character.name}${Layout.bringer(r.character as any, week)}`);
const capellaScores = sortedCapella.map((r) => format.scoreBold(r.weeklyPts)); const capellaScores = sortedCapella.map((r) => format.scoreBold(r.weeklyPts));
const procyonScores = sortedProcyon.map((r) => format.scoreBold(r.weeklyPts)); const procyonScores = sortedProcyon.map((r) => format.scoreBold(r.weeklyPts));
const capellaKds = sortedCapella.map((r) => (r.totalKills || r.totalDeaths) ? format.kd(r.totalKills, r.totalDeaths) : "—"); const capellaKds = sortedCapella.map((r) => (r.totalKills || r.totalDeaths) ? format.kd(r.totalKills, r.totalDeaths) : "—");
@ -120,8 +125,8 @@
const capellaEmoji = Emoji.get("capella"); const capellaEmoji = Emoji.get("capella");
const procyonEmoji = Emoji.get("procyon"); const procyonEmoji = Emoji.get("procyon");
const capellaFormatted = sortedCapella.map((r) => formatRow(r, capContext, capellaNames, capellaScores, capellaKds, capellaTgs, capellaAtks, capellaDefs, capellaHeals, week)); const capellaFormatted = sortedCapella.map((r) => formatRow(r, capContext, capellaNameBlocks, capellaScores, capellaKds, capellaTgs, capellaAtks, capellaDefs, capellaHeals, week));
const procyonFormatted = sortedProcyon.map((r) => formatRow(r, proContext, procyonNames, procyonScores, procyonKds, procyonTgs, procyonAtks, procyonDefs, procyonHeals, week)); const procyonFormatted = sortedProcyon.map((r) => formatRow(r, proContext, procyonNameBlocks, procyonScores, procyonKds, procyonTgs, procyonAtks, procyonDefs, procyonHeals, week));
const embed = new EmbedBuilder() const embed = new EmbedBuilder()
.setTitle(`🏆 Weekly Leaderboard — ${week.weekKey}`) .setTitle(`🏆 Weekly Leaderboard — ${week.weekKey}`)