import React, { useState } from 'react' import { useModal as useModal } from '~utils/useModal' import SearchModal from '~components/SearchModal' import ExtraSummons from '~components/ExtraSummons' import SummonUnit from '~components/SummonUnit' import './index.scss' // GridType export enum GridType { Class, Character, Weapon, Summon } // Props interface Props { userId?: string partyId?: string main?: Summon | undefined friend?: Summon | undefined grid: GridArray editable: boolean exists: boolean found?: boolean onSelect: (type: GridType, summon: Summon, position: number) => void } const SummonGrid = (props: Props) => { const { open, openModal, closeModal } = useModal() const [searchPosition, setSearchPosition] = useState(0) const numSummons: number = 4 function openSearchModal(position: number) { setSearchPosition(position) openModal() } function receiveSummon(summon: Summon, position: number) { props.onSelect(GridType.Summon, summon, position) } function sendData(object: Character | Weapon | Summon, position: number) { if (isSummon(object)) { receiveSummon(object, position) } } function isSummon(object: Character | Weapon | Summon): object is Summon { // There aren't really any unique fields here return (object as Summon).granblue_id !== undefined } return (
Main Summon
{ openSearchModal(0) }} editable={props.editable} key="grid_main_summon" position={-1} unitType={0} summon={props.main} />
Friend Summon
{ openSearchModal(6) }} editable={props.editable} key="grid_friend_summon" position={6} unitType={2} summon={props.friend} />
Summons
    { Array.from(Array(numSummons)).map((x, i) => { return (
  • { openSearchModal(i) }} editable={props.editable} position={i} unitType={1} summon={props.grid[i]} />
  • ) }) }
{open ? ( ) : null}
) } export default SummonGrid