wip start menu

This commit is contained in:
Vikeo
2023-07-08 15:34:42 +02:00
parent 1dc679e2d3
commit 7c0fc5da37
3 changed files with 33 additions and 17 deletions

View File

@@ -1,8 +1,9 @@
import { useEffect, useState } from 'react';
import './App.css';
import { Player } from './Types/Player';
import { createInitialPlayers } from './Data/getInitialPlayers';
import Play from './Components/Views/Play';
import StartMenu from './Components/Views/StartMenu';
import { InitialSettings } from './Data/getInitialPlayers';
import { GridTemplateAreas } from './Data/getGridTemplateAreas';
export const initialPlayerOptions = {
@@ -15,13 +16,12 @@ export const initialPlayerOptions = {
const App = () => {
const savedPlayers = localStorage.getItem('players');
const [players, setPlayers] = useState<Player[]>(
savedPlayers
? JSON.parse(savedPlayers)
: createInitialPlayers(initialPlayerOptions)
);
const [initialPlayerOptions, setInitialPlayerOptions] =
useState<InitialSettings | null>(null);
const [gridAreas, setGridAreas] = useState(initialPlayerOptions.gridAreas);
const [players, setPlayers] = useState<Player[]>(
savedPlayers ? JSON.parse(savedPlayers) : []
);
useEffect(() => {
localStorage.setItem('players', JSON.stringify(players));
@@ -34,21 +34,20 @@ const App = () => {
setPlayers(updatedPlayers);
};
if (players) {
if (players && initialPlayerOptions) {
return (
<Play
players={players}
onPlayerChange={handlePlayerChange}
gridAreas={gridAreas}
gridAreas={initialPlayerOptions?.gridAreas}
/>
);
}
return (
<Play
players={players}
onPlayerChange={handlePlayerChange}
gridAreas={gridAreas}
<StartMenu
setInitialPlayerOptions={setInitialPlayerOptions}
setPlayers={setPlayers}
/>
);
};

View File

@@ -1,4 +1,7 @@
import { useState } from 'react';
import styled from 'styled-components';
import { GridTemplateAreas } from '../../Data/getGridTemplateAreas';
import { InitialSettings } from '../../Data/getInitialPlayers';
import { Player } from '../../Types/Player';
const MainWrapper = styled.div`
@@ -8,12 +11,26 @@ const MainWrapper = styled.div`
`;
type StartProps = {
players: Player[];
setInitialPlayerOptions: (options: InitialSettings) => void;
setPlayers: (updatedPlayer: Player[]) => void;
};
const Start = ({ players, setPlayers }: StartProps) => {
return <MainWrapper></MainWrapper>;
const Start = ({ setInitialPlayerOptions, setPlayers }: StartProps) => {
const [playerOptions, setPlayerOptions] = useState<InitialSettings>({
numberOfPlayers: 4,
startingLifeTotal: 40,
useCommanderDamage: true,
gridAreas: GridTemplateAreas.FourPlayers,
});
const handleFourPlayersSet = () => {
setInitialPlayerOptions(playerOptions);
};
return (
<MainWrapper>
<button onClick={handleFourPlayersSet}>4 Players</button>
</MainWrapper>
);
};
export default Start;

View File

@@ -1,7 +1,7 @@
import { Player, Rotation } from '../Types/Player';
import { GridTemplateAreas } from './getGridTemplateAreas';
type InitialSettings = {
export type InitialSettings = {
startingLifeTotal: number;
useCommanderDamage: boolean;
numberOfPlayers: number;