import { Button, Checkbox } from '@mui/material'; import { useRef } from 'react'; import { twc } from 'react-twc'; import { theme } from '../../Data/theme'; import { useGlobalSettings } from '../../Hooks/useGlobalSettings'; import { usePlayers } from '../../Hooks/usePlayers'; import { useSafeRotate } from '../../Hooks/useSafeRotate'; import { Cross, Energy, Exit, Experience, FullscreenOff, FullscreenOn, PartnerTax, Poison, ResetGame, } from '../../Icons/generated'; import { Player, Rotation } from '../../Types/Player'; import { RotationButtonProps, RotationDivProps, } from '../Buttons/CommanderDamage'; const CheckboxContainer = twc.div``; const PlayerMenuWrapper = twc.div` flex flex-col absolute w-full h-full bg-background-settings items-center justify-center z-[2] webkit-user-select-none `; const BetterRowContainer = twc.div` flex flex-col flex-grow w-full h-full justify-end items-stretch `; const TogglesSection = twc.div` flex relative flex-row gap-2 justify-evenly `; const ButtonsSections = twc.div` flex max-w-full gap-4 justify-between p-[3%] items-center `; const ColorPicker = twc.input` absolute top-[5%] left-[5%] h-[8vmax] w-[8vmax] border-none outline-none cursor-pointer bg-transparent user-select-none text-common-white `; const SettingsContainer = twc.div((props) => [ 'flex flex-wrap h-full w-full', props.$rotation === Rotation.SideFlipped || props.$rotation === Rotation.Side ? 'flex-col' : 'flex-row', ]); const CloseButton = twc.button((props) => [ 'absolute border-none outline-none cursor-pointer bg-transparent z-[99]', props.$rotation === Rotation.Side ? `top-[5%] right-auto left-[5%]` : props.$rotation === Rotation.SideFlipped ? 'top-auto left-auto bottom-[5%] right-[5%]' : 'top-[15%] right-[5%]', ]); type PlayerMenuProps = { player: Player; setShowPlayerMenu: (showPlayerMenu: boolean) => void; }; const PlayerMenu = ({ player, setShowPlayerMenu }: PlayerMenuProps) => { const settingsContainerRef = useRef(null); const dialogRef = useRef(null); const { isSide } = useSafeRotate({ rotation: player.settings.rotation, containerRef: settingsContainerRef, }); const handleOnClick = () => { setShowPlayerMenu(false); }; const { fullscreen, wakeLock, goToStart } = useGlobalSettings(); const { updatePlayer, resetCurrentGame } = usePlayers(); const handleColorChange = (event: React.ChangeEvent) => { const updatedPlayer = { ...player, color: event.target.value }; updatePlayer(updatedPlayer); }; const handleSettingsChange = (event: React.ChangeEvent) => { const { name, checked } = event.target; const updatedSettings = { ...player.settings, [name]: checked }; const updatedPlayer = { ...player, settings: updatedSettings }; updatePlayer(updatedPlayer); }; const handleResetGame = () => { resetCurrentGame(); setShowPlayerMenu(false); }; const toggleFullscreen = () => { if (fullscreen.isFullscreen) { fullscreen.disableFullscreen(); } else { fullscreen.enableFullscreen(); } }; const buttonFontSize = isSide ? '1.5vmax' : '3vmin'; const iconSize = isSide ? '6vmin' : '3vmax'; const extraCountersSize = isSide ? '8vmin' : '4vmax'; const closeButtonSize = isSide ? '6vmin' : '3vmax'; const calcRotation = player.settings.rotation === Rotation.Side ? `${player.settings.rotation - 180}deg` : player.settings.rotation === Rotation.SideFlipped ? `${player.settings.rotation - 180}deg` : ''; return ( {player.settings.useCommanderDamage && ( } checkedIcon={ } onChange={handleSettingsChange} role="checkbox" aria-checked={player.settings.usePartner} aria-label="Partner" /> )} } checkedIcon={ } onChange={handleSettingsChange} role="checkbox" aria-checked={player.settings.usePoison} aria-label="Poison" /> } checkedIcon={ } onChange={handleSettingsChange} role="checkbox" aria-checked={player.settings.useEnergy} aria-label="Energy" /> } checkedIcon={ } onChange={handleSettingsChange} role="checkbox" aria-checked={player.settings.useExperience} aria-label="Experience" /> } checkedIcon={} onChange={toggleFullscreen} role="checkbox" aria-checked={document.fullscreenElement ? true : false} aria-label="Fullscreen" />

Reset Game?

); }; export default PlayerMenu;