// src/pages/vistualNovelHandler.jsx import { useEffect, useState } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import '../css/global.css'; import { fetchYamlData } from './components/fetchYamlData'; import StoryPage from './storyPage'; import ConversationPage from './conversationPage.jsx'; import OptionPage from './optionPage.jsx'; import LoadingScene from './components/loadingScene.jsx'; import TransitionPage from './transitionPage.jsx'; function VitualNovelHandler() { const [data, setData] = useState(null); const [error, setError] = useState(null); const [currentStep, setCurrentStep] = useState(0); const navigate = useNavigate(); const { step } = useParams(); useEffect(() => { const loadData = async () => { try { const parsedData = await fetchYamlData({ src: '/yml/DialogPorsche.yml' }); if (!Array.isArray(parsedData)) { throw new Error('YAML data is not an array'); } setData(parsedData); } catch (error) { setError(error.message); } }; loadData(); }, []); useEffect(() => { // Update the current step from the URL parameter if (step && !isNaN(step)) { setCurrentStep(parseInt(step, 10)); } }, [step]); if (error) { return
Error loading YAML data: {error}
; } if (!data) { return
Loading...
; } const handleNextStep = (nextstep) => { // console.log(data); console.log(nextstep) if (typeof nextstep !== 'number' || Number.isNaN(nextstep)) { navigate(`/end`);//44 is last page } else{ setCurrentStep(nextstep); navigate(`/vs/${nextstep}`); } }; const currentStepData = data[currentStep] === null ? "end" : data[currentStep]; const renderComponent = (type) => { switch (type) { case "story": return ; case "conversation": return ; case "option": return ; case "transition": return default: return ; } }; return (
{renderComponent(currentStepData.type === null ? "end" : currentStepData.type)}
); } export default VitualNovelHandler;