forked from mico/idle_moloch
Connected addUnit
This commit is contained in:
parent
20fa42cfca
commit
294052070a
@ -3,17 +3,22 @@ import styles from '../styles/Army.module.css';
|
|||||||
|
|
||||||
const Army = () => {
|
const Army = () => {
|
||||||
|
|
||||||
const { army } = usePlayer()
|
const { army, addUnit } = usePlayer()
|
||||||
|
|
||||||
|
|
||||||
return <div className="styles.armyGathering">
|
return <div className="styles.armyGathering">
|
||||||
<div className={`${styles.tavern_keeper} ${styles.person} ${styles.static}`} />
|
<div className={`${styles.tavern_keeper} ${styles.person} ${styles.static}`} />
|
||||||
<div className={`${styles.scribe} ${styles.person} ${styles.moloch_denier} ${styles.static}`}>
|
<div onClick={() => addUnit(0)} className={`${styles.scribe} ${styles.person} ${styles.moloch_denier} ${styles.static}`}>
|
||||||
<div className="supply"></div>
|
<div className={styles.supply}>Moloch denier: {army?.moloch_denier.level}</div>
|
||||||
|
</div>
|
||||||
|
<div onClick={() => addUnit(1)} className={`${styles.druid} ${styles.person} ${styles.apprentice} ${styles.static}`} >
|
||||||
|
<div className={styles.supply}>Apprentice: {army?.apprentice.level}</div>
|
||||||
|
</div>
|
||||||
|
<div onClick={() => addUnit(2)} className={`${styles.ranger} ${styles.person} ${styles.anointed} ${styles.static}`} >
|
||||||
|
<div className={styles.supply}>Anointed: {army?.anointed.level}</div>
|
||||||
|
</div>
|
||||||
|
<div onClick={() => addUnit(3)} className={`${styles.warrior} ${styles.person} ${styles.champion} ${styles.static}`} >
|
||||||
|
<div className={styles.supply}>Champion: {army?.champion.level}</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={`${styles.druid} ${styles.person} ${styles.apprentice} ${styles.static}`} ></div>
|
|
||||||
<div className={`${styles.ranger} ${styles.person} ${styles.anointed} ${styles.static}`} ></div>
|
|
||||||
<div className={`${styles.warrior} ${styles.person} ${styles.champion} ${styles.static}`} ></div>
|
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -43,7 +43,6 @@ const Header = () => {
|
|||||||
}, [isRegistered, register])
|
}, [isRegistered, register])
|
||||||
|
|
||||||
return <header onClick={onRegister} className={styles.header}>
|
return <header onClick={onRegister} className={styles.header}>
|
||||||
{count.current} {balance}
|
|
||||||
<h1 className={styles.title}>{title}</h1>
|
<h1 className={styles.title}>{title}</h1>
|
||||||
{subtitle}
|
{subtitle}
|
||||||
{perSecondParagraph}
|
{perSecondParagraph}
|
||||||
|
|||||||
@ -6,17 +6,28 @@ import { parseEther } from 'viem'
|
|||||||
const contractAddress = "0xbd06B0878888bf4c6895704fa603a5ADf7e65c66"
|
const contractAddress = "0xbd06B0878888bf4c6895704fa603a5ADf7e65c66"
|
||||||
const abi = contractAbi.abi
|
const abi = contractAbi.abi
|
||||||
|
|
||||||
export interface PlayerContextType {
|
export interface Player {
|
||||||
isRegistered: boolean,
|
created_at: bigint,
|
||||||
player: null | string,
|
last_raided_at: bigint,
|
||||||
army: null | { profit_per_second: bigint },
|
total_minted: bigint
|
||||||
balance: bigint,
|
}
|
||||||
register: () => void;
|
export interface Army {
|
||||||
raid: () => void
|
anointed: { level: number }
|
||||||
|
apprentice: { level: number }
|
||||||
|
champion: { level: number }
|
||||||
|
moloch_denier: { level: number }
|
||||||
|
profit_per_second: bigint
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Player { }
|
export interface PlayerContextType {
|
||||||
export interface Army { }
|
isRegistered: boolean,
|
||||||
|
player: null | Player,
|
||||||
|
army: null | Army,
|
||||||
|
balance: bigint,
|
||||||
|
register: () => void,
|
||||||
|
raid: () => void,
|
||||||
|
addUnit: (unit: number) => void
|
||||||
|
}
|
||||||
|
|
||||||
const PlayerContext = createContext<PlayerContextType>({
|
const PlayerContext = createContext<PlayerContextType>({
|
||||||
isRegistered: false,
|
isRegistered: false,
|
||||||
@ -25,6 +36,7 @@ const PlayerContext = createContext<PlayerContextType>({
|
|||||||
balance: BigInt(0),
|
balance: BigInt(0),
|
||||||
register: () => { },
|
register: () => { },
|
||||||
raid: () => { },
|
raid: () => { },
|
||||||
|
addUnit: () => { }
|
||||||
});
|
});
|
||||||
|
|
||||||
const PlayerProvider = ({ children }: { children: ReactNode }) => {
|
const PlayerProvider = ({ children }: { children: ReactNode }) => {
|
||||||
@ -96,16 +108,26 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => {
|
|||||||
})
|
})
|
||||||
}, [writeContract])
|
}, [writeContract])
|
||||||
|
|
||||||
|
const addUnit = useCallback((unit: number) => {
|
||||||
|
writeContract({
|
||||||
|
abi,
|
||||||
|
address: contractAddress,
|
||||||
|
functionName: 'addUnit',
|
||||||
|
args: [unit, 1]
|
||||||
|
})
|
||||||
|
}, [writeContract])
|
||||||
|
|
||||||
console.log(player, army)
|
console.log(player, army)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PlayerContext.Provider value={{
|
<PlayerContext.Provider value={{
|
||||||
isRegistered: isRegistered as boolean,
|
isRegistered: isRegistered as boolean,
|
||||||
player: player,
|
player: player as Player,
|
||||||
army: army,
|
army: army as Army,
|
||||||
balance: balance as bigint,
|
balance: balance as bigint,
|
||||||
register,
|
register,
|
||||||
raid
|
raid,
|
||||||
|
addUnit
|
||||||
}}>
|
}}>
|
||||||
{children}
|
{children}
|
||||||
</PlayerContext.Provider>
|
</PlayerContext.Provider>
|
||||||
|
|||||||
@ -113,3 +113,12 @@
|
|||||||
.champion {
|
.champion {
|
||||||
filter: saturate(2);
|
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;
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user