diff --git a/src/App.tsx b/src/App.tsx index 95de417..5c72efe 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -41,13 +41,15 @@ function App() { getAvailableBuildings, tick, clickPower, - click + click, + getClickPowerUpgradeCost } = useGameStore() const [agreedToTerms, setAgreedToTerms] = useState(false) const [hasStarted, setHasStarted] = useState(false) const { isOpen, onClose } = useDisclosure({ defaultIsOpen: true }) const availableBuildings = getAvailableBuildings() + const clickPowerUpgradeCost = getClickPowerUpgradeCost() // Set up game tick interval useEffect(() => { @@ -140,12 +142,12 @@ function App() { diff --git a/src/store/gameStore.ts b/src/store/gameStore.ts index bd02430..f94c1e1 100644 --- a/src/store/gameStore.ts +++ b/src/store/gameStore.ts @@ -55,6 +55,7 @@ interface GameState { // Upgrades autoClickers: number clickPower: number + clickPowerUpgrades: number // Production rates pointsPerSecond: number @@ -69,6 +70,7 @@ interface GameState { resetGame: () => void tick: () => void upgradeBuilding: (buildingType: BuildingType) => void + getClickPowerUpgradeCost: () => number // New getter for available buildings getAvailableBuildings: () => BuildingInfo[] @@ -210,6 +212,7 @@ const initialState = { dataGodsLevel: 1, autoClickers: 0, clickPower: 1, + clickPowerUpgrades: 0, pointsPerSecond: 0, playerLevel: 1, } @@ -277,6 +280,11 @@ const calculateUpgradeCost = (buildingType: BuildingType, currentLevel: number): return Math.floor(baseCost * Math.pow(1.5, currentLevel - 1)) } +// Helper function to calculate click power upgrade cost +const calculateClickPowerUpgradeCost = (upgrades: number): number => { + return Math.floor(20 * Math.pow(1.5, upgrades)); +} + type BuildingType = keyof typeof BUILDING_COSTS type UpgradeType = 'autoClickers' | 'clickPower' @@ -326,14 +334,24 @@ export const useGameStore = create()( const state = get() // Handle upgrade purchase - if (upgradeType === 'clickPower' && state.points >= 20) { - set((state) => ({ - points: state.points - 20, - clickPower: state.clickPower + 1 - })) + if (upgradeType === 'clickPower') { + const cost = calculateClickPowerUpgradeCost(state.clickPowerUpgrades) + + if (state.points >= cost) { + set((state) => ({ + points: state.points - cost, + clickPower: state.clickPower + 1, + clickPowerUpgrades: state.clickPowerUpgrades + 1 + })) + } } }, + getClickPowerUpgradeCost: () => { + const { clickPowerUpgrades } = get() + return calculateClickPowerUpgradeCost(clickPowerUpgrades) + }, + upgradeBuilding: (buildingType: BuildingType) => { const state = get() const currentLevel = state[`${buildingType}Level` as keyof GameState] as number