diff --git a/src/components/GameConstructor.tsx b/src/components/GameConstructor.tsx index 1b020b4..68d52a5 100644 --- a/src/components/GameConstructor.tsx +++ b/src/components/GameConstructor.tsx @@ -65,7 +65,13 @@ export default function GameConstructor({ state, setState }: StateProps) { turnActive: val.starter, points: 0, nobles: new Array, - cards: new Array, + cards: { + ruby: new Array, + sapphire: new Array, + emerald: new Array, + diamond: new Array, + onyx: new Array, + }, inventory: { ruby: 0, sapphire: 0, diff --git a/src/components/Player/ActionMethods/buyCardActions.ts b/src/components/Player/ActionMethods/buyCardActions.ts index bcf4bcc..b9d224d 100644 --- a/src/components/Player/ActionMethods/buyCardActions.ts +++ b/src/components/Player/ActionMethods/buyCardActions.ts @@ -1,5 +1,5 @@ import { turnOrderUtil } from "../../../util/turnOrderUtil"; -import { AppState, CardData, FullDeck, ResourceCost, setStateType } from "../../../util/types"; +import { AppState, CardData, FullDeck, PlayerCards, ResourceCost, setStateType } from "../../../util/types"; import { useCurrentPlayer } from "../../../hooks/useCurrentPlayer"; import getTotalBuyingPower from "../../../util/getTotalBuyingPower"; import { initialActions, setStateGetNoble } from "../../../hooks/stateSetters"; @@ -75,8 +75,9 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData) } // connect modified player state to updated list of all players + const typeofCard = card.gemValue as keyof PlayerCards; + updatedPlayer.cards[typeofCard] = [...updatedPlayer.cards[typeofCard], card] updatedPlayer.inventory = newPlayerInventory; - updatedPlayer.cards = [...updatedPlayer.cards, card]; updatedPlayer.points = updatedPlayer.points + (card.points || 0); newPlayers[idx] = updatedPlayer; diff --git a/src/components/Player/Player.tsx b/src/components/Player/Player.tsx index 6dbacee..68dea14 100644 --- a/src/components/Player/Player.tsx +++ b/src/components/Player/Player.tsx @@ -1,7 +1,7 @@ import { setStateAwaitAction, setStateBuyCard, setStateGetChips, setStateReserveCard } from "../../hooks/stateSetters"; import { useEffect, useState } from "react"; import { PlayerProps } from "../../util/propTypes"; -import { CardData, PlayerData } from "../../util/types" +import { CardData, GemValue, PlayerData } from "../../util/types" import { hasMaxReserved } from "./ActionMethods/reserveCardActions"; import { hasMaxChips } from "./ActionMethods/getChipsActions"; import { v4 } from "uuid"; @@ -17,26 +17,35 @@ export default function Player({ player, state, setState }: PlayerProps) { useEffect(() => { dynamic && setCardView( - <> -

Cards:

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

{data.gemValue} card

-

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

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

{key}: {value}

- }) - } -
- ) - }) - } - +
+

Cards:

+ { + Object.entries(dynamic.cards).map(([key, value]) => value.length > 0 &&

{key}: {value.length}

) + } +
) + // dynamic && setCardView( + //
+ //

Cards:

+ // { + // dynamic.cards.map((data: CardData) => { + // return ( + //
+ //

{data.gemValue} card

+ //

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

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

{key}: {value}

+ // }) + // } + //
+ // ) + // }) + // } + //
+ // ) + dynamic && setReservedView( <>

Reserved cards:

diff --git a/src/util/getTotalBuyingPower.ts b/src/util/getTotalBuyingPower.ts index 34575e4..8695e78 100644 --- a/src/util/getTotalBuyingPower.ts +++ b/src/util/getTotalBuyingPower.ts @@ -16,8 +16,8 @@ export default function getTotalBuyingPower(currentPlayer: PlayerData) { totalBuyingPower[key as keyof ResourceCost] += quantity; } - for (let each of currentPlayer.cards) { - totalBuyingPower[each.gemValue as keyof ResourceCost] += 1; + for (let [gem, arr] of Object.entries(currentPlayer.cards)) { + totalBuyingPower[gem as keyof ResourceCost] += arr.length; } return totalBuyingPower; diff --git a/src/util/types.ts b/src/util/types.ts index f088928..bb67926 100644 --- a/src/util/types.ts +++ b/src/util/types.ts @@ -62,13 +62,21 @@ export interface PlayerData { turnActive?: boolean, points: number, nobles: NobleData[], - cards: CardData[], + cards: PlayerCards, reservedCards?: CardData[], inventory: { [Property in keyof ResourceCost]: number } } +export interface PlayerCards { + ruby: CardData[], + emerald: CardData[], + sapphire: CardData[], + onyx: CardData[], + diamond: CardData[], +} + export interface FullDeck { tierOne: CardData[], tierTwo: CardData[],