hensei-web/components/UncapIndicator/index.tsx
Justin Edmund 7a50c4bce5 Pass down GridWeapon instead of Weapon
Previously, we stripped the Weapon out of the GridWeapon for simplicity. However, now that we need to display and manipulate data on the GridWeapon (unique data), we need to pass that down instead.
2022-02-01 05:06:27 -08:00

71 lines
No EOL
1.9 KiB
TypeScript

import React, { useState } from 'react'
import UncapStar from '~components/UncapStar'
import './index.scss'
interface Props {
type: 'character' | 'weapon' | 'summon'
rarity?: number
uncapLevel: number
flb: boolean
ulb?: boolean
updateUncap: (uncap: number) => void
}
const UncapIndicator = (props: Props) => {
const [uncap, setUncap] = useState(props.uncapLevel)
const numStars = setNumStars()
function setNumStars() {
let numStars
if (props.type === 'character') {
if (props.flb) {
numStars = 5
} else {
numStars = 4
}
} else {
if (props.ulb) {
numStars = 5
} else if (props.flb) {
numStars = 4
} else {
numStars = 3
}
}
return numStars
}
function toggleStar(index: number, empty: boolean) {
console.log("Toggling star!")
if (empty)
setUncap(index + 1)
else
setUncap(index)
}
return (
<ul className="UncapIndicator">
{
Array.from(Array(numStars)).map((x, i) => {
if (props.type === 'character' && i > 4) {
return <UncapStar ulb={true} empty={i >= uncap} key={`star_${i}`} index={i} onClick={toggleStar} />
} else if (
props.type === 'character' && i == 4 ||
props.type !== 'character' && i > 2) {
return <UncapStar flb={true} empty={i >= uncap} key={`star_${i}`} index={i} onClick={toggleStar} />
} else {
return <UncapStar empty={i >= uncap} key={`star_${i}`} index={i} onClick={toggleStar} />
}
})
}
</ul>
)
}
export default UncapIndicator