From 7d78cdddcabcfdfd022a496621eb222085bf7df0 Mon Sep 17 00:00:00 2001 From: Mikayla Dobson <93477693+innocuous-symmetry@users.noreply.github.com> Date: Mon, 25 Jul 2022 11:55:44 -0500 Subject: [PATCH] does not allow player to take non-existent resources --- src/components/Player/ActionMethods.ts | 15 +++++++++++++++ src/components/Resources/AvailableChips.tsx | 9 +++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/components/Player/ActionMethods.ts b/src/components/Player/ActionMethods.ts index f6e46d2..1b2a88c 100644 --- a/src/components/Player/ActionMethods.ts +++ b/src/components/Player/ActionMethods.ts @@ -32,6 +32,21 @@ export const validateChips = (state: AppState): boolean => { const unique = new Set(selection); if (selection.length === 3 && selection.length > unique.size) return false; + + let globalResourceCopy = { ...state.gameboard.tradingResources } + + for (let item of selection) { + for (let key of Object.keys(globalResourceCopy)) { + if (item === key) { + globalResourceCopy[key] -= 1; + } + } + } + + for (let value of Object.values(globalResourceCopy)) { + if (value < 0) return false; + } + return true; } diff --git a/src/components/Resources/AvailableChips.tsx b/src/components/Resources/AvailableChips.tsx index 98639c9..7a0d9bc 100644 --- a/src/components/Resources/AvailableChips.tsx +++ b/src/components/Resources/AvailableChips.tsx @@ -1,8 +1,9 @@ -import { ResourceCost, StateProps } from "../../util/types"; +import { AppState, ResourceCost, StateProps } from "../../util/types"; import { useEffect } from "react"; import { v4 } from "uuid"; import "./AvailableChips.css" import { setStateGetChips } from "../../util/stateSetters"; +import { validateChips } from "../Player/ActionMethods"; interface ResourceProps extends StateProps { liftSelection: (value: keyof ResourceCost) => void @@ -19,7 +20,11 @@ export default function AvailableChips({ state, setState, liftSelection }: Resou Object.keys(state.gameboard.tradingResources).map((key: string | keyof ResourceCost) => { return (