to do: reserve card action, include gold chip or not
This commit is contained in:
@@ -2,6 +2,7 @@ import { v4 } from 'uuid';
|
|||||||
import { CardProps } from '../../util/propTypes';
|
import { CardProps } from '../../util/propTypes';
|
||||||
import { ResourceCost } from '../../util/types';
|
import { ResourceCost } from '../../util/types';
|
||||||
import { buyCardActions } from '../Player/ActionMethods';
|
import { buyCardActions } from '../Player/ActionMethods';
|
||||||
|
import { reserveCard } from '../Player/ActionMethods/reserveCardActions';
|
||||||
const { buyCard, tooExpensive } = buyCardActions;
|
const { buyCard, tooExpensive } = buyCardActions;
|
||||||
|
|
||||||
export default function Card({ data, state, setState }: CardProps) {
|
export default function Card({ data, state, setState }: CardProps) {
|
||||||
@@ -25,6 +26,12 @@ export default function Card({ data, state, setState }: CardProps) {
|
|||||||
Buy This Card
|
Buy This Card
|
||||||
</button>
|
</button>
|
||||||
}
|
}
|
||||||
|
{ state.actions.reserveCard.active &&
|
||||||
|
<button
|
||||||
|
onClick={() => reserveCard(state)}>
|
||||||
|
Reserve This Card
|
||||||
|
</button>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
|
|||||||
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 [gemType, cost] of Object.entries(card.resourceCost)) {
|
||||||
let totalBuyingPower = {
|
let totalBuyingPower = {
|
||||||
ruby: 0,
|
ruby: 0,
|
||||||
@@ -44,13 +43,11 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
let currentPlayer = useCurrentPlayer(state);
|
let currentPlayer = useCurrentPlayer(state);
|
||||||
console.log(card);
|
|
||||||
|
|
||||||
setState((prev: AppState) => {
|
setState((prev: AppState) => {
|
||||||
if (!currentPlayer) return prev;
|
if (!currentPlayer) return prev;
|
||||||
|
|
||||||
const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer);
|
const { newPlayers, roundIncrement } = turnOrderUtil(prev, currentPlayer);
|
||||||
|
|
||||||
let newPlayerInventory = currentPlayer.inventory;
|
let newPlayerInventory = currentPlayer.inventory;
|
||||||
let newResourcePool = prev.gameboard.tradingResources;
|
let newResourcePool = prev.gameboard.tradingResources;
|
||||||
|
|
||||||
@@ -68,7 +65,6 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
resourceToReplenish += cost;
|
resourceToReplenish += cost;
|
||||||
|
|
||||||
newPlayerInventory[gem as keyof ResourceCost] = newInventoryValue;
|
newPlayerInventory[gem as keyof ResourceCost] = newInventoryValue;
|
||||||
newResourcePool[gem as keyof ResourceCost] = resourceToReplenish;
|
newResourcePool[gem as keyof ResourceCost] = resourceToReplenish;
|
||||||
}
|
}
|
||||||
@@ -88,10 +84,8 @@ export const buyCard = (card: CardData, state: AppState, setState: setStateType)
|
|||||||
}
|
}
|
||||||
|
|
||||||
updatedPlayer.points = newScore;
|
updatedPlayer.points = newScore;
|
||||||
|
|
||||||
const idx = newPlayers.findIndex((one: PlayerData) => one.id === currentPlayer?.id);
|
const idx = newPlayers.findIndex((one: PlayerData) => one.id === currentPlayer?.id);
|
||||||
newPlayers[idx] = updatedPlayer;
|
newPlayers[idx] = updatedPlayer;
|
||||||
|
|
||||||
let updatedRows = { ...prev.gameboard.cardRows }
|
let updatedRows = { ...prev.gameboard.cardRows }
|
||||||
|
|
||||||
if (card.tier) {
|
if (card.tier) {
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { AppState, setStateType } from '../../../util/types';
|
import { AppState, setStateType } from '../../../util/types';
|
||||||
import { useCurrentPlayer } from '../../../util/useCurrentPlayer';
|
import { useCurrentPlayer } from '../../../util/useCurrentPlayer';
|
||||||
// @ts-ignore
|
|
||||||
import { turnOrderUtil } from '../../../util/turnOrderUtil';
|
import { turnOrderUtil } from '../../../util/turnOrderUtil';
|
||||||
import { initialActions } from "../../../util/stateSetters";
|
import { initialActions } from "../../../util/stateSetters";
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
export const reserveCard = () => {
|
import { AppState } from "../../../util/types";
|
||||||
return;
|
import { useCurrentPlayer } from "../../../util/useCurrentPlayer";
|
||||||
|
|
||||||
|
export const reserveCard = (state: AppState) => {
|
||||||
|
const currentPlayer = useCurrentPlayer(state);
|
||||||
|
console.log(currentPlayer);
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,6 @@ import { PlayerProps } from "../../util/propTypes";
|
|||||||
import { CardData, PlayerData } from "../../util/types"
|
import { CardData, PlayerData } from "../../util/types"
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { MiniCard } from "../Card/MiniCard";
|
|
||||||
|
|
||||||
export default function Player({ player, state, setState, setActionState }: PlayerProps) {
|
export default function Player({ player, state, setState, setActionState }: PlayerProps) {
|
||||||
const [dynamic, setDynamic] = useState<PlayerData>();
|
const [dynamic, setDynamic] = useState<PlayerData>();
|
||||||
@@ -65,6 +64,18 @@ export default function Player({ player, state, setState, setActionState }: Play
|
|||||||
)})
|
)})
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div className="reserved-cards">
|
||||||
|
<p>Reserved cards:</p>
|
||||||
|
{ dynamic?.reservedCards && dynamic.reservedCards?.map((data: CardData) => {
|
||||||
|
return (
|
||||||
|
<div key={v4()} className="mini-card" style={{backgroundColor: 'white'}}>
|
||||||
|
<p>{data.gemValue} cards</p>
|
||||||
|
<p>{data.points + " points" || null}</p>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ export interface PlayerData {
|
|||||||
points: number,
|
points: number,
|
||||||
nobles: NobleData[],
|
nobles: NobleData[],
|
||||||
cards: CardData[],
|
cards: CardData[],
|
||||||
|
reservedCards?: CardData[],
|
||||||
inventory: {
|
inventory: {
|
||||||
[Property in keyof ResourceCost]: number
|
[Property in keyof ResourceCost]: number
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user