front: GameBoard to reflect selected player fron NewGame
This commit is contained in:
parent
567160caa1
commit
eb4a255a90
@ -1,19 +1,20 @@
|
|||||||
import './GameBoard.css'
|
import './GameBoard.css'
|
||||||
import React, { useState } from 'react'
|
import React from 'react'
|
||||||
import Board from './GameBoard/Board'
|
import Board from './GameBoard/Board'
|
||||||
import { WHITE, BLACK } from './Stone'
|
import { WHITE, BLACK } from './Stone'
|
||||||
import { Player } from './Player'
|
import { Player } from './Player'
|
||||||
|
|
||||||
|
import { AppContext } from '../../context/app'
|
||||||
|
|
||||||
export default function GameBoard() {
|
export default function GameBoard() {
|
||||||
|
|
||||||
const [whiteName] = useState('');
|
const [ctx] = React.useContext(AppContext)
|
||||||
const [blackName] = useState('');
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='game-board'>
|
<div className='game-board'>
|
||||||
<Player color={WHITE()} name={whiteName} />
|
<Player color={WHITE()} name={ctx.newGame.whitePlayer} />
|
||||||
<Board />
|
<Board />
|
||||||
<Player color={BLACK()} name={blackName} />
|
<Player color={BLACK()} name={ctx.newGame.blackPlayer} />
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
.new-game {
|
.new-game {
|
||||||
margin-top: 70px;
|
margin-top: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.new-game * {
|
.new-game * {
|
||||||
width: 230px;
|
width: 230px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.new-game .container {
|
.new-game div {
|
||||||
margin-top: 40px;
|
margin-top: 25px;
|
||||||
margin-bottom: 40px;
|
margin-bottom: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.new-game .stone {
|
.new-game .stone {
|
||||||
|
@ -1,18 +1,15 @@
|
|||||||
import './NewGame.css';
|
import './NewGame.css';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { AppData } from '../../context/data'
|
import { AppData } from '../../context/data'
|
||||||
|
import { AppContext } from '../../context/app'
|
||||||
import { useLocation, matchPath } from "react-router";
|
import { useLocation, matchPath } from "react-router";
|
||||||
import { SelectPlayer } from './Player';
|
import { SelectPlayer } from './Player';
|
||||||
import { WhiteStone, BlackStone } from './Stone';
|
import { WhiteStone, BlackStone } from './Stone';
|
||||||
|
|
||||||
// import { AppContext } from '../../context/app'
|
|
||||||
|
|
||||||
export default function NewGame() {
|
export default function NewGame() {
|
||||||
// const [ctx, dispatchCtx] = React.useContext(AppContext)
|
const [ctx, dispatchCtx] = React.useContext(AppContext)
|
||||||
const [data] = React.useContext(AppData)
|
const [data] = React.useContext(AppData)
|
||||||
const [whiteName, setWhiteName] = React.useState('');
|
|
||||||
const [blackName, setBlackName] = React.useState('');
|
|
||||||
|
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
const isMyPath = matchPath("/game/new", pathname);
|
const isMyPath = matchPath("/game/new", pathname);
|
||||||
|
|
||||||
@ -32,15 +29,24 @@ export default function NewGame() {
|
|||||||
const blackOptions = Array(nameOptions)
|
const blackOptions = Array(nameOptions)
|
||||||
blackOptions.push(<option key='default' value=''>{'select …'}</option>)
|
blackOptions.push(<option key='default' value=''>{'select …'}</option>)
|
||||||
|
|
||||||
|
const setWhitePlayer = (name) => {
|
||||||
|
dispatchCtx({ component: "new-game", whitePlayer: name })
|
||||||
|
}
|
||||||
|
|
||||||
|
const setBlackPlayer = (name) => {
|
||||||
|
dispatchCtx({ component: "new-game", blackPlayer: name })
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='new-game'>
|
<div className='new-game'>
|
||||||
<div className='container'>
|
<div>
|
||||||
<WhiteStone/> player
|
<WhiteStone/>
|
||||||
<SelectPlayer name={whiteName} setName={setWhiteName} nameOptions={whiteOptions} />
|
<SelectPlayer name={ctx.newGame.whitePlayer} setName={setWhitePlayer} nameOptions={whiteOptions} />
|
||||||
</div>
|
</div>
|
||||||
<div className='container'>
|
<div>- vs -</div>
|
||||||
<SelectPlayer name={blackName} setName={setBlackName} nameOptions={blackOptions} />
|
<div>
|
||||||
<BlackStone/> player
|
<SelectPlayer name={ctx.newGame.blackPlayer} setName={setBlackPlayer} nameOptions={blackOptions} />
|
||||||
|
<BlackStone/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -5,6 +5,9 @@ export const reducer = (state, action) => {
|
|||||||
case "game-selector":
|
case "game-selector":
|
||||||
return GameSelector_update(state, action)
|
return GameSelector_update(state, action)
|
||||||
|
|
||||||
|
case "new-game":
|
||||||
|
return NewGame_update(state, action)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
console.warn("Unknown action.component", action.component)
|
console.warn("Unknown action.component", action.component)
|
||||||
return state
|
return state
|
||||||
@ -15,12 +18,18 @@ export const initialState = {
|
|||||||
gameSelector: {
|
gameSelector: {
|
||||||
selectedGameProposal: null,
|
selectedGameProposal: null,
|
||||||
selectedActiveGame: null,
|
selectedActiveGame: null,
|
||||||
selectedArchiveGame: null
|
selectedArchiveGame: null,
|
||||||
}
|
},
|
||||||
|
|
||||||
|
newGame: {
|
||||||
|
whitePlayer: '',
|
||||||
|
blackPlayer: '',
|
||||||
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function GameSelector_update(state, action) {
|
function GameSelector_update(state, action) {
|
||||||
if (Object.hasOwn(action, 'selectedGameProposal'))
|
if (Object.hasOwn(action, 'selectedGameProposal')) {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
gameSelector: {
|
gameSelector: {
|
||||||
@ -28,8 +37,9 @@ function GameSelector_update(state, action) {
|
|||||||
selectedGameProposal: action.selectedGameProposal
|
selectedGameProposal: action.selectedGameProposal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Object.hasOwn(action, 'selectedActiveGame'))
|
if (Object.hasOwn(action, 'selectedActiveGame')) {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
gameSelector: {
|
gameSelector: {
|
||||||
@ -37,8 +47,9 @@ function GameSelector_update(state, action) {
|
|||||||
selectedActiveGame: action.selectedActiveGame
|
selectedActiveGame: action.selectedActiveGame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Object.hasOwn(action, 'selectedArchiveGame'))
|
if (Object.hasOwn(action, 'selectedArchiveGame')) {
|
||||||
return {
|
return {
|
||||||
...state,
|
...state,
|
||||||
gameSelector: {
|
gameSelector: {
|
||||||
@ -46,6 +57,31 @@ function GameSelector_update(state, action) {
|
|||||||
selectedArchiveGame: action.selectedArchiveGame
|
selectedArchiveGame: action.selectedArchiveGame
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
console.warn(action.component, "- bad property")
|
console.warn(action.component, "- bad property")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function NewGame_update(state, action) {
|
||||||
|
if (Object.hasOwn(action, 'whitePlayer')) {
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
newGame: {
|
||||||
|
...state.newGame,
|
||||||
|
whitePlayer: action.whitePlayer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Object.hasOwn(action, 'blackPlayer')) {
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
newGame: {
|
||||||
|
...state.newGame,
|
||||||
|
blackPlayer: action.blackPlayer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.warn(action.component, "- bad property")
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user