does not allow player to take non-existent resources
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 (
|
||||
<div key={v4()} className={`chips-${key}`}>
|
||||
<button key={v4()} value={key} onClick={() => liftSelection(key as keyof ResourceCost)}>
|
||||
<button
|
||||
key={v4()}
|
||||
value={key}
|
||||
onClick={() => liftSelection(key as keyof ResourceCost)}
|
||||
>
|
||||
{key}: {state.gameboard.tradingResources[key as keyof ResourceCost]}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user