allows player to take gold chip when reserving card

This commit is contained in:
2022-08-17 12:10:07 -05:00
parent 3cdc1a78c8
commit 8c6222864a
5 changed files with 54 additions and 17 deletions

View File

@@ -76,6 +76,8 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData)
availableGold--; availableGold--;
cardCostPointer--; cardCostPointer--;
goldToReturn++; goldToReturn++;
} else {
break;
} }
} }

View File

@@ -29,13 +29,25 @@ export const reserveCard = (state: AppState, setState: setStateType, card: CardD
setState((prev: AppState) => { setState((prev: AppState) => {
const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer); const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer);
const updatedPlayer = { // const updatedPlayer = {
...currentPlayer, // ...currentPlayer,
reservedCards: currentPlayer.reservedCards ? [...currentPlayer.reservedCards, card] : [card], // reservedCards: currentPlayer.reservedCards ? [...currentPlayer.reservedCards, card] : [card],
inventory: goldAllowable(currentPlayer) ? { // inventory: goldAllowable(currentPlayer) ? {
// ...currentPlayer.inventory,
// gold: currentPlayer.inventory.gold && currentPlayer.inventory.gold + 1
// } : currentPlayer.inventory
// }
const updatedPlayer = currentPlayer;
updatedPlayer.reservedCards = currentPlayer.reservedCards ? [
...currentPlayer.reservedCards, card
] : [card];
if (prev.actions.reserveCard.includeGold) {
updatedPlayer.inventory = {
...currentPlayer.inventory, ...currentPlayer.inventory,
gold: currentPlayer.inventory.gold && currentPlayer.inventory.gold + 1 gold: currentPlayer.inventory.gold ? currentPlayer.inventory.gold + 1 : 1
} : currentPlayer.inventory }
} }
const idx = newPlayers.indexOf(currentPlayer); const idx = newPlayers.indexOf(currentPlayer);

View File

@@ -5,12 +5,12 @@ import { GetChipsHTML, ReserveCardHTML } from "./ViewHTML";
export default function SelectionView({ state, setState }: StateProps) { export default function SelectionView({ state, setState }: StateProps) {
const [currentPlayer, setCurrentPlayer] = useState(useCurrentPlayer(state)); const [currentPlayer, setCurrentPlayer] = useState(useCurrentPlayer(state));
const actionTypes = [ const actionTypes = [
state.actions.getChips, state.actions.getChips,
state.actions.buyCard, state.actions.buyCard,
state.actions.reserveCard state.actions.reserveCard
] ]
const [view, setView] = useState(<></>); const [view, setView] = useState(<></>);
useEffect(() => { useEffect(() => {

View File

@@ -1,10 +1,10 @@
import { v4 } from "uuid";
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { setStateGetChips } from "../../hooks/stateSetters"; import { v4 } from "uuid";
import { setStateGetChips, setStateReserveCard, setStateReservePlusGold } from "../../hooks/stateSetters";
import { useCurrentPlayer } from "../../hooks/useCurrentPlayer";
import { StateProps } from "../../util/propTypes"; import { StateProps } from "../../util/propTypes";
import { ResourceCost } from "../../util/types"; import { ResourceCost } from "../../util/types";
import { getChipsActions } from "../Player/ActionMethods"; import { getChipsActions } from "../Player/ActionMethods";
import { useCurrentPlayer } from "../../hooks/useCurrentPlayer";
import { hasMaxChips } from "../Player/ActionMethods/getChipsActions"; import { hasMaxChips } from "../Player/ActionMethods/getChipsActions";
const { getChips } = getChipsActions; const { getChips } = getChipsActions;
@@ -42,12 +42,21 @@ export const GetChipsHTML = ({ state, setState }: StateProps) => {
} }
export const ReserveCardHTML = ({ state, setState }: StateProps) => { export const ReserveCardHTML = ({ state, setState }: StateProps) => {
const [takeGold, setTakeGold] = useState(""); const [takeGold, setTakeGold] = useState(false);
const currentPlayer = useCurrentPlayer(state); const currentPlayer = useCurrentPlayer(state);
useEffect(() => { useEffect(() => {
switch (takeGold) {
}) case true:
setState((prev) => setStateReservePlusGold(prev));
break;
case false:
setState((prev) => setStateReserveCard(prev));
break;
default:
break;
}
}, [takeGold]);
return ( return (
<div className="selection-view"> <div className="selection-view">
@@ -60,8 +69,8 @@ export const ReserveCardHTML = ({ state, setState }: StateProps) => {
<input <input
id="take-gold-yes" id="take-gold-yes"
value="Yes" value="Yes"
checked={takeGold === "Yes"} checked={takeGold}
onChange={() => setTakeGold("Yes")} onChange={() => setTakeGold(true)}
type="radio" type="radio"
> >
</input> </input>
@@ -70,8 +79,8 @@ export const ReserveCardHTML = ({ state, setState }: StateProps) => {
<input <input
id="take-gold-no" id="take-gold-no"
value="No" value="No"
checked={takeGold === "No"} checked={!takeGold}
onChange={() => setTakeGold("No")} onChange={() => setTakeGold(false)}
type="radio"> type="radio">
</input> </input>
</div> </div>

View File

@@ -78,6 +78,20 @@ export const setStateReserveCard = (prev: AppState) => {
} }
} }
export const setStateReservePlusGold = (prev: AppState) => {
return {
...prev,
actions: {
...initialState.actions,
reserveCard: {
active: true,
includeGold: true,
valid: false
}
}
}
}
export const setStateGetNoble = (prev: AppState, noble: NobleData, prevPlayer: PlayerData) => { export const setStateGetNoble = (prev: AppState, noble: NobleData, prevPlayer: PlayerData) => {
const updatedPlayer = { const updatedPlayer = {
...prevPlayer, ...prevPlayer,