import { FC, useEffect, useState } from 'react'; import { LocalizeText, WiredFurniType } from '../../../../api'; import { Text } from '../../../../common'; import { useWired } from '../../../../hooks'; import iconRotateClockwise from '../../../../assets/images/wired/icon_wired_rotate_clockwise.png'; import iconRotateCounterClockwise from '../../../../assets/images/wired/icon_wired_rotate_counter_clockwise.png'; import { WiredDirectionIcon, WIRED_DIRECTION_GRID } from '../WiredDirectionIcon'; import { WiredActionBaseView } from './WiredActionBaseView'; import { WiredSourcesSelector } from '../WiredSourcesSelector'; const ROTATION_CLOCKWISE = 8; const ROTATION_COUNTER_CLOCKWISE = 9; interface DirectionExtraOption { value: number; icon: string; label: string; } interface DirectionPickerProps { name: string; title: string; noneLabel: string; value: number; onChange: (value: number) => void; extraOptions?: DirectionExtraOption[]; } const DirectionPicker: FC = props => { const { name = '', title = '', noneLabel = '', value = -1, onChange = null, extraOptions = [] } = props; return (
{ title }
{ WIRED_DIRECTION_GRID.flatMap((row, rowIndex) => row.map((direction, columnIndex) => { if(direction === null) { return
; } const selected = (value === direction); return ( ); })) }
{ extraOptions.length > 0 &&
{ extraOptions.map(option => ( )) }
}
); }; export const WiredActionMoveRotateUserView: FC<{}> = props => { const [ movementDirection, setMovementDirection ] = useState(-1); const [ rotationDirection, setRotationDirection ] = useState(-1); const { trigger = null, setIntParams = null } = useWired(); const [ userSource, setUserSource ] = useState(() => { if(trigger?.intData?.length > 2) return trigger.intData[2]; return 0; }); const save = () => setIntParams([ movementDirection, rotationDirection, userSource ]); const rotationExtraOptions: DirectionExtraOption[] = [ { value: ROTATION_CLOCKWISE, icon: iconRotateClockwise, label: LocalizeText('wiredfurni.params.rotatefurni.1') }, { value: ROTATION_COUNTER_CLOCKWISE, icon: iconRotateCounterClockwise, label: LocalizeText('wiredfurni.params.rotatefurni.2') } ]; useEffect(() => { setMovementDirection((trigger.intData.length > 0) ? trigger.intData[0] : -1); setRotationDirection((trigger.intData.length > 1) ? trigger.intData[1] : -1); setUserSource((trigger.intData.length > 2) ? trigger.intData[2] : 0); }, [ trigger ]); return ( }> ); };