From 6409983705c3da58624fde0a8af75abfab1b136c Mon Sep 17 00:00:00 2001 From: Andrio Celos Date: Thu, 7 Mar 2024 10:51:35 +1100 Subject: [PATCH] Correct card name gradient on longer names --- TableturfBattleClient/index.html | 20 ++++++++++---------- TableturfBattleClient/src/CardDisplay.ts | 23 +++++++++++++++++++++-- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/TableturfBattleClient/index.html b/TableturfBattleClient/index.html index 96edf76..f8377db 100644 --- a/TableturfBattleClient/index.html +++ b/TableturfBattleClient/index.html @@ -32,17 +32,17 @@
This application requires JavaScript.
- - - - + + + - - - - - - + + + + + + + diff --git a/TableturfBattleClient/src/CardDisplay.ts b/TableturfBattleClient/src/CardDisplay.ts index 7fe05f0..5e6c785 100644 --- a/TableturfBattleClient/src/CardDisplay.ts +++ b/TableturfBattleClient/src/CardDisplay.ts @@ -9,6 +9,25 @@ class CardDisplay implements ICardElement { private static nextIdNumber = 0; + private static getGradientId(baseId: string, scale: number) { + if (scale >= 20) return baseId; + + const roundedScale = Math.round(scale * 20); + if (roundedScale >= 20) return baseId; + + const id = `${baseId}${roundedScale}`; + if (document.getElementById(id)) return id; + + const baseElement = document.getElementById(baseId); + if (!baseElement) + throw new Error(`Base gradient element '${baseId}' not found.`); + const el = baseElement!.cloneNode(true); + baseElement.insertAdjacentElement('afterend', el); + el.setAttribute('id', id); + el.setAttribute('gradientTransform', `translate(${-6350 / roundedScale + 317.5} 0) scale(${20 / roundedScale} 1)`); + return id; + } + constructor(card: Card, level: number, elementType: string = 'div') { this.idNumber = CardDisplay.nextIdNumber++; this.card = card; @@ -87,10 +106,10 @@ class CardDisplay implements ICardElement { text1.setAttribute('fill', '#6038FF'); break; case Rarity.Rare: - text1.setAttribute('fill', 'url("#rareGradient")'); + text1.setAttribute('fill', `url("#${CardDisplay.getGradientId('rareGradient', card.textScale)}")`); break; case Rarity.Fresh: - text1.setAttribute('fill', 'url("#freshGradient")'); + text1.setAttribute('fill', `url("#${CardDisplay.getGradientId('freshGradient', card.textScale)}")`); break; } if (card.line1 != null && card.line2 != null) {