1- import { FC , useState } from "react" ;
1+ import { FC , useEffect , useState } from "react" ;
22import Button from "../Button" ;
33import GlobalLeaderBoard from "../GlobalLeaderBoard" ;
44import GlobalTPS from "../GlobalTPS" ;
@@ -8,20 +8,43 @@ import SelectContinentDialog from "../SelectContinentDialog";
88import Layout from "../Layout" ;
99import GlobalTotals from "../GlobalTotals" ;
1010import SetNameModal from "../SetNameModal" ;
11+ import { useAppContext } from "../../context/useAppContext" ;
1112
1213interface InitialViewProps {
1314 startGame : ( ) => void ;
1415}
1516
1617const InitialView : FC < InitialViewProps > = ( { startGame } ) => {
17- const [ modalData , setModalData ] = useState ( { title : "" , submit : ( ) => { } } ) ;
18+ const { setGameData } = useAppContext ( ) ;
19+ const pathSegments = window . location . pathname . split ( "/" ) . filter ( Boolean ) ;
20+ const [ modalData , setModalData ] = useState ( {
21+ title : "Join Multiplayer" ,
22+ submit : ( ) => {
23+ startGame ( ) ;
24+ } ,
25+ } ) ;
1826 const [ isWelcomeModalOpen , setIsWelcomeModalOpen ] = useState ( false ) ;
19- const [ isNameModalOpen , setIsNameModalOpen ] = useState ( false ) ;
27+ const [ isNameModalOpen , setIsNameModalOpen ] = useState (
28+ pathSegments [ 0 ] === "join" ,
29+ ) ;
2030 const [ isSelectContinentModalOpen , setIsSelectContinentModalOpen ] =
2131 useState ( false ) ;
32+ const code = pathSegments [ 1 ] ;
33+
34+ useEffect ( ( ) => {
35+ if ( code ) {
36+ setGameData ( ( prev ) => ( { ...prev , code : code , type : "join" } ) ) ;
37+ }
38+ } , [ code , setGameData ] ) ;
2239
2340 const handleClickPlaySolo = ( ) => {
2441 startGame ( ) ;
42+ setGameData ( ( prev ) => ( {
43+ ...prev ,
44+ code : "" ,
45+ petName : "" ,
46+ type : undefined ,
47+ } ) ) ;
2548 } ;
2649
2750 const handleClickStartMultiplayer = ( ) => {
@@ -32,6 +55,7 @@ const InitialView: FC<InitialViewProps> = ({ startGame }) => {
3255 } ,
3356 } ) ;
3457 setIsNameModalOpen ( true ) ;
58+ setGameData ( ( prev ) => ( { ...prev , type : "new" } ) ) ;
3559 } ;
3660
3761 const handleClickJoinMultiplayer = ( ) => {
@@ -41,6 +65,7 @@ const InitialView: FC<InitialViewProps> = ({ startGame }) => {
4165 startGame ( ) ;
4266 } ,
4367 } ) ;
68+ setGameData ( ( prev ) => ( { ...prev , type : "join" } ) ) ;
4469 setIsNameModalOpen ( true ) ;
4570 } ;
4671
0 commit comments