reset game button

This commit is contained in:
Viktor Rådberg
2023-09-18 18:24:38 +02:00
parent 44b4e9f809
commit e47b685daa
7 changed files with 82 additions and 18 deletions

View File

@@ -13,14 +13,7 @@ import { Player, Rotation } from '../../Types/Player';
import { WakeLock } from '../../Types/WakeLock';
import { useFullscreen } from '../../Hooks/useFullscreen';
import { theme } from '../../Data/theme';
type SettingsProps = {
player: Player;
opponents: Player[];
onChange: (updatedPlayer: Player) => void;
resetCurrentGame: () => void;
wakeLock: WakeLock;
};
import { InitialSettings } from '../../Data/getInitialPlayers';
const SettingsContainer = styled.div<{
$rotation: Rotation;
@@ -135,11 +128,22 @@ const CheckboxContainer = styled.div<{ $rotation: Rotation }>`
}}
`;
type SettingsProps = {
player: Player;
opponents: Player[];
onChange: (updatedPlayer: Player) => void;
resetCurrentGame: () => void;
wakeLock: WakeLock;
setShowPlayerMenu: (showPlayerMenu: boolean) => void;
};
const Settings = ({
player,
onChange,
resetCurrentGame,
wakeLock,
opponents,
setShowPlayerMenu,
}: SettingsProps) => {
const { disableFullscreen, enableFullscreen, isFullscreen } = useFullscreen();
const isSide =
@@ -168,11 +172,50 @@ const Settings = ({
};
const handleResetGame = () => {
resetCurrentGame();
const savedGameSettings = localStorage.getItem('initialGameSettings');
const initialGameSettings: InitialSettings = savedGameSettings
? JSON.parse(savedGameSettings)
: null;
if (!initialGameSettings) {
resetCurrentGame();
}
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;
}
onChange(player);
});
localStorage.setItem('playing', 'false');
setShowPlayerMenu(false);
};
const handleNewGame = () => {
handleResetGame();
resetCurrentGame();
};
const toggleFullscreen = () => {
@@ -348,6 +391,22 @@ const Settings = ({
>
Keep Awake
</Button>
<Button
variant="contained"
style={{
cursor: 'pointer',
userSelect: 'none',
fontSize: buttonFontSize,
padding: '0 4px 0 4px',
}}
onClick={handleResetGame}
role="checkbox"
aria-checked={wakeLock.active}
aria-label="Reset Game"
>
Reset Game
</Button>
</ButtonsSections>
</SettingsContainer>
);