import React, { useEffect, useState } from 'react' import classnames from 'classnames' import SearchModal from '~components/SearchModal' import WeaponModal from '~components/WeaponModal' import UncapIndicator from '~components/UncapIndicator' import Button from '~components/Button' import { ButtonType } from '~utils/enums' import PlusIcon from '~public/icons/Add.svg' import './index.scss' interface Props { gridWeapon: GridWeapon | undefined unitType: 0 | 1 position: number editable: boolean updateObject: (object: Character | Weapon | Summon, position: number) => void updateUncap: (id: string, position: number, uncap: number) => void } const WeaponUnit = (props: Props) => { const [imageUrl, setImageUrl] = useState('') const classes = classnames({ WeaponUnit: true, 'mainhand': props.unitType == 0, 'grid': props.unitType == 1, 'editable': props.editable, 'filled': (props.gridWeapon !== undefined) }) const gridWeapon = props.gridWeapon const weapon = gridWeapon?.object useEffect(() => { generateImageUrl() }) function generateImageUrl() { let imgSrc = "" if (props.gridWeapon) { const weapon = props.gridWeapon.object! if (props.unitType == 0) { if (props.gridWeapon.object.element == 0 && props.gridWeapon.element) imgSrc = `${process.env.NEXT_PUBLIC_SIERO_IMG_URL}/weapon-main/${weapon.granblue_id}_${props.gridWeapon.element}.jpg` else imgSrc = `${process.env.NEXT_PUBLIC_SIERO_IMG_URL}/weapon-main/${weapon.granblue_id}.jpg` } else { if (props.gridWeapon.object.element == 0 && props.gridWeapon.element) imgSrc = `${process.env.NEXT_PUBLIC_SIERO_IMG_URL}/weapon-grid/${weapon.granblue_id}_${props.gridWeapon.element}.jpg` else imgSrc = `${process.env.NEXT_PUBLIC_SIERO_IMG_URL}/weapon-grid/${weapon.granblue_id}.jpg` } } setImageUrl(imgSrc) } function passUncapData(uncap: number) { if (props.gridWeapon) props.updateUncap(props.gridWeapon.id, props.position, uncap) } function canBeModified(gridWeapon: GridWeapon) { const weapon = gridWeapon.object return weapon.ax > 0 || (weapon.series) && [2, 3, 17, 22].includes(weapon.series) } const image = (