local multi form writes to store

This commit is contained in:
Mikayla Dobson
2022-04-16 13:58:27 -05:00
parent 230655a872
commit f53645be8b
6 changed files with 59 additions and 20 deletions

View File

@@ -3,17 +3,20 @@ import { Routes, Route, BrowserRouter } from 'react-router-dom';
import Welcome from './components/Welcome'; import Welcome from './components/Welcome';
import FulLGameView from './components/Game/FullGameView'; import FulLGameView from './components/Game/FullGameView';
import Store from './store/Store';
function App() { function App() {
return ( return (
<div className="App"> <Store>
<BrowserRouter> <div className="App">
<Routes> <BrowserRouter>
<Route path="/" element={<Welcome />}/> <Routes>
<Route path="/gameboard" element={<FulLGameView />}/> <Route path="/" element={<Welcome />}/>
</Routes> <Route path="/gameboard" element={<FulLGameView />}/>
</BrowserRouter> </Routes>
</div> </BrowserRouter>
</div>
</Store>
); );
} }

View File

@@ -1,12 +1,14 @@
import { useContext, useEffect, useState } from 'react';
import { Context } from '../../store/Store';
import '../../styles/GameBoard.css'; import '../../styles/GameBoard.css';
import { useEffect, useState } from 'react';
import Card from '../Cards/Card'; import Card from '../Cards/Card';
import { TierOneDeck } from '../../store/TierOneDeck'; import { TierOneDeck } from '../../store/TierOneDeck';
import { TierTwoDeck } from '../../store/TierTwoDeck'; import { TierTwoDeck } from '../../store/TierTwoDeck';
import { TierThreeDeck } from '../../store/TierThreeDeck'; import { TierThreeDeck } from '../../store/TierThreeDeck';
export default function GameBoard() { export default function GameBoard() {
const [state, dispatch] = useContext(Context);
const [trigger, setTrigger] = useState(true); const [trigger, setTrigger] = useState(true);
const [tierThree, setTierThree] = useState(null); const [tierThree, setTierThree] = useState(null);
const [tierTwo, setTierTwo] = useState(null); const [tierTwo, setTierTwo] = useState(null);
@@ -56,6 +58,7 @@ export default function GameBoard() {
return ( return (
<div className="gameboard"> <div className="gameboard">
<h1 className="gameboard-title">SPLINTER</h1> <h1 className="gameboard-title">SPLINTER</h1>
<h2>Players: {state.players}</h2>
<div className="gameboard-row"> <div className="gameboard-row">
{tierThree || 'Loading'} {tierThree || 'Loading'}

View File

@@ -2,6 +2,7 @@ export default function CpuMultiForm() {
return ( return (
<form className="local-multi-form"> <form className="local-multi-form">
<h1>AI and stuff?</h1> <h1>AI and stuff?</h1>
<h2>Coming soon!</h2>
</form> </form>
) )
} }

View File

@@ -1,6 +1,9 @@
import { useState, useEffect } from "react"; import { useState, useEffect, useContext } from "react";
import { Context } from "../../store/Store";
export default function LocalMultiForm() { export default function LocalMultiForm() {
const [state, dispatch] = useContext(Context);
const [players, setPlayers] = useState(null); const [players, setPlayers] = useState(null);
const [formVariant, setFormVariant] = useState(null); const [formVariant, setFormVariant] = useState(null);
const [playerOne, setPlayerOne] = useState(''); const [playerOne, setPlayerOne] = useState('');
@@ -8,6 +11,8 @@ export default function LocalMultiForm() {
const [playerThree, setPlayerThree] = useState(''); const [playerThree, setPlayerThree] = useState('');
const [playerFour, setPlayerFour] = useState(''); const [playerFour, setPlayerFour] = useState('');
const allPlayerNames = [playerOne, playerTwo, playerThree, playerFour];
const formVariants = [ const formVariants = [
<> { /* Fragment, expects to be concatenated as necessary within a <form> element */ } <> { /* Fragment, expects to be concatenated as necessary within a <form> element */ }
{ /* Player one and two base; index 0 */ } { /* Player one and two base; index 0 */ }
@@ -46,6 +51,23 @@ export default function LocalMultiForm() {
break; break;
} }
}, [players]); }, [players]);
const handleStartGame = () => {
let toSubmit = [];
let iter = 0;
while (iter < players) {
toSubmit.push(allPlayerNames[iter]);
iter++;
}
if (toSubmit.length < players) return;
for (let item of toSubmit) {
if (!item) return;
}
dispatch({ type: "ADD PLAYERS", payload: toSubmit });
}
return ( return (
<> <>
@@ -69,6 +91,8 @@ export default function LocalMultiForm() {
<form className="player-input" style={{paddingBottom: '1rem'}}> <form className="player-input" style={{paddingBottom: '1rem'}}>
{formVariant} {formVariant}
</form> </form>
<button href='/' onClick={handleStartGame}>Start game</button>
<button onClick={() => dispatch({type: "PRINT PLAYERS"})}>Get Players</button>
</> </>
) )
} }

View File

@@ -1,8 +1,11 @@
import { useState, useRef } from "react" import { useState, useRef, useContext } from "react"
import LocalMultiForm from "./GameConfigForms/LocalMultiForm"; import LocalMultiForm from "./GameConfigForms/LocalMultiForm";
import CpuMultiForm from "./GameConfigForms/CpuMultiForm"; import CpuMultiForm from "./GameConfigForms/CpuMultiForm";
import { Context } from "../store/Store";
export default function Welcome() { export default function Welcome() {
const [state, dispatch] = useContext(Context);
const [localMulti, setLocalMulti] = useState(false); const [localMulti, setLocalMulti] = useState(false);
const [cpuMulti, setCpuMulti] = useState(false); const [cpuMulti, setCpuMulti] = useState(false);

View File

@@ -1,12 +1,12 @@
import { useReducer, createContext } from "react" import { useReducer, createContext } from "react"
import { TierOneDeck } from "../../store/TierOneDeck" import { TierOneDeck } from './TierOneDeck';
import { TierTwoDeck } from "../../store/TierTwoDeck" import { TierTwoDeck } from './TierTwoDeck';
import { TierThreeDeck } from "../../store/TierThreeDeck" import { TierThreeDeck } from './TierThreeDeck';
import { Spirits } from "./Spirits" import { Spirits } from '../components/Game/Spirits';
const initialGameState = { const initialGameState = {
players: [], players: ['no players'],
materials: { materials: {
cards: { cards: {
tierOneRemaining: TierOneDeck, tierOneRemaining: TierOneDeck,
@@ -27,13 +27,18 @@ const initialGameState = {
const reducer = (state, action) => { const reducer = (state, action) => {
switch (action.type) { switch (action.type) {
case "ADD PLAYER": case "GET PLAYERS":
state.players.push(action.payload); return state;
break; case "ADD PLAYERS":
state.players = action.payload;
return state;
case "UPDATE PLAYER MATERIALS": case "UPDATE PLAYER MATERIALS":
// find player in array of players and update their resources // find player in array of players and update their resources
// update list of available materials in state // update list of available materials in state
break; break;
case "PRINT PLAYERS":
console.log(state.players);
return state;
default: default:
break; break;
} }