diff --git a/src/App.tsx b/src/App.tsx index d72e35d..0ab9afe 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -10,10 +10,6 @@ import ResumeGame from './components/ResumeGame'; function App() { const [state, setState] = useState(initialState); - useEffect(() => { - return; - }, [state]); - return (

SPLENDOR

diff --git a/src/components/Gameboard/Gameboard.tsx b/src/components/Gameboard/Gameboard.tsx index 8038a1b..d58fb3f 100644 --- a/src/components/Gameboard/Gameboard.tsx +++ b/src/components/Gameboard/Gameboard.tsx @@ -49,6 +49,12 @@ export default function Gameboard({ state, setState }: StateProps) { useEffect(() => { setCardRows(state); + + for (let player of state.players) { + if (player.points >= 15) { + console.log('trigger endgame'); + } + } }, [state]) // displays state of board if data is populated, otherwise points to game constructor diff --git a/src/components/Gameboard/Nobles.tsx b/src/components/Gameboard/Nobles.tsx index 49d1341..488b743 100644 --- a/src/components/Gameboard/Nobles.tsx +++ b/src/components/Gameboard/Nobles.tsx @@ -1,57 +1,18 @@ import { v4 } from "uuid"; -import { NobleData, PlayerData, ResourceCost } from "../../util/types"; +import { NobleData, ResourceCost } from "../../util/types"; import { StateProps } from "../../util/propTypes"; import "./Nobles.css" -import getTotalBuyingPower from "../../util/getTotalBuyingPower"; -import { useCurrentPlayer } from "../../util/useCurrentPlayer"; -import { useEffect } from "react"; -export default function Nobles({ state, setState }: StateProps) { - const removeNoble = (noble: NobleData) => { - console.log(noble); - setState((prev) => { - return { - ...prev, - gameboard: { - ...prev.gameboard, - nobles: prev.gameboard.nobles.filter((each) => each.nobleid !== noble.nobleid) - } - } - }) +export default function Nobles({ state }: StateProps) { + if (!state.gameboard.nobles.length) { + return ( +
+ NOBLES +

All nobles have been acquired!

+
+ ) } - const canPickUpNoble = (player: PlayerData, noble: NobleData): boolean => { - const nobleCost = noble.resourceCost; - - const totalBuyingPower = getTotalBuyingPower(player); - const playerInventory = player.inventory; - - - for (let key of Object.keys(totalBuyingPower)) { - const typedKey = key as keyof ResourceCost; - let coinValue = playerInventory[typedKey] || 0; - - if (!noble.resourceCost[typedKey]) continue; - // @ts-ignore - if ((totalBuyingPower[typedKey] - coinValue) >= noble.resourceCost[typedKey]) { - continue; - } else { - return false; - } - } - - return true; - } - - // useEffect(() => { - // const currentPlayer = useCurrentPlayer(state); - // if (!currentPlayer) return; - - // for (let each of state.gameboard.nobles) { - // console.log(`${currentPlayer.name} can pick up noble ${state.gameboard.nobles.indexOf(each) + 1}? ${canPickUpNoble(currentPlayer, each) ? "yes" : "no"}`) - // } - // }, [state]) - return (
NOBLES diff --git a/src/components/Player/ActionMethods/buyCardActions.ts b/src/components/Player/ActionMethods/buyCardActions.ts index 14a55b2..4b4c480 100644 --- a/src/components/Player/ActionMethods/buyCardActions.ts +++ b/src/components/Player/ActionMethods/buyCardActions.ts @@ -2,7 +2,8 @@ import { turnOrderUtil } from "../../../util/turnOrderUtil"; import { AppState, CardData, FullDeck, ResourceCost, setStateType } from "../../../util/types"; import { useCurrentPlayer } from "../../../util/useCurrentPlayer"; import getTotalBuyingPower from "../../../util/getTotalBuyingPower"; -import { initialActions } from "../../../util/stateSetters"; +import { initialActions, setStateGetNoble } from "../../../util/stateSetters"; +import { canPickUpNoble } from "../../../util/canPickUpNoble"; export const tooExpensive = (card: CardData, state: AppState): boolean => { const currentPlayer = useCurrentPlayer(state); @@ -92,5 +93,12 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData) } } } - }) + }); + + for (let each of state.gameboard.nobles) { + if (canPickUpNoble(currentPlayer, each)) { + console.log(`${currentPlayer.name} can pick up noble ${state.gameboard.nobles.indexOf(each)}`); + setState((prev) => setStateGetNoble(prev, each)); + } + } }