diff --git a/src/Components/LifeCounter/LifeCounter.tsx b/src/Components/LifeCounter/LifeCounter.tsx index 59b9ed4..ce4f037 100644 --- a/src/Components/LifeCounter/LifeCounter.tsx +++ b/src/Components/LifeCounter/LifeCounter.tsx @@ -255,11 +255,7 @@ const LifeCounter = ({ player, opponents }: LifeCounterProps) => { {showPlayerMenu && ( - + )} ); diff --git a/src/Components/PlayerMenu/PlayerMenu.tsx b/src/Components/PlayerMenu/PlayerMenu.tsx index 9406b37..3bb5ba1 100644 --- a/src/Components/PlayerMenu/PlayerMenu.tsx +++ b/src/Components/PlayerMenu/PlayerMenu.tsx @@ -62,15 +62,10 @@ const CloseButton = styled.div<{ type PlayerMenuProps = { player: Player; - opponents: Player[]; setShowPlayerMenu: (showPlayerMenu: boolean) => void; }; -const PlayerMenu = ({ - player, - opponents, - setShowPlayerMenu, -}: PlayerMenuProps) => { +const PlayerMenu = ({ player, setShowPlayerMenu }: PlayerMenuProps) => { const handleOnClick = () => { setShowPlayerMenu(false); }; @@ -89,11 +84,7 @@ const PlayerMenu = ({ X - + ); }; diff --git a/src/Components/PlayerMenu/Settings.tsx b/src/Components/PlayerMenu/Settings.tsx index 9f2665b..d4b5e28 100644 --- a/src/Components/PlayerMenu/Settings.tsx +++ b/src/Components/PlayerMenu/Settings.tsx @@ -1,6 +1,5 @@ import { Button, Checkbox } from '@mui/material'; import styled, { css } from 'styled-components'; -import { InitialSettings } from '../../Data/getInitialPlayers'; import { theme } from '../../Data/theme'; import { useGlobalSettings } from '../../Hooks/useGlobalSettings'; import { @@ -130,13 +129,12 @@ const CheckboxContainer = styled.div<{ $rotation: Rotation }>` type SettingsProps = { player: Player; - opponents: Player[]; setShowPlayerMenu: (showPlayerMenu: boolean) => void; }; -const Settings = ({ player, opponents, setShowPlayerMenu }: SettingsProps) => { +const Settings = ({ player, setShowPlayerMenu }: SettingsProps) => { const { fullscreen, wakeLock, goToStart } = useGlobalSettings(); - const { updatePlayer } = usePlayers(); + const { updatePlayer, resetCurrentGame } = usePlayers(); const isSide = player.settings.rotation === Rotation.Side || player.settings.rotation === Rotation.SideFlipped; @@ -154,45 +152,7 @@ const Settings = ({ player, opponents, setShowPlayerMenu }: SettingsProps) => { }; const handleResetGame = () => { - const savedGameSettings = localStorage.getItem('initialGameSettings'); - - const initialGameSettings: InitialSettings = savedGameSettings - ? JSON.parse(savedGameSettings) - : null; - - if (!initialGameSettings) { - goToStart(); - } - - const startingPlayerIndex = Math.floor( - Math.random() * initialGameSettings.numberOfPlayers - ); - - [player, ...opponents].forEach((player: Player) => { - player.commanderDamage.map((damage) => { - damage.damageTotal = 0; - damage.partnerDamageTotal = 0; - }); - - player.extraCounters.map((counter) => { - counter.value = 0; - }); - - player.lifeTotal = initialGameSettings.startingLifeTotal; - - player.hasLost = false; - - const isStartingPlayer = player.index === startingPlayerIndex; - - player.isStartingPlayer = isStartingPlayer; - - if (player.isStartingPlayer) { - player.showStartingPlayer = true; - } - - updatePlayer(player); - }); - localStorage.setItem('playing', 'false'); + resetCurrentGame(); setShowPlayerMenu(false); }; diff --git a/src/Contexts/PlayersContext.tsx b/src/Contexts/PlayersContext.tsx index 31e2712..a1e9479 100644 --- a/src/Contexts/PlayersContext.tsx +++ b/src/Contexts/PlayersContext.tsx @@ -6,6 +6,7 @@ export type PlayersContextType = { setPlayers: (players: Player[]) => void; updatePlayer: (updatedPlayer: Player) => void; updateLifeTotal: (player: Player, updatedLifeTotal: number) => number; + resetCurrentGame: () => void; }; export const PlayersContext = createContext(null); diff --git a/src/Providers/PlayersProvider.tsx b/src/Providers/PlayersProvider.tsx index 82ef014..d91eaf5 100644 --- a/src/Providers/PlayersProvider.tsx +++ b/src/Providers/PlayersProvider.tsx @@ -2,6 +2,7 @@ import { ReactNode, useEffect } from 'react'; import { Player } from '../Types/Player'; import { useMemo, useState } from 'react'; import { PlayersContextType, PlayersContext } from '../Contexts/PlayersContext'; +import { InitialSettings } from '../Data/getInitialPlayers'; export const PlayersProvider = ({ children }: { children: ReactNode }) => { const savedPlayers = localStorage.getItem('players'); @@ -38,11 +39,54 @@ export const PlayersProvider = ({ children }: { children: ReactNode }) => { return difference; }; + const resetCurrentGame = () => { + const savedGameSettings = localStorage.getItem('initialGameSettings'); + + const initialGameSettings: InitialSettings = savedGameSettings + ? JSON.parse(savedGameSettings) + : null; + + if (!initialGameSettings) { + return; + } + + const startingPlayerIndex = Math.floor( + Math.random() * initialGameSettings.numberOfPlayers + ); + + players.forEach((player: Player) => { + player.commanderDamage.map((damage) => { + damage.damageTotal = 0; + damage.partnerDamageTotal = 0; + }); + + player.extraCounters.map((counter) => { + counter.value = 0; + }); + + player.lifeTotal = initialGameSettings.startingLifeTotal; + + player.hasLost = false; + + const isStartingPlayer = player.index === startingPlayerIndex; + + player.isStartingPlayer = isStartingPlayer; + + if (player.isStartingPlayer) { + player.showStartingPlayer = true; + } + + updatePlayer(player); + }); + localStorage.setItem('playing', 'false'); + }; + return { players, setPlayers, updatePlayer, updateLifeTotal, + resetCurrentGame, }; }, [players]);