diff --git a/package-lock.json b/package-lock.json index d391950..d45d849 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.3.0", + "scss": "^0.2.4", "uuid": "^8.3.2" }, "devDependencies": { @@ -1195,6 +1196,14 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "node_modules/ometa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ometa/-/ometa-0.2.2.tgz", + "integrity": "sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==", + "engines": { + "node": ">= 0.2.0" + } + }, "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -1338,6 +1347,17 @@ "loose-envify": "^1.1.0" } }, + "node_modules/scss": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/scss/-/scss-0.2.4.tgz", + "integrity": "sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==", + "dependencies": { + "ometa": "0.2.2" + }, + "engines": { + "node": ">= 0.2.0" + } + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -2251,6 +2271,11 @@ "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", "dev": true }, + "ometa": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ometa/-/ometa-0.2.2.tgz", + "integrity": "sha512-LZuoK/yjU3FvrxPjUXUlZ1bavCfBPqauA7fsNdwi+AVhRdyk2IzgP3JRnevvjzQ6fKHdUw8YISshf53FmpHrng==" + }, "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", @@ -2353,6 +2378,14 @@ "loose-envify": "^1.1.0" } }, + "scss": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/scss/-/scss-0.2.4.tgz", + "integrity": "sha512-4u8V87F+Q/upVhUmhPnB4C1R11xojkRkWjExL2v0CX2EXTg18VrKd+9JWoeyCp2VEMdSpJsyAvVU+rVjogh51A==", + "requires": { + "ometa": "0.2.2" + } + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", diff --git a/package.json b/package.json index c8dd376..67a14dc 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.3.0", + "scss": "^0.2.4", "uuid": "^8.3.2" }, "devDependencies": { diff --git a/src/App.tsx b/src/App.tsx index 3afb7c7..da48960 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -13,13 +13,15 @@ function App() { return (
-

SPLENDOR

- - - } /> - } /> - - + +

SPLENDOR

+ + + } /> + } /> + + +
); } diff --git a/src/components/Gameboard/Gameboard.tsx b/src/components/Gameboard/Gameboard.tsx index d8db50e..e1af511 100644 --- a/src/components/Gameboard/Gameboard.tsx +++ b/src/components/Gameboard/Gameboard.tsx @@ -1,6 +1,5 @@ import { useContext, useEffect, useState } from 'react'; -import { Context } from '../../context/Context'; -import GameConstructor from '../../util/GameConstructor'; +import { appState, Context } from '../../context/Context'; import { NobleData } from '../../util/types'; import AllPlayers from '../Player/AllPlayers'; import AvailableChips from '../Resources/AvailableChips'; @@ -28,16 +27,16 @@ export default function Gameboard() { } else { setView(
- + - +
) } - }, [players]); + }, [AppContext]); const shuffleDeck = () => { if (!gameboard.deck) return; diff --git a/src/components/Gameboard/Nobles.tsx b/src/components/Gameboard/Nobles.tsx index a184cb3..c289556 100644 --- a/src/components/Gameboard/Nobles.tsx +++ b/src/components/Gameboard/Nobles.tsx @@ -1,17 +1,16 @@ -import { useContext, useEffect } from "react"; import { v4 } from "uuid"; -import { Context } from "../../context/Context"; +import { NobleData, ResourceCost } from "../../util/types"; import "./Nobles.css" -export default function Nobles() { - const { gameboard } = useContext(Context); +export default function Nobles({ AppContext }: any) { + const { gameboard } = AppContext; return (
NOBLES
{ - gameboard.nobles.map((noble) => { + gameboard.nobles && gameboard.nobles.map((noble: NobleData) => { return (

Points: {noble.points}

@@ -19,7 +18,7 @@ export default function Nobles() { { Object.keys(noble.resourceCost).map((each) => { // @ts-ignore - return (noble.resourceCost[each] > 0) &&

{each}: {noble.resourceCost[each]}

+ return (noble.resourceCost[each as keyof ResourceCost] > 0) &&

{each}: {noble.resourceCost[each as keyof ResourceCost]}

}) }
diff --git a/src/components/Player/AllPlayers.tsx b/src/components/Player/AllPlayers.tsx index 2573bd9..e493435 100644 --- a/src/components/Player/AllPlayers.tsx +++ b/src/components/Player/AllPlayers.tsx @@ -3,14 +3,15 @@ import { Context } from "../../context/Context" import Player from "./Player"; import { v4 } from "uuid"; import "./AllPlayers.css" +import { PlayerData } from "../../util/types"; -export default function AllPlayers() { - const { players } = useContext(Context); +export default function AllPlayers({ AppContext }: any) { + const { players } = AppContext; return (
{ - players.map((player) => ) + players.map((player: PlayerData) => ) }
) diff --git a/src/components/Player/Player.tsx b/src/components/Player/Player.tsx index 7161028..5e1a53c 100644 --- a/src/components/Player/Player.tsx +++ b/src/components/Player/Player.tsx @@ -1,39 +1,36 @@ +import { useContext } from "react"; import { v4 } from "uuid"; -import { useState } from "react"; -import { CardData, GemValue, PlayerData } from "../../util/types"; +import { Context } from "../../context/Context"; +import { GemValue, PlayerData, ResourceCost } from "../../util/types" interface PlayerProps { data: PlayerData } export default function Player({ data }: PlayerProps) { - const [state, setState] = useState({ - name: data.name, - starter: data.starter, - points: data.points, - nobles: data.nobles, - cards: data.cards, - inventory: data.inventory - }) + const AppContext = useContext(Context); - const buyCard = (cardData: CardData) => { - let newCards = state.cards; - newCards.push(cardData); - setState({ ...state, cards: newCards }) - } + let state: any; + let setState: any; - const getChips = (payload: (string | GemValue)[]) => { - let newInventory = state.inventory; - for (let value of payload) { - for (let key in newInventory) { - if (value === key) { - // @ts-ignore - newInventory[value] += 1; - } - } - } + // const [state, setState] = useState({ + // name: data.name, + // starter: data.starter, + // points: data.points, + // nobles: data.nobles, + // cards: data.cards, + // inventory: data.inventory + // }) - setState({ ...state, inventory: newInventory }); + // const buyCard = (cardData: CardData) => { + // let newCards = state.cards; + // newCards.push(cardData); + // setState({ ...state, cards: newCards }) + // } + + const getChips = (resource: string) => { + AppContext.gameboard.tradingResources[resource as keyof ResourceCost] -= 1; + console.log(AppContext); } return ( @@ -41,6 +38,7 @@ export default function Player({ data }: PlayerProps) {

Name: {data.name}

Score: {data.points}

Is {data.starter || "not"} round starter

+
diff --git a/src/components/Resources/AvailableChips.tsx b/src/components/Resources/AvailableChips.tsx index 1ec569b..61ba953 100644 --- a/src/components/Resources/AvailableChips.tsx +++ b/src/components/Resources/AvailableChips.tsx @@ -1,23 +1,23 @@ -import { useContext } from "react" -import { Context } from "../../context/Context" +import { useContext, useEffect, useState } from "react" import { v4 } from "uuid"; +import { appState, Context } from "../../context/Context"; +import { ResourceCost } from "../../util/types"; import "./AvailableChips.css" export default function AvailableChips() { - const { gameboard } = useContext(Context); + const AppContext = useContext(Context); return (
- { - Object.keys(gameboard.tradingResources).map((key: string) => { - return ( -
- {/* @ts-ignore */} -

{key}: {gameboard.tradingResources[key]}

-
- ) - }) - } + { + Object.keys(AppContext.gameboard.tradingResources).map((key: string) => { + return ( +
+

{key}: {AppContext.gameboard.tradingResources[key as keyof ResourceCost]}

+
+ ) + }) + }
) } \ No newline at end of file diff --git a/src/util/types.d.ts b/src/util/types.d.ts index 3f1fc69..edddb40 100644 --- a/src/util/types.d.ts +++ b/src/util/types.d.ts @@ -44,10 +44,10 @@ export interface NobleData { } export enum GemValue { - Ruby, - Sapphire, - Emerald, - Diamond, - Onyx, - Gold, + ruby, + sapphire, + emerald, + diamond, + onyx, + gold, } \ No newline at end of file