local multi form writes to store
This commit is contained in:
@@ -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>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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'}
|
||||||
|
|||||||
@@ -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>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -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 */ }
|
||||||
@@ -47,6 +52,23 @@ export default function LocalMultiForm() {
|
|||||||
}
|
}
|
||||||
}, [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 (
|
||||||
<>
|
<>
|
||||||
<form className="local-multi-form" style={{paddingBottom: '2rem'}}>
|
<form className="local-multi-form" style={{paddingBottom: '2rem'}}>
|
||||||
@@ -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>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user