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