diff --git a/src/components/Player/ActionMethods/buyCardActions.ts b/src/components/Player/ActionMethods/buyCardActions.ts
index 382a53e..95843d8 100644
--- a/src/components/Player/ActionMethods/buyCardActions.ts
+++ b/src/components/Player/ActionMethods/buyCardActions.ts
@@ -4,27 +4,37 @@ import { turnOrderUtil } from "../../../util/turnOrderUtil";
import { AppState, CardData, PlayerData, ResourceCost, setStateType } from "../../../util/types";
import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
+const getTotalBuyingPower = (state: AppState) => {
+ const currentPlayer = useCurrentPlayer(state);
+
+ let totalBuyingPower = {
+ ruby: 0,
+ sapphire: 0,
+ emerald: 0,
+ diamond: 0,
+ onyx: 0,
+ gold: 0,
+ }
+
+ if (!currentPlayer) return totalBuyingPower;
+
+ for (let [key,quantity] of Object.entries(currentPlayer.inventory)) {
+ totalBuyingPower[key as keyof ResourceCost] += quantity;
+ }
+
+ for (let each of currentPlayer.cards) {
+ totalBuyingPower[each.gemValue as keyof ResourceCost] += 1;
+ }
+
+ return totalBuyingPower;
+}
+
export const tooExpensive = (card: CardData, state: AppState): boolean => {
const currentPlayer = useCurrentPlayer(state);
if (!currentPlayer) return true;
+
for (let [gemType, cost] of Object.entries(card.resourceCost)) {
- let totalBuyingPower = {
- ruby: 0,
- sapphire: 0,
- emerald: 0,
- diamond: 0,
- onyx: 0,
- gold: 0,
- }
-
- for (let [key,quantity] of Object.entries(currentPlayer.inventory)) {
- totalBuyingPower[key as keyof ResourceCost] += quantity;
- }
-
- for (let each of currentPlayer.cards) {
- totalBuyingPower[each.gemValue as keyof ResourceCost] += 1;
- }
-
+ let totalBuyingPower = getTotalBuyingPower(state);
for (let [heldResource, quantity] of Object.entries(totalBuyingPower)) {
if (gemType === heldResource && quantity < cost) {
return true;
@@ -52,23 +62,33 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer);
let newPlayerInventory = currentPlayer.inventory;
let newResourcePool = prev.gameboard.tradingResources;
+ const totalBuyingPower = getTotalBuyingPower(state);
+ // iterate through cost values of card to purchase
for (let [gem, cost] of Object.entries(card.resourceCost)) {
if (cost < 1) continue;
+ let inventoryValue = newPlayerInventory[gem as keyof ResourceCost];
+ let globalResource = newResourcePool[gem as keyof ResourceCost];
- let resourceToReplenish = newResourcePool[gem as keyof ResourceCost];
- let newInventoryValue = newPlayerInventory[gem as keyof ResourceCost];
- if (!newInventoryValue || !resourceToReplenish) continue;
-
- let i = cost;
- while (i > 0) {
- newInventoryValue--;
- i--;
- }
+ if (!inventoryValue || !globalResource) {
+ continue;
+ } else {
+ let i = cost;
- resourceToReplenish += cost;
- newPlayerInventory[gem as keyof ResourceCost] = newInventoryValue;
- newResourcePool[gem as keyof ResourceCost] = resourceToReplenish;
+ // prevents duplication of resources when purchasing a card using permanent resources from cards
+ if (totalBuyingPower[gem as keyof ResourceCost] !== inventoryValue) {
+ console.log('caught');
+ }
+
+ while (i > 0) {
+ inventoryValue -= 1;
+ globalResource += 1;
+ i--;
+ }
+
+ newResourcePool[gem as keyof ResourceCost] = globalResource;
+ newPlayerInventory[gem as keyof ResourceCost] = inventoryValue;
+ }
}
let updatedPlayer: PlayerData = {
@@ -77,7 +97,7 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
inventory: newPlayerInventory
}
- let newScore = updatedPlayer.points;
+ let newScore = 0;
for (let each of updatedPlayer.cards) {
newScore += each.points || 0;
}
diff --git a/src/main.tsx b/src/main.tsx
index 611e848..1af5862 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -3,8 +3,4 @@ import ReactDOM from 'react-dom/client'
import App from './App'
import './index.css'
-ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
-
-
-
-)
+ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render()
diff --git a/src/util/initializeBoard.ts b/src/util/initializeBoard.ts
index 28db645..d9f2c85 100644
--- a/src/util/initializeBoard.ts
+++ b/src/util/initializeBoard.ts
@@ -1,4 +1,4 @@
-import { AppState, FullDeck, NobleData, setStateType } from "./types";
+import { AppState, FullDeck, NobleData, ResourceCost, setStateType } from "./types";
import NobleStore from '../data/nobles.json';
const shuffleDeck = (state: AppState, setState: setStateType) => {
@@ -30,6 +30,29 @@ const setNobles = (state: AppState, setState: setStateType) => {
setState({ ...state, gameboard: { ...state.gameboard, nobles: shuffledNobles }})
}
+const setResources = (state: AppState) => {
+ let newResources = state.gameboard.tradingResources;
+
+ console.log(state.players.length);
+ switch (state.players.length) {
+ case 2:
+ for (let [key, value] of Object.entries(newResources)) {
+ newResources[key as keyof ResourceCost] = value - 3;
+ }
+ break;
+ case 3:
+ for (let [key, value] of Object.entries(newResources)) {
+ newResources[key as keyof ResourceCost] = value - 2;
+ }
+ break;
+ default:
+ break;
+ }
+
+ console.log(newResources);
+ return newResources;
+}
+
export const setCardRows = (state: AppState) => {
let newDeck = state.gameboard.cardRows;
for (const [key, value] of Object.entries(state.gameboard.deck)) {
@@ -43,7 +66,18 @@ export const setCardRows = (state: AppState) => {
export default function initializeBoard(state: AppState, setState: setStateType) {
shuffleDeck(state, setState);
+
const newDeck = setCardRows(state);
- setState({ ...state, gameboard: { ...state.gameboard, cardRows: newDeck } })
+ const newResources = setResources(state);
+
+ setState({
+ ...state,
+ gameboard: {
+ ...state.gameboard,
+ tradingResources: newResources,
+ cardRows: newDeck
+ }
+ });
+
setNobles(state, setState);
}
\ No newline at end of file