diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..89794c5
Binary files /dev/null and b/.DS_Store differ
diff --git a/client/package-lock.json b/client/package-lock.json
index 65ca609..08bec6e 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -16,6 +16,7 @@
"react-dom": "^17.0.0",
"react-router-dom": "^6.2.2",
"react-scripts": "5.0.0",
+ "sass": "^1.51.0",
"uuid": "^8.3.2",
"web-vitals": "^2.1.4"
}
@@ -8276,6 +8277,11 @@
"url": "https://opencollective.com/immer"
}
},
+ "node_modules/immutable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
+ "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw=="
+ },
"node_modules/import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -13830,6 +13836,22 @@
"resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz",
"integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA=="
},
+ "node_modules/sass": {
+ "version": "1.51.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz",
+ "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==",
+ "dependencies": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/sass-loader": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz",
@@ -22080,6 +22102,11 @@
"resolved": "https://registry.npmjs.org/immer/-/immer-9.0.12.tgz",
"integrity": "sha512-lk7UNmSbAukB5B6dh9fnh5D0bJTOFKxVg2cyJWTYrWRfhLrLMBquONcUs3aFq507hNoIZEDDh8lb8UtOizSMhA=="
},
+ "immutable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
+ "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw=="
+ },
"import-fresh": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
@@ -25943,6 +25970,16 @@
"resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz",
"integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA=="
},
+ "sass": {
+ "version": "1.51.0",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.51.0.tgz",
+ "integrity": "sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA==",
+ "requires": {
+ "chokidar": ">=3.0.0 <4.0.0",
+ "immutable": "^4.0.0",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ }
+ },
"sass-loader": {
"version": "12.6.0",
"resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz",
diff --git a/client/package.json b/client/package.json
index d5367e0..9d7da77 100644
--- a/client/package.json
+++ b/client/package.json
@@ -11,6 +11,7 @@
"react-dom": "^17.0.0",
"react-router-dom": "^6.2.2",
"react-scripts": "5.0.0",
+ "sass": "^1.51.0",
"uuid": "^8.3.2",
"web-vitals": "^2.1.4"
},
diff --git a/client/src/App.js b/client/src/App.js
index ce93ea7..fccfba9 100644
--- a/client/src/App.js
+++ b/client/src/App.js
@@ -1,4 +1,4 @@
-import './App.css';
+import './styles/App.css';
import { Routes, Route, BrowserRouter } from 'react-router-dom';
import Welcome from './components/Welcome';
diff --git a/client/src/components/Cards/Card.js b/client/src/components/Cards/Card.js
index 0e0b5b0..fa0739d 100644
--- a/client/src/components/Cards/Card.js
+++ b/client/src/components/Cards/Card.js
@@ -1,7 +1,7 @@
-import '../../styles/Card.css';
+import '../../styles/Card.scss';
-export default function Card({ state }) {
- const { tier, points, isWorth, cost } = state;
+export default function Card({ tier, props }) {
+ const { points, isWorth, cost } = props;
const mapCosts = () => {
let allCosts = [];
@@ -13,7 +13,7 @@ export default function Card({ state }) {
}
return (
-
+
{isWorth}
{points} points
diff --git a/client/src/components/Cards/DeckCard.js b/client/src/components/Cards/DeckCard.js
new file mode 100644
index 0000000..3636eab
--- /dev/null
+++ b/client/src/components/Cards/DeckCard.js
@@ -0,0 +1,29 @@
+import { useEffect, useState } from "react";
+
+export function DeckCard({ tier }) {
+ const [tierDots, setTierDots] = useState(null);
+
+ useEffect(() => {
+ const singleDot =
+ const mapDots = () => {
+ let iter = 0;
+ let newState = [];
+ while (iter < tier) {
+ iter++;
+ newState.push(singleDot);
+ }
+ setTierDots(newState);
+ }
+
+ mapDots();
+ }, [])
+
+ return (
+
+
SPLINTER
+
+ {tierDots}
+
+
+ )
+}
\ No newline at end of file
diff --git a/client/src/components/Game/GameBoard.js b/client/src/components/Game/GameBoard.js
index 5b46e8c..5c970a2 100644
--- a/client/src/components/Game/GameBoard.js
+++ b/client/src/components/Game/GameBoard.js
@@ -2,46 +2,44 @@ import { useContext, useEffect, useState } from 'react';
import { Context } from '../../store/Store';
import '../../styles/GameBoard.css';
import Card from '../Cards/Card';
-import { TierOneDeck } from '../../store/TierOneDeck';
-import { TierTwoDeck } from '../../store/TierTwoDeck';
-import { TierThreeDeck } from '../../store/TierThreeDeck';
+import { DeckCard } from '../Cards/DeckCard';
-import {v4} from 'uuid';
+import jsonCards from '../../store/cards.json';
export default function GameBoard() {
const [state, dispatch] = useContext(Context);
const [trigger, setTrigger] = useState(true);
- const [tierThree, setTierThree] = useState(null);
- const [tierTwo, setTierTwo] = useState(null);
- const [tierOne, setTierOne] = useState(null);
+ const [rowThree, setRowThree] = useState(null);
+ const [rowTwo, setRowTwo] = useState(null);
+ const [rowOne, setRowOne] = useState(null);
+
+ const { tierOne, tierTwo, tierThree } = jsonCards;
useEffect(() => {
- const AllDecks = [TierOneDeck, TierTwoDeck, TierThreeDeck];
-
- // param limit sets limit on number of cards rendered
- // param tier filters by card tier
- const buildGameBoardRow = (limit, tier) => {
- let newBoard = [];
- let iter = 0;
- while (iter < limit) {
- iter++;
+ const AllDecks = [tierOne, tierTwo, tierThree];
- if (!AllDecks[tier-1][iter-1]) continue;
- newBoard.push(
);
+ // param limit sets limit on number of cards rendered
+ const buildGameBoardRow = (limit, tier) => {
+ let newBoard = [
];
+ let i = 0;
+ while (i < limit) {
+ i++;
+ if (!AllDecks[tier-1][i-1]) continue;
+ newBoard.push(
);
}
switch (tier) {
case 1:
- setTierOne(newBoard);
+ setRowOne(newBoard);
setTrigger(false);
break;
case 2:
- setTierTwo(newBoard);
+ setRowTwo(newBoard);
setTrigger(false);
break;
case 3:
- setTierThree(newBoard);
+ setRowThree(newBoard);
setTrigger(false);
break;
default:
@@ -74,20 +72,18 @@ export default function GameBoard() {
- {tierThree || 'Loading'}
+ {rowThree || 'Loading'}
- {tierTwo || 'Loading'}
+ {rowTwo || 'Loading'}
- {tierOne || 'Loading'}
+ {rowOne || 'Loading'}
-
Tier one length: {TierOneDeck.length} / 40
-
Tier two length: {TierTwoDeck.length} / 30
-
Tier three length: {TierThreeDeck.length} / 20
+
)
}
\ No newline at end of file
diff --git a/client/src/components/InitialCards.json b/client/src/components/InitialCards.json
deleted file mode 100644
index e69de29..0000000
diff --git a/client/src/index.js b/client/src/index.js
index ef2edf8..0dda601 100644
--- a/client/src/index.js
+++ b/client/src/index.js
@@ -1,6 +1,6 @@
import React from 'react';
import ReactDOM from 'react-dom';
-import './index.css';
+import './styles/index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
diff --git a/client/src/logo.svg b/client/src/logo.svg
deleted file mode 100644
index 9dfc1c0..0000000
--- a/client/src/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/client/src/store/cards.json b/client/src/store/cards.json
new file mode 100644
index 0000000..80b84e8
--- /dev/null
+++ b/client/src/store/cards.json
@@ -0,0 +1,998 @@
+{
+ "tierOne": [
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 1,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 1,
+ "cedar": 0,
+ "mahogany": 1,
+ "aspen": 1
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 1,
+ "cedar": 1,
+ "mahogany": 0,
+ "aspen": 1
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 0,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 1
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 1,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 1
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 2,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 2
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 0,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 1,
+ "mahogany": 0,
+ "aspen": 1
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 1,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 2,
+ "aspen": 1
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 1,
+ "cedar": 2,
+ "mahogany": 1,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 1,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 2
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 2
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 0,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 1
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 2,
+ "cedar": 2,
+ "mahogany": 1,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 2,
+ "cedar": 1,
+ "mahogany": 0,
+ "aspen": 1
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 2,
+ "cedar": 1,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 1
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 1,
+ "cedar": 0,
+ "mahogany": 1,
+ "aspen": 3
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 1,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 1,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 2
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 1,
+ "cedar": 0,
+ "mahogany": 2,
+ "aspen": 1
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 1,
+ "cedar": 0,
+ "mahogany": 1,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 1,
+ "mahogany": 1,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 0,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 1
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 2
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 2,
+ "cedar": 0,
+ "mahogany": 2,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 2,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 2
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 2,
+ "mahogany": 2,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 3
+ },
+ "isWorth": "cherry",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 0
+ },
+ {
+ "cost": {
+ "cherry": 4,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 4
+ },
+ "isWorth": "cherry",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 4,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 4,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 4,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 1
+ }
+ ],
+ "tierTwo": [
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 5,
+ "aspen": 3
+ },
+ "isWorth": "cherry",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 5,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 2,
+ "aspen": 2
+ },
+ "isWorth": "cedar",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 5
+ },
+ "isWorth": "mahogany",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 5,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 5,
+ "aspen": 0
+ },
+ "isWorth": "cherry",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 5,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 5,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 5,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 5,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 2
+ },
+ "isWorth": "aspen",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 1,
+ "cedar": 4,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 1,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 4,
+ "aspen": 2
+ },
+ "isWorth": "walnut",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 6,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 2,
+ "cedar": 0,
+ "mahogany": 1,
+ "aspen": 4
+ },
+ "isWorth": "cedar",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 6
+ },
+ "isWorth": "aspen",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 4,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 1
+ },
+ "isWorth": "cherry",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 2,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 3
+ },
+ "isWorth": "mahogany",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 3,
+ "mahogany": 2,
+ "aspen": 3
+ },
+ "isWorth": "mahogany",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 6,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 2
+ },
+ "isWorth": "cherry",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 4,
+ "walnut": 0,
+ "cedar": 1,
+ "mahogany": 2,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 3
+ },
+ "isWorth": "cedar",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 0,
+ "cedar": 3,
+ "mahogany": 2,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 2,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "cherry",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 2,
+ "cedar": 2,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 1
+ },
+ {
+ "cost": {
+ "cherry": 6,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cherry",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 6,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 5
+ },
+ "isWorth": "walnut",
+ "points": 2
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 2,
+ "cedar": 3,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "walnut",
+ "points": 1
+ }
+ ],
+ "tierThree": [
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 7,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cherry",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 7,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 6,
+ "aspen": 3
+ },
+ "isWorth": "aspen",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 3,
+ "cedar": 6,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 7,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 6
+ },
+ "isWorth": "walnut",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 6,
+ "walnut": 0,
+ "cedar": 3,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 7
+ },
+ "isWorth": "walnut",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 7,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 6,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 3
+ },
+ "isWorth": "cedar",
+ "points": 4
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 5,
+ "cedar": 3,
+ "mahogany": 3,
+ "aspen": 3
+ },
+ "isWorth": "cherry",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 5
+ },
+ "isWorth": "cedar",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 5,
+ "walnut": 3,
+ "cedar": 3,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "aspen",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 3,
+ "cedar": 5,
+ "mahogany": 0,
+ "aspen": 3
+ },
+ "isWorth": "mahogany",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 3,
+ "mahogany": 5,
+ "aspen": 3
+ },
+ "isWorth": "walnut",
+ "points": 3
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 7
+ },
+ "isWorth": "walnut",
+ "points": 5
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 7,
+ "aspen": 3
+ },
+ "isWorth": "aspen",
+ "points": 5
+ },
+ {
+ "cost": {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 7,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cherry",
+ "points": 5
+ },
+ {
+ "cost": {
+ "cherry": 0,
+ "walnut": 7,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ "isWorth": "cedar",
+ "points": 5
+ },
+ {
+ "cost": {
+ "cherry": 7,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ "isWorth": "mahogany",
+ "points": 5
+ }
+ ]
+}
\ No newline at end of file
diff --git a/client/src/store/spirits.json b/client/src/store/spirits.json
new file mode 100644
index 0000000..2a1635b
--- /dev/null
+++ b/client/src/store/spirits.json
@@ -0,0 +1,74 @@
+{
+ "spirits": [
+ {
+ "cherry": 0,
+ "walnut": 4,
+ "cedar": 4,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 3
+ },
+ {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 3,
+ "mahogany": 3,
+ "aspen": 0
+ },
+ {
+ "cherry": 4,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 4,
+ "aspen": 0
+ },
+ {
+ "cherry": 0,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 4,
+ "aspen": 4
+ },
+ {
+ "cherry": 3,
+ "walnut": 3,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ {
+ "cherry": 0,
+ "walnut": 3,
+ "cedar": 3,
+ "mahogany": 0,
+ "aspen": 3
+ },
+ {
+ "cherry": 3,
+ "walnut": 0,
+ "cedar": 0,
+ "mahogany": 3,
+ "aspen": 3
+ },
+ {
+ "cherry": 4,
+ "walnut": 0,
+ "cedar": 4,
+ "mahogany": 0,
+ "aspen": 0
+ },
+ {
+ "cherry": 0,
+ "walnut": 4,
+ "cedar": 0,
+ "mahogany": 0,
+ "aspen": 4
+ }
+ ]
+}
\ No newline at end of file
diff --git a/client/src/App.css b/client/src/styles/App.css
similarity index 82%
rename from client/src/App.css
rename to client/src/styles/App.css
index 5f1e545..cf6d6e3 100644
--- a/client/src/App.css
+++ b/client/src/styles/App.css
@@ -1,14 +1,14 @@
.App {
background-color: purple;
- height: 100vh;
+ height: 175vh;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
- justify-content: center;
}
.gameboard {
+ margin-top: 5rem;
display: flex;
flex-direction: column;
width: 95vw;
diff --git a/client/src/styles/Card.css b/client/src/styles/Card.css
deleted file mode 100644
index 713b98a..0000000
--- a/client/src/styles/Card.css
+++ /dev/null
@@ -1,37 +0,0 @@
-.card {
- display: flex;
- flex-direction: column;
- border: 1px solid black;
- width: 20vw;
- height: 30vh;
-}
-
-.card-row {
- display: inline-flex;
- flex-direction: row;
- justify-content: space-between;
- padding: 0.7rem;
- height: 50%;
-}
-
-.bottom-row {
- align-items: flex-end;
-}
-
-.tier {
- display: inline-block;
- height: 2rem;
- width: 2rem;
-}
-
-.tier-3 {
- background-color: blue;
-}
-
-.tier-2 {
- background-color: yellow;
-}
-
-.tier-1 {
- background-color: green;
-}
\ No newline at end of file
diff --git a/client/src/styles/Card.scss b/client/src/styles/Card.scss
new file mode 100644
index 0000000..10afdc5
--- /dev/null
+++ b/client/src/styles/Card.scss
@@ -0,0 +1,80 @@
+// universal card style
+.card {
+ display: flex;
+ flex-direction: column;
+ border: 1px solid black;
+ width: 15vw;
+ height: 30vh;
+ // styling for face-up (in-play) cards
+ .card-row {
+ display: inline-flex;
+ flex-direction: row;
+ justify-content: space-between;
+ padding: 0.7rem;
+ height: 50%;
+ .tier {
+ display: inline-block;
+ height: 2rem;
+ width: 2rem;
+ border-radius: 50%;
+ &-3 {
+ background-color: blue;
+ }
+ &-2 {
+ background-color: yellow;
+ }
+ &-1 {
+ background-color: green;
+ }
+ }
+ }
+ .bottom-row {
+ align-items: flex-end;
+ }
+}
+
+// style for individual card "suits"
+.cedar {
+ background-color: limegreen;
+}
+
+.mahogany {
+ background-color: rgb(143, 75, 75);
+ color: white;
+}
+
+.aspen {
+ background-color: wheat;
+}
+
+.walnut {
+ background-color: rgb(79, 28, 28);
+ color: white;
+}
+
+.cherry {
+ background-color: brown;
+}
+
+// for first-row deck cards
+.deck-card {
+ &-1 {
+ background-color: green;
+ }
+ &-2 {
+ background-color: yellow;
+ }
+ &-3 {
+ background-color: blue;
+ }
+}
+
+.tier-dot {
+ display: inline-flex;
+ background-color: white;
+ border: 2px solid black;
+ height: 1.5rem;
+ width: 1.5rem;
+ margin: 0.25rem;
+ border-radius: 50%;
+}
diff --git a/client/src/styles/GameBoard.css b/client/src/styles/GameBoard.css
index 68e68da..2395b11 100644
--- a/client/src/styles/GameBoard.css
+++ b/client/src/styles/GameBoard.css
@@ -1,5 +1,6 @@
.gameboard-title {
text-decoration: none;
+ color: white;
font-size: 2rem;
font-weight: bold;
}
@@ -9,4 +10,11 @@
flex-flow: row wrap;
width: 90vw;
justify-content: center;
+}
+
+.section-border {
+ display: block;
+ background-color: black;
+ width: 100%;
+ height: 2rem;
}
\ No newline at end of file
diff --git a/client/src/index.css b/client/src/styles/index.css
similarity index 100%
rename from client/src/index.css
rename to client/src/styles/index.css