diff --git a/app/src/components/Army.tsx b/app/src/components/Army.tsx index 784dc26..d666ec1 100644 --- a/app/src/components/Army.tsx +++ b/app/src/components/Army.tsx @@ -3,17 +3,22 @@ import styles from '../styles/Army.module.css'; const Army = () => { - const { army } = usePlayer() - + const { army, addUnit } = usePlayer() return
-
-
+
addUnit(0)} className={`${styles.scribe} ${styles.person} ${styles.moloch_denier} ${styles.static}`}> +
Moloch denier: {army?.moloch_denier.level}
+
+
addUnit(1)} className={`${styles.druid} ${styles.person} ${styles.apprentice} ${styles.static}`} > +
Apprentice: {army?.apprentice.level}
+
+
addUnit(2)} className={`${styles.ranger} ${styles.person} ${styles.anointed} ${styles.static}`} > +
Anointed: {army?.anointed.level}
+
+
addUnit(3)} className={`${styles.warrior} ${styles.person} ${styles.champion} ${styles.static}`} > +
Champion: {army?.champion.level}
-
-
-
} diff --git a/app/src/components/Header.tsx b/app/src/components/Header.tsx index 8fbd9c1..3d4be9e 100644 --- a/app/src/components/Header.tsx +++ b/app/src/components/Header.tsx @@ -43,7 +43,6 @@ const Header = () => { }, [isRegistered, register]) return
- {count.current} {balance}

{title}

{subtitle} {perSecondParagraph} diff --git a/app/src/providers/PlayerProvider.tsx b/app/src/providers/PlayerProvider.tsx index 202b2ea..d4f92a7 100644 --- a/app/src/providers/PlayerProvider.tsx +++ b/app/src/providers/PlayerProvider.tsx @@ -6,17 +6,28 @@ import { parseEther } from 'viem' const contractAddress = "0xbd06B0878888bf4c6895704fa603a5ADf7e65c66" const abi = contractAbi.abi -export interface PlayerContextType { - isRegistered: boolean, - player: null | string, - army: null | { profit_per_second: bigint }, - balance: bigint, - register: () => void; - raid: () => void +export interface Player { + created_at: bigint, + last_raided_at: bigint, + total_minted: bigint +} +export interface Army { + anointed: { level: number } + apprentice: { level: number } + champion: { level: number } + moloch_denier: { level: number } + profit_per_second: bigint } -export interface Player { } -export interface Army { } +export interface PlayerContextType { + isRegistered: boolean, + player: null | Player, + army: null | Army, + balance: bigint, + register: () => void, + raid: () => void, + addUnit: (unit: number) => void +} const PlayerContext = createContext({ isRegistered: false, @@ -25,6 +36,7 @@ const PlayerContext = createContext({ balance: BigInt(0), register: () => { }, raid: () => { }, + addUnit: () => { } }); const PlayerProvider = ({ children }: { children: ReactNode }) => { @@ -96,16 +108,26 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => { }) }, [writeContract]) + const addUnit = useCallback((unit: number) => { + writeContract({ + abi, + address: contractAddress, + functionName: 'addUnit', + args: [unit, 1] + }) + }, [writeContract]) + console.log(player, army) return ( {children} diff --git a/app/src/styles/Army.module.css b/app/src/styles/Army.module.css index 6a1811b..bfdb598 100644 --- a/app/src/styles/Army.module.css +++ b/app/src/styles/Army.module.css @@ -113,3 +113,12 @@ .champion { filter: saturate(2); } + +.supply { + position: absolute; + bottom: -40px; + background: rgba(0, 0, 0, 0.89); + padding: 0.5rem 1rem; + font-size: 0.8rem; + user-select: none; +}