import { ConditionDefinition, Nitro, TriggerDefinition, WiredActionDefinition, WiredFurniActionEvent, WiredFurniConditionEvent, WiredFurniTriggerEvent } from 'nitro-renderer'; import { FC, useCallback, useEffect, useState } from 'react'; import { CreateMessageHook } from '../../hooks/messages'; import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../layout'; import { LocalizeText } from '../../utils/LocalizeText'; import { WiredActionBaseView } from './views/actions/base/WiredActionBaseView'; import { WiredConditionBaseView } from './views/conditions/base/WiredConditionBaseView'; import { WiredTriggerBaseView } from './views/triggers/base/WiredTriggerBaseView'; import { WiredFurniSelectorViewProps } from './WiredView.types'; export const WiredView: FC = props => { const [ wiredDefinition, setWiredDefinition ] = useState(null); const [ name, setName ] = useState(null); const [ description, setDescription ] = useState(null); useEffect(() => { if(!wiredDefinition) return; const itemData = Nitro.instance.sessionDataManager.getFloorItemData(wiredDefinition.spriteId); if(!itemData) return; setName(itemData.name); setDescription(itemData.description); }, [ wiredDefinition ]); const getWiredType = useCallback(() => { if(wiredDefinition instanceof TriggerDefinition) return 'trigger'; else if(wiredDefinition instanceof ConditionDefinition) return 'condition'; else return 'action'; }, [ wiredDefinition ]); const getTypeBase = useCallback(() => { if(wiredDefinition instanceof TriggerDefinition) return ; else if(wiredDefinition instanceof ConditionDefinition) return ; else return ; }, [ wiredDefinition ]); const onWiredFurniEvent = useCallback((event: WiredFurniTriggerEvent | WiredFurniConditionEvent | WiredFurniActionEvent) => { setWiredDefinition(event.getParser().definition); }, [ setWiredDefinition ]); CreateMessageHook(WiredFurniTriggerEvent, onWiredFurniEvent); CreateMessageHook(WiredFurniConditionEvent, onWiredFurniEvent); CreateMessageHook(WiredFurniActionEvent, onWiredFurniEvent); if(!wiredDefinition) return null; return ( {} } />
{ name }
{ description }
{ getTypeBase() }
); };