diff --git a/src/components/Card/Card.tsx b/src/components/Card/Card.tsx index 40cd713..0889fbf 100644 --- a/src/components/Card/Card.tsx +++ b/src/components/Card/Card.tsx @@ -12,7 +12,7 @@ export default function Card({ data, state, setState }: CardProps) { if (!data) return
; return ( -
+

Counts as: {data.gemValue}

Point value: {data.points || 0}

diff --git a/src/components/Player/ActionMethods/buyCardActions.ts b/src/components/Player/ActionMethods/buyCardActions.ts index c8f8a57..4eca4d8 100644 --- a/src/components/Player/ActionMethods/buyCardActions.ts +++ b/src/components/Player/ActionMethods/buyCardActions.ts @@ -89,12 +89,24 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData) updatedPlayer.cards = { ...updatedPlayer.cards, [card.gemValue]: [...updatedPlayer.cards[card.gemValue as keyof PlayerCards], card] } + let reservedCardCheck = false; + // checks if current card was bought from reserved cards, removing it if so + if (updatedPlayer.reservedCards) { + let beforeLength = updatedPlayer.reservedCards.length; + updatedPlayer.reservedCards = updatedPlayer.reservedCards.filter((each: CardData) => each.resourceCost !== card.resourceCost); + let afterLength = updatedPlayer.reservedCards.length; + if (beforeLength !== afterLength) reservedCardCheck = true; + } + const typedCardTier = cardTierToKey(card.tier); let newFullDeckTargetTier = prev.gameboard.deck[typedCardTier]; - const replacementCard = newFullDeckTargetTier.shift(); let newTargetCardRow = prev.gameboard.cardRows[typedCardTier]; - newTargetCardRow = newTargetCardRow.filter((data: CardData) => data.resourceCost !== card.resourceCost); - if (replacementCard) newTargetCardRow.push(replacementCard); + + if (!reservedCardCheck) { + const replacementCard = newFullDeckTargetTier.shift(); + newTargetCardRow = newTargetCardRow.filter((data: CardData) => data.resourceCost !== card.resourceCost); + if (replacementCard) newTargetCardRow.push(replacementCard); + } return { ...prev, diff --git a/src/components/Player/Player.tsx b/src/components/Player/Player.tsx index 5e50c65..1c065fc 100644 --- a/src/components/Player/Player.tsx +++ b/src/components/Player/Player.tsx @@ -5,6 +5,7 @@ import { CardData, PlayerData } from "../../util/types" import { hasMaxReserved } from "./ActionMethods/reserveCardActions"; import { hasMaxChips } from "./ActionMethods/getChipsActions"; import { v4 } from "uuid"; +import Card from "../Card/Card"; export default function Player({ player, state, setState }: PlayerProps) { const [dynamic, setDynamic] = useState(); @@ -30,17 +31,7 @@ export default function Player({ player, state, setState }: PlayerProps) {

Reserved cards:

{ dynamic.reservedCards?.map((data: CardData) => { - return ( -
-

{data.gemValue} cards

-

{data.points + " points" || null}

- { - Object.entries(data.resourceCost).map(([key, value]) => { - return value > 0 &&

{key}: {value}

- }) - } -
- ) + return }) } diff --git a/src/util/util.test.ts b/src/util/util.test.ts index 2cd403e..ad8ab11 100644 --- a/src/util/util.test.ts +++ b/src/util/util.test.ts @@ -3,6 +3,7 @@ import cardTierToKey from "./cardTierToKey"; import { mockPlayerOne, mockState } from "./testUtils"; import { turnOrderUtil } from "./turnOrderUtil"; import { useCurrentPlayer } from "../hooks/useCurrentPlayer"; +import getTotalBuyingPower from "./getTotalBuyingPower"; describe('app utilities', () => { test('useCurrentPlayer', () => { @@ -39,6 +40,14 @@ describe('app utilities', () => { test('initializeBoard', () => { expect(1).toBe(1); }) + + test('get total buying power', () => { + const currentPlayer = useCurrentPlayer(mockState); + if (!currentPlayer) return; + + const bp = getTotalBuyingPower(currentPlayer); + expect(bp).toBeDefined(); + }) }) export {} \ No newline at end of file