to do: reserve card action, include gold chip or not

This commit is contained in:
Mikayla Dobson
2022-07-30 08:43:51 -05:00
parent 3e8d3b5e03
commit 70f2bbe16f
6 changed files with 26 additions and 10 deletions

View File

@@ -2,6 +2,7 @@ import { v4 } from 'uuid';
import { CardProps } from '../../util/propTypes'; import { CardProps } from '../../util/propTypes';
import { ResourceCost } from '../../util/types'; import { ResourceCost } from '../../util/types';
import { buyCardActions } from '../Player/ActionMethods'; import { buyCardActions } from '../Player/ActionMethods';
import { reserveCard } from '../Player/ActionMethods/reserveCardActions';
const { buyCard, tooExpensive } = buyCardActions; const { buyCard, tooExpensive } = buyCardActions;
export default function Card({ data, state, setState }: CardProps) { export default function Card({ data, state, setState }: CardProps) {
@@ -25,6 +26,12 @@ export default function Card({ data, state, setState }: CardProps) {
Buy This Card Buy This Card
</button> </button>
} }
{ state.actions.reserveCard.active &&
<button
onClick={() => reserveCard(state)}>
Reserve This Card
</button>
}
</div> </div>
</div> </div>
) )

View File

@@ -5,7 +5,6 @@ import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
export const tooExpensive = (card: CardData, state: AppState): boolean => { export const tooExpensive = (card: CardData, state: AppState): boolean => {
const currentPlayer = useCurrentPlayer(state); const currentPlayer = useCurrentPlayer(state);
if (!currentPlayer) return true; if (!currentPlayer) return true;
for (let [gemType, cost] of Object.entries(card.resourceCost)) { for (let [gemType, cost] of Object.entries(card.resourceCost)) {
let totalBuyingPower = { let totalBuyingPower = {
ruby: 0, ruby: 0,
@@ -44,13 +43,11 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
*/ */
let currentPlayer = useCurrentPlayer(state); let currentPlayer = useCurrentPlayer(state);
console.log(card);
setState((prev: AppState) => { setState((prev: AppState) => {
if (!currentPlayer) return prev; if (!currentPlayer) return prev;
const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer); const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer);
let newPlayerInventory = currentPlayer.inventory; let newPlayerInventory = currentPlayer.inventory;
let newResourcePool = prev.gameboard.tradingResources; let newResourcePool = prev.gameboard.tradingResources;
@@ -68,7 +65,6 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
} }
resourceToReplenish += cost; resourceToReplenish += cost;
newPlayerInventory[gem as keyof ResourceCost] = newInventoryValue; newPlayerInventory[gem as keyof ResourceCost] = newInventoryValue;
newResourcePool[gem as keyof ResourceCost] = resourceToReplenish; newResourcePool[gem as keyof ResourceCost] = resourceToReplenish;
} }
@@ -88,10 +84,8 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
} }
updatedPlayer.points = newScore; updatedPlayer.points = newScore;
const idx = newPlayers.findIndex((one: PlayerData) => one.id === currentPlayer?.id); const idx = newPlayers.findIndex((one: PlayerData) => one.id === currentPlayer?.id);
newPlayers[idx] = updatedPlayer; newPlayers[idx] = updatedPlayer;
let updatedRows = { ...prev.gameboard.cardRows } let updatedRows = { ...prev.gameboard.cardRows }
if (card.tier) { if (card.tier) {

View File

@@ -1,6 +1,5 @@
import { AppState, setStateType } from '../../../util/types'; import { AppState, setStateType } from '../../../util/types';
import { useCurrentPlayer } from '../../../util/useCurrentPlayer'; import { useCurrentPlayer } from '../../../util/useCurrentPlayer';
// @ts-ignore
import { turnOrderUtil } from '../../../util/turnOrderUtil'; import { turnOrderUtil } from '../../../util/turnOrderUtil';
import { initialActions } from "../../../util/stateSetters"; import { initialActions } from "../../../util/stateSetters";

View File

@@ -1,3 +1,7 @@
export const reserveCard = () => { import { AppState } from "../../../util/types";
return; import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
export const reserveCard = (state: AppState) => {
const currentPlayer = useCurrentPlayer(state);
console.log(currentPlayer);
} }

View File

@@ -2,7 +2,6 @@ import { PlayerProps } from "../../util/propTypes";
import { CardData, PlayerData } from "../../util/types" import { CardData, PlayerData } from "../../util/types"
import { useEffect, useState } from "react"; import { useEffect, useState } from "react";
import { v4 } from "uuid"; import { v4 } from "uuid";
import { MiniCard } from "../Card/MiniCard";
export default function Player({ player, state, setState, setActionState }: PlayerProps) { export default function Player({ player, state, setState, setActionState }: PlayerProps) {
const [dynamic, setDynamic] = useState<PlayerData>(); const [dynamic, setDynamic] = useState<PlayerData>();
@@ -65,6 +64,18 @@ export default function Player({ player, state, setState, setActionState }: Play
)}) )})
} }
</div> </div>
<div className="reserved-cards">
<p>Reserved cards:</p>
{ dynamic?.reservedCards && dynamic.reservedCards?.map((data: CardData) => {
return (
<div key={v4()} className="mini-card" style={{backgroundColor: 'white'}}>
<p>{data.gemValue} cards</p>
<p>{data.points + " points" || null}</p>
</div>
)
})}
</div>
</section> </section>
</div> </div>
) )

View File

@@ -63,6 +63,7 @@ export interface PlayerData {
points: number, points: number,
nobles: NobleData[], nobles: NobleData[],
cards: CardData[], cards: CardData[],
reservedCards?: CardData[],
inventory: { inventory: {
[Property in keyof ResourceCost]: number [Property in keyof ResourceCost]: number
} }