supports basic point tracking and turn order handling on card purchase

This commit is contained in:
2022-07-26 13:10:06 -05:00
parent 4c4d52b983
commit 04def01185
2 changed files with 14 additions and 7 deletions

View File

@@ -1,3 +1,4 @@
import { turnOrderUtil } from "../../../util/turnOrderUtil";
import { AppState, CardData, PlayerData, ResourceCost, setStateType } from "../../../util/types"; import { AppState, CardData, PlayerData, ResourceCost, setStateType } from "../../../util/types";
import { useCurrentPlayer } from "../../../util/useCurrentPlayer"; import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
@@ -33,10 +34,11 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
setState((prev: AppState) => { setState((prev: AppState) => {
if (!currentPlayer) return prev; if (!currentPlayer) return prev;
const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer);
let newInventory = currentPlayer.inventory; let newInventory = currentPlayer.inventory;
for (let [gem, cost] of Object.entries(card.resourceCost)) { for (let [gem, cost] of Object.entries(card.resourceCost)) {
if (cost < 1) continue; if (cost < 1) continue;
let i = cost; let i = cost;
let newInventoryValue = newInventory[gem as keyof ResourceCost]; let newInventoryValue = newInventory[gem as keyof ResourceCost];
if (!newInventoryValue) continue; if (!newInventoryValue) continue;
@@ -45,7 +47,6 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
newInventoryValue--; newInventoryValue--;
i--; i--;
} }
newInventory[gem as keyof ResourceCost] = newInventoryValue; newInventory[gem as keyof ResourceCost] = newInventoryValue;
} }
@@ -58,14 +59,20 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
inventory: newInventory inventory: newInventory
} }
let allPlayers = prev.players; let newScore = updatedPlayer.points;
const idx = allPlayers.findIndex((one: PlayerData) => one.id === currentPlayer?.id); for (let each of updatedPlayer.cards) {
newScore += each.points || 0;
}
allPlayers[idx] = updatedPlayer; updatedPlayer.points = newScore;
const idx = newPlayers.findIndex((one: PlayerData) => one.id === currentPlayer?.id);
newPlayers[idx] = updatedPlayer;
return { return {
...prev, ...prev,
players: allPlayers round: (roundIncrement ? prev.round + 1 : prev.round),
players: newPlayers
} }
}) })

View File

@@ -37,7 +37,7 @@ export const getChips = (state: AppState, setState: setStateType) => {
setState((prev) => { setState((prev) => {
if (!targetPlayer) return prev; if (!targetPlayer) return prev;
const { newPlayers, roundIncrement } = turnOrderUtil(state, targetPlayer); const { newPlayers, roundIncrement } = turnOrderUtil(prev, targetPlayer);
const idx = newPlayers.indexOf(targetPlayer); const idx = newPlayers.indexOf(targetPlayer);
const resources = state.actions.getChips.selection; const resources = state.actions.getChips.selection;
let newResources = prev.gameboard.tradingResources; let newResources = prev.gameboard.tradingResources;