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]);