import { Button, FormControl, FormLabel, Switch } from '@mui/material'; import Slider from '@mui/material/Slider'; import { useEffect, useState } from 'react'; import { twc } from 'react-twc'; import { createInitialPlayers } from '../../../Data/getInitialPlayers'; import { theme } from '../../../Data/theme'; import { useAnalytics } from '../../../Hooks/useAnalytics'; import { useGlobalSettings } from '../../../Hooks/useGlobalSettings'; import { usePlayers } from '../../../Hooks/usePlayers'; import { Cog, Info } from '../../../Icons/generated'; import { GameFormat, InitialGameSettings, Orientation, } from '../../../Types/Settings'; import { InfoModal } from '../../Misc/InfoModal'; import { SettingsModal } from '../../Misc/SettingsModal'; import { SupportMe } from '../../Misc/SupportMe'; import { LayoutOptions } from './LayoutOptions'; const MainWrapper = twc.div`w-[100dvw] h-fit pb-14 overflow-hidden items-center flex flex-col`; const StartButtonFooter = twc.div`fixed bottom-4 z-1`; const ToggleButtonsWrapper = twc.div`flex flex-row justify-between items-center`; const ToggleContainer = twc.div`flex flex-col items-center`; const playerMarks = [ { value: 1, label: '1', }, { value: 2, label: '2', }, { value: 3, label: '3', }, { value: 4, label: '4', }, { value: 5, label: '5', }, { value: 6, label: '6', }, ]; const healthMarks = [ { value: 20, label: '20', }, { value: 30, label: '30', }, { value: 40, label: '40', }, { value: 50, label: '50', }, { value: 60, label: '60', }, ]; const Start = () => { const { setPlayers } = usePlayers(); const analytics = useAnalytics(); const { fullscreen, wakeLock, setShowPlay, initialGameSettings, setInitialGameSettings, settings, isPWA, } = useGlobalSettings(); const [openInfoModal, setOpenInfoModal] = useState(false); const [openSettingsModal, setOpenSettingsModal] = useState(false); const [playerOptions, setPlayerOptions] = useState( initialGameSettings || { numberOfPlayers: 4, startingLifeTotal: 40, useCommanderDamage: true, orientation: Orientation.Portrait, gameFormat: GameFormat.Commander, } ); const doStartGame = () => { if (!initialGameSettings) { return; } analytics.trackEvent('game_started', { ...initialGameSettings }); try { if (settings.goFullscreenOnStart) { fullscreen.enableFullscreen(); } } catch (error) { console.error(error); } if (settings.keepAwake && !wakeLock.active) { wakeLock.request(); } setInitialGameSettings(initialGameSettings); setPlayers(createInitialPlayers(initialGameSettings)); setShowPlay(true); localStorage.setItem('playing', 'false'); localStorage.setItem('showPlay', 'true'); }; useEffect(() => { setInitialGameSettings(playerOptions); }, [playerOptions, setInitialGameSettings]); const valuetext = (value: number) => { return `${value}`; }; useEffect(() => { setPlayerOptions({ ...playerOptions, }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [playerOptions.numberOfPlayers]); return ( { setOpenInfoModal(!openInfoModal); }} /> { setOpenInfoModal(false); }} isOpen={openInfoModal} /> { setOpenSettingsModal(false); }} isOpen={openSettingsModal} />

Life Trinket

Number of Players { setPlayerOptions({ ...playerOptions, numberOfPlayers: value as number, orientation: Orientation.Landscape, }); }} /> Starting Health setPlayerOptions({ ...playerOptions, startingLifeTotal: value as number, orientation: Orientation.Landscape, }) } /> Commander { if (value) { setPlayerOptions({ ...playerOptions, useCommanderDamage: value, numberOfPlayers: 4, startingLifeTotal: 40, orientation: Orientation.Landscape, }); return; } setPlayerOptions({ ...playerOptions, useCommanderDamage: value, numberOfPlayers: 2, startingLifeTotal: 20, orientation: Orientation.Landscape, }); }} /> Layout {/* setPlayerOptions({ ...playerOptions, gridAreas, //TODO fix the layout selection orientation: Orientation.Portrait, }) } /> */} { setPlayerOptions({ ...playerOptions, orientation, }); }} /> {!isPWA && (

If you're on iOS, this page works better if you{' '} hide the toolbar or{' '} add the app to your home screen.

)}
); }; export default Start;