- {
- Object.keys(data.resourceCost).map((key: keyof ResourceCost | string) => {
- // @ts-ignore
- return (data.resourceCost[key as keyof ResourceCost] > 0) && (
-
- {data.resourceCost[key as keyof ResourceCost]}
-
- )
- })
- }
+
+

+
+
{data.gemValue.toUpperCase()}
+ { (data.points && data.points > 0) ?
{data.points} {data.points === 1 ? 'point' : 'points'}
: null }
+
+ {
+ Object.keys(data.resourceCost).map((key: keyof ResourceCost | string) => {
+ // @ts-ignore
+ return (data.resourceCost[key as keyof ResourceCost] > 0) && (
+
+ {data.resourceCost[key as keyof ResourceCost]}
+
+ )
+ })
+ }
+
+ { state.actions.buyCard.active &&
+
+ }
+ { state.actions.reserveCard.active &&
+
+ }
- { state.actions.buyCard.active &&
-
- }
- { state.actions.reserveCard.active &&
-
- }
)
}
\ No newline at end of file
diff --git a/src/components/Card/CardRow.scss b/src/components/Card/CardRow.scss
index 6fcae54..3c8d1d6 100644
--- a/src/components/Card/CardRow.scss
+++ b/src/components/Card/CardRow.scss
@@ -4,9 +4,18 @@
.card-row {
display: flex;
flex-flow: column nowrap;
- margin: 2rem;
+ margin: 1rem;
width: 80vw;
+ .card-row-top-bar {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ > * {
+ margin: 8px 16px;
+ }
+ }
+
.card-row-cards-visible {
display: flex;
flex-flow: row nowrap;
@@ -15,25 +24,39 @@
.card {
width: 25%;
- min-height: 24vh;
+ height: 40vh;
border: 2px solid black;
- .total-card-cost {
+ img {
+ width: 100%;
+ height: 100%;
+ object-fit: cover;
+ z-index: 1;
+ }
+
+ .foreground {
+ position: relative;
+ top: -100%;
display: flex;
- justify-content: center;
-
- @include map-gem-values(".card-cost");
+ flex-direction: column;
+ align-items: center;
+ z-index: 6;
+
+ > * {
+ margin: 1rem;
+ padding: 6px;
+ border-radius: 12px;
+ background-color: rgb(39, 36, 36);
+ }
+
+ .total-card-cost {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: center;
+ @include map-gem-values(".card-cost");
+ }
}
- > * {
- margin: 1rem;
- }
-
- p {
- background-color: black;
- }
-
- background-size: cover;
}
.card-count {
diff --git a/src/components/Card/CardRow.tsx b/src/components/Card/CardRow.tsx
index 9c31ab8..7e6a996 100644
--- a/src/components/Card/CardRow.tsx
+++ b/src/components/Card/CardRow.tsx
@@ -1,11 +1,13 @@
+import { useState } from 'react';
+import { v4 } from 'uuid';
+import cardTierToKey from '../../util/cardTierToKey';
import { CardRowProps } from '../../util/propTypes';
import { CardData } from "../../util/types"
import Card from "../Card/Card"
-import { v4 } from 'uuid';
-import cardTierToKey from '../../util/cardTierToKey';
import "./CardRow.scss";
export default function CardRow({tier, state, setState}: CardRowProps) {
+ const [collapsed, setCollapsed] = useState(true);
const typedTier = cardTierToKey(tier);
let cards: Array
@@ -26,8 +28,11 @@ export default function CardRow({tier, state, setState}: CardRowProps) {
return (
-
Tier: {tier}
-
+
+
Tier: {tier}
+
+
+
Remaining: {state.gameboard.deck[typedTier].length}
diff --git a/src/components/Gameboard/Gameboard.tsx b/src/components/Gameboard/Gameboard.tsx
index 073821e..d6c3e11 100644
--- a/src/components/Gameboard/Gameboard.tsx
+++ b/src/components/Gameboard/Gameboard.tsx
@@ -20,6 +20,7 @@ const { validateChips } = getChipsActions;
export default function Gameboard({ state, setState }: StateProps) {
const [view, setView] = useState(
Loading...
);
const [endgame, setEndgame] = useState
();
+ const [winner, setWinner] = useState();
// callbacks for lifting state
const liftSelection = useCallback((value: keyof ResourceCost) => {
@@ -63,12 +64,12 @@ export default function Gameboard({ state, setState }: StateProps) {
useEffect(() => {
if (endgame) {
let winner: PlayerData;
+ const winnerData = state.players;
const currentPlayer = useCurrentPlayer(state);
if (!currentPlayer) return;
if (currentPlayer.id <= endgame.id) {
- const winnerData = state.players;
- winner = winnerData.sort((x,y) => x.points - y.points)[0];
+ winner = winnerData.sort((x,y) => x.points + y.points)[0];
console.log(winner.name + ' wins!');
}
}
diff --git a/src/components/Player/AllPlayers.scss b/src/components/Player/AllPlayers.scss
index 4f3d8d2..cc8a204 100644
--- a/src/components/Player/AllPlayers.scss
+++ b/src/components/Player/AllPlayers.scss
@@ -20,5 +20,15 @@
@include map-gem-values(".player-chip");
}
}
+
+ .reserved-card-view {
+ background-color: rgb(232, 224, 200);
+ .reserved-card-cost {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: center;
+ @include map-gem-values(".reserve-cost");
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/components/Player/Player.tsx b/src/components/Player/Player.tsx
index c8b984b..5baeebb 100644
--- a/src/components/Player/Player.tsx
+++ b/src/components/Player/Player.tsx
@@ -27,14 +27,21 @@ export default function Player({ player, state, setState }: PlayerProps) {
)
dynamic && setReservedView(
- <>
+
Reserved cards:
{
- dynamic.reservedCards?.map((data: CardData) => {
- return
- })
+ dynamic.reservedCards?.map((data: CardData) => (
+
+
{data.gemValue} card: {data.points || 0} points
+
+ {
+ Object.entries(data.resourceCost).map(([key, value]) => value > 0 &&
{value}
)
+ }
+
+
+ ))
}
- >
+
)
}, [dynamic, setState])