import { FC, useEffect, useState } from 'react'; import { LocalizeText, WiredFurniType } from '../../../../api'; import { Text } from '../../../../common'; import { useWired } from '../../../../hooks'; import { WiredDirectionIcon, WIRED_DIRECTION_GRID } from '../WiredDirectionIcon'; import { WiredActionBaseView } from './WiredActionBaseView'; import { WiredSourcesSelector } from '../WiredSourcesSelector'; const rotationOptions: number[] = [ 0, 1, 2, 3, 4, 5, 6 ]; export const WiredActionMoveAndRotateFurniView: FC<{}> = props => { const [ movement, setMovement ] = useState(-1); const [ rotation, setRotation ] = useState(-1); const [ blockOnUserCollision, setBlockOnUserCollision ] = useState(false); const { trigger = null, setIntParams = null } = useWired(); const [ furniSource, setFurniSource ] = useState(() => { if(trigger?.intData?.length > 2) return trigger.intData[2]; return (trigger?.selectedItems?.length ?? 0) > 0 ? 100 : 0; }); const save = () => setIntParams([ movement, rotation, furniSource, blockOnUserCollision ? 1 : 0 ]); useEffect(() => { if(trigger.intData.length >= 2) { setMovement(trigger.intData[0]); setRotation(trigger.intData[1]); } else { setMovement(-1); setRotation(-1); } if(trigger.intData.length > 2) setFurniSource(trigger.intData[2]); else setFurniSource((trigger.selectedItems?.length ?? 0) > 0 ? 100 : 0); setBlockOnUserCollision((trigger.intData?.length ?? 0) > 3 ? trigger.intData[3] === 1 : false); }, [ trigger ]); const onChangeFurniSource = (next: number) => setFurniSource(next); const requiresFurni = WiredFurniType.STUFF_SELECTION_OPTION_BY_ID_BY_TYPE_OR_FROM_CONTEXT; return ( }>
{ LocalizeText('wiredfurni.params.startdir') }
{ WIRED_DIRECTION_GRID.flatMap((row, rowIndex) => row.map((direction, columnIndex) => { if(direction === null) { return
; } return ( ); })) }
{ LocalizeText('wiredfurni.params.turn') } { rotationOptions.map(option => { return (
setRotation(option) } /> { LocalizeText(`wiredfurni.params.turn.${ option }`) }
); }) }
{ LocalizeText('wiredfurni.params.user_collide') }
); };