found bug: incorrect conditional, global resource was skipped if value was 0, falsy

This commit is contained in:
2022-08-06 17:46:18 -05:00
parent bde0b1f66d
commit 55308bd732
2 changed files with 16 additions and 16 deletions

View File

@@ -43,14 +43,14 @@ export default function Nobles({ state, setState }: StateProps) {
return true; return true;
} }
useEffect(() => { // useEffect(() => {
const currentPlayer = useCurrentPlayer(state); // const currentPlayer = useCurrentPlayer(state);
if (!currentPlayer) return; // if (!currentPlayer) return;
for (let each of state.gameboard.nobles) { // for (let each of state.gameboard.nobles) {
console.log(`${currentPlayer.name} can pick up noble ${state.gameboard.nobles.indexOf(each) + 1}? ${canPickUpNoble(currentPlayer, each) ? "yes" : "no"}`) // console.log(`${currentPlayer.name} can pick up noble ${state.gameboard.nobles.indexOf(each) + 1}? ${canPickUpNoble(currentPlayer, each) ? "yes" : "no"}`)
} // }
}, [state]) // }, [state])
return ( return (
<div className="nobles-panel"> <div className="nobles-panel">

View File

@@ -7,10 +7,10 @@ import { initialActions } from "../../../util/stateSetters";
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 [cardGemType, cardCost] of Object.entries(card.resourceCost)) {
let totalBuyingPower = getTotalBuyingPower(currentPlayer); let totalBuyingPower = getTotalBuyingPower(currentPlayer);
for (let [heldResource, quantity] of Object.entries(totalBuyingPower)) { for (let [heldResource, quantity] of Object.entries(totalBuyingPower)) {
if (gemType === heldResource && quantity < cost) { if (cardGemType === heldResource && quantity < cardCost) {
return true; return true;
} }
} }
@@ -39,8 +39,8 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData)
const typedKey = key as keyof ResourceCost; const typedKey = key as keyof ResourceCost;
let adjustedCost = cardCost[typedKey]; let adjustedCost = cardCost[typedKey];
let adjustedInventoryValue = newPlayerInventory[typedKey]; let adjustedInventoryValue = newPlayerInventory[typedKey];
let adjustedResourcePoolValue = newResourcePool[typedKey]; let adjustedResourcePoolValue = newResourcePool[typedKey] || 0;
if (!adjustedCost || !adjustedInventoryValue || !adjustedResourcePoolValue) continue; if (!adjustedCost || !adjustedInventoryValue) continue;
// before decrementing player inventory values, account for total buying power // before decrementing player inventory values, account for total buying power
const buyingPowerDifference = playerBuyingPower[typedKey] - adjustedInventoryValue; const buyingPowerDifference = playerBuyingPower[typedKey] - adjustedInventoryValue;
@@ -48,8 +48,8 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData)
while (adjustedCost > 0) { while (adjustedCost > 0) {
adjustedInventoryValue--; adjustedInventoryValue--;
adjustedResourcePoolValue++;
adjustedCost--; adjustedCost--;
adjustedResourcePoolValue++;
} }
// assign modified values to player inventory and resource pool // assign modified values to player inventory and resource pool
@@ -57,13 +57,16 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData)
newResourcePool[typedKey] = adjustedResourcePoolValue; newResourcePool[typedKey] = adjustedResourcePoolValue;
} }
console.log(newResourcePool);
console.log(newPlayerInventory);
// connect modified player state to updated list of all players // connect modified player state to updated list of all players
updatedPlayer.inventory = newPlayerInventory; updatedPlayer.inventory = newPlayerInventory;
updatedPlayer.cards = [...updatedPlayer.cards, card]; updatedPlayer.cards = [...updatedPlayer.cards, card];
newPlayers[idx] = updatedPlayer; newPlayers[idx] = updatedPlayer;
// attempt to queue replacement card from full deck // attempt to queue replacement card from full deck
const typedCardTier = ["tierThree", "tierTwo", "tierOne"][card.tier + 1] as keyof FullDeck; const typedCardTier = ["tierThree", "tierTwo", "tierOne"][2 - (card.tier-1)] as keyof FullDeck;
let newFullDeckTargetTier = prev.gameboard.deck[typedCardTier]; let newFullDeckTargetTier = prev.gameboard.deck[typedCardTier];
const replacementCard = newFullDeckTargetTier.shift(); const replacementCard = newFullDeckTargetTier.shift();
@@ -73,9 +76,6 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData)
// push replacement card to face up card, if exists // push replacement card to face up card, if exists
if (replacementCard) newTargetCardRow.push(replacementCard); if (replacementCard) newTargetCardRow.push(replacementCard);
console.log(newTargetCardRow);
console.log(newFullDeckTargetTier);
return { return {
...prev, ...prev,
players: newPlayers, players: newPlayers,