to do: bug, points assigned to wrong player in setStateGetNoble. trigger endgame action
This commit is contained in:
@@ -10,10 +10,6 @@ import ResumeGame from './components/ResumeGame';
|
||||
function App() {
|
||||
const [state, setState] = useState(initialState);
|
||||
|
||||
useEffect(() => {
|
||||
return;
|
||||
}, [state]);
|
||||
|
||||
return (
|
||||
<div className="App">
|
||||
<h1>SPLENDOR</h1>
|
||||
|
||||
@@ -49,6 +49,12 @@ export default function Gameboard({ state, setState }: StateProps) {
|
||||
|
||||
useEffect(() => {
|
||||
setCardRows(state);
|
||||
|
||||
for (let player of state.players) {
|
||||
if (player.points >= 15) {
|
||||
console.log('trigger endgame');
|
||||
}
|
||||
}
|
||||
}, [state])
|
||||
|
||||
// displays state of board if data is populated, otherwise points to game constructor
|
||||
|
||||
@@ -1,56 +1,17 @@
|
||||
import { v4 } from "uuid";
|
||||
import { NobleData, PlayerData, ResourceCost } from "../../util/types";
|
||||
import { NobleData, ResourceCost } from "../../util/types";
|
||||
import { StateProps } from "../../util/propTypes";
|
||||
import "./Nobles.css"
|
||||
import getTotalBuyingPower from "../../util/getTotalBuyingPower";
|
||||
import { useCurrentPlayer } from "../../util/useCurrentPlayer";
|
||||
import { useEffect } from "react";
|
||||
|
||||
export default function Nobles({ state, setState }: StateProps) {
|
||||
const removeNoble = (noble: NobleData) => {
|
||||
console.log(noble);
|
||||
setState((prev) => {
|
||||
return {
|
||||
...prev,
|
||||
gameboard: {
|
||||
...prev.gameboard,
|
||||
nobles: prev.gameboard.nobles.filter((each) => each.nobleid !== noble.nobleid)
|
||||
export default function Nobles({ state }: StateProps) {
|
||||
if (!state.gameboard.nobles.length) {
|
||||
return (
|
||||
<div className="nobles-panel">
|
||||
<strong>NOBLES</strong>
|
||||
<p>All nobles have been acquired!</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const canPickUpNoble = (player: PlayerData, noble: NobleData): boolean => {
|
||||
const nobleCost = noble.resourceCost;
|
||||
|
||||
const totalBuyingPower = getTotalBuyingPower(player);
|
||||
const playerInventory = player.inventory;
|
||||
|
||||
|
||||
for (let key of Object.keys(totalBuyingPower)) {
|
||||
const typedKey = key as keyof ResourceCost;
|
||||
let coinValue = playerInventory[typedKey] || 0;
|
||||
|
||||
if (!noble.resourceCost[typedKey]) continue;
|
||||
// @ts-ignore
|
||||
if ((totalBuyingPower[typedKey] - coinValue) >= noble.resourceCost[typedKey]) {
|
||||
continue;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// useEffect(() => {
|
||||
// const currentPlayer = useCurrentPlayer(state);
|
||||
// if (!currentPlayer) return;
|
||||
|
||||
// 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"}`)
|
||||
// }
|
||||
// }, [state])
|
||||
|
||||
return (
|
||||
<div className="nobles-panel">
|
||||
|
||||
@@ -2,7 +2,8 @@ import { turnOrderUtil } from "../../../util/turnOrderUtil";
|
||||
import { AppState, CardData, FullDeck, ResourceCost, setStateType } from "../../../util/types";
|
||||
import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
|
||||
import getTotalBuyingPower from "../../../util/getTotalBuyingPower";
|
||||
import { initialActions } from "../../../util/stateSetters";
|
||||
import { initialActions, setStateGetNoble } from "../../../util/stateSetters";
|
||||
import { canPickUpNoble } from "../../../util/canPickUpNoble";
|
||||
|
||||
export const tooExpensive = (card: CardData, state: AppState): boolean => {
|
||||
const currentPlayer = useCurrentPlayer(state);
|
||||
@@ -92,5 +93,12 @@ export const buyCard = (state: AppState, setState: setStateType, card: CardData)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
for (let each of state.gameboard.nobles) {
|
||||
if (canPickUpNoble(currentPlayer, each)) {
|
||||
console.log(`${currentPlayer.name} can pick up noble ${state.gameboard.nobles.indexOf(each)}`);
|
||||
setState((prev) => setStateGetNoble(prev, each));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user