From 0495c7c8f7d60166f424727cd487d28a2a15937d Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Sun, 29 Jan 2023 21:00:25 -0800 Subject: [PATCH] Add character mod data to hovercard --- components/CharacterHovercard/index.scss | 53 +++++++++ components/CharacterHovercard/index.tsx | 143 ++++++++++++++++++++++- components/Hovercard/index.scss | 2 + data/overMastery.tsx | 51 ++++++++ 4 files changed, 245 insertions(+), 4 deletions(-) diff --git a/components/CharacterHovercard/index.scss b/components/CharacterHovercard/index.scss index e69de29b..1ab4b2bd 100644 --- a/components/CharacterHovercard/index.scss +++ b/components/CharacterHovercard/index.scss @@ -0,0 +1,53 @@ +.Character.HovercardContent { + .Mastery { + display: flex; + flex-direction: column; + gap: $unit; + + ul { + display: flex; + flex-direction: column; + gap: $unit-half; + + .ExtendedMastery { + align-items: center; + display: flex; + gap: $unit-half; + + img { + width: $unit-3x; + } + + strong { + font-weight: $bold; + } + } + } + } + + .Awakening { + display: flex; + flex-direction: column; + gap: $unit; + + & > div { + align-items: center; + display: flex; + gap: $unit-half; + + img { + width: $unit-3x; + } + + strong { + font-weight: $bold; + } + } + } + + // .Footer { + // position: sticky; + // bottom: 0; + // left: 0; + // } +} diff --git a/components/CharacterHovercard/index.tsx b/components/CharacterHovercard/index.tsx index bd2802d9..8a2989d5 100644 --- a/components/CharacterHovercard/index.tsx +++ b/components/CharacterHovercard/index.tsx @@ -10,7 +10,15 @@ import { import WeaponLabelIcon from '~components/WeaponLabelIcon' import UncapIndicator from '~components/UncapIndicator' +import { + overMastery, + aetherialMastery, + permanentMastery, +} from '~data/overMastery' +import { ExtendedMastery } from '~types' + import './index.scss' +import { characterAwakening } from '~data/awakening' interface Props { gridCharacter: GridCharacter @@ -70,6 +78,128 @@ const CharacterHovercard = (props: Props) => { return imgSrc } + function masteryElement(dictionary: ItemSkill[], mastery: ExtendedMastery) { + const canonicalMastery = dictionary.find( + (item) => item.id === mastery.modifier + ) + + if (canonicalMastery) { + return ( +
  • + {canonicalMastery.name[locale]} + + {canonicalMastery.name[locale]}  + {`+${mastery.strength}${canonicalMastery.suffix}`} + +
  • + ) + } + } + + const overMasterySection = () => { + if (props.gridCharacter && props.gridCharacter.over_mastery) { + return ( +
    +
    + {t('modals.characters.subtitles.ring')} +
    + +
    + ) + } + } + + const aetherialMasterySection = () => { + if ( + props.gridCharacter && + props.gridCharacter.aetherial_mastery && + props.gridCharacter.aetherial_mastery.modifier > 0 + ) { + return ( +
    +
    + {t('modals.characters.subtitles.earring')} +
    + +
    + ) + } + } + + const permanentMasterySection = () => { + if (props.gridCharacter && props.gridCharacter.perpetuity) { + return ( +
    +
    + {t('modals.characters.subtitles.permanent')} +
    + +
    + ) + } + } + + const awakeningSection = () => { + const gridAwakening = props.gridCharacter.awakening + const awakening = characterAwakening.find( + (awakening) => awakening.id === gridAwakening?.type + ) + + if (gridAwakening && awakening) { + return ( +
    +
    + {t('modals.characters.subtitles.awakening')} +
    +
    + {gridAwakening.type > 1 ? ( + {awakening.name[locale]} + ) : ( + '' + )} + + {`${awakening.name[locale]}`}  + {`Lv${gridAwakening.level}`} + +
    +
    + ) + } + } + return ( @@ -116,10 +246,15 @@ const CharacterHovercard = (props: Props) => { /> - - - {t('buttons.wiki')} - + {awakeningSection()} + {overMasterySection()} + {aetherialMasterySection()} + {permanentMasterySection()} +
    + + {t('buttons.wiki')} + +
    ) diff --git a/components/Hovercard/index.scss b/components/Hovercard/index.scss index 02f16458..8018b0c7 100644 --- a/components/Hovercard/index.scss +++ b/components/Hovercard/index.scss @@ -7,6 +7,8 @@ display: flex; flex-direction: column; gap: $unit-2x; + max-height: 30vh; + overflow-y: scroll; padding: $unit-2x; width: 300px; diff --git a/data/overMastery.tsx b/data/overMastery.tsx index 74aa353d..969dc942 100644 --- a/data/overMastery.tsx +++ b/data/overMastery.tsx @@ -330,3 +330,54 @@ export const aetherialMastery: ItemSkill[] = [ fractional: false, }, ] + +export const permanentMastery: ItemSkill[] = [ + { + name: { + en: 'Extended Mastery Star Cap', + ja: 'LB強化回数上限', + }, + id: 1, + slug: 'star-cap', + minValue: 10, + maxValue: 10, + suffix: '', + fractional: false, + }, + { + name: { + en: 'ATK', + ja: '攻撃', + }, + id: 2, + slug: 'atk', + minValue: 10, + maxValue: 10, + suffix: '%', + fractional: false, + }, + { + name: { + en: 'HP', + ja: 'HP', + }, + id: 3, + slug: 'hp', + minValue: 10, + maxValue: 10, + suffix: '', + fractional: false, + }, + { + name: { + en: 'DMG Cap', + ja: 'ダメージ上限', + }, + id: 4, + slug: 'dmg-cap', + minValue: 5, + maxValue: 5, + suffix: '%', + fractional: false, + }, +]