@@ -26,7 +26,9 @@ function App() {
26
26
const [ clickMultiplierBonus , setClickMultiplierBonus ] = useState ( 0 ) ; //set initial click multiplier bonus to 0
27
27
const [ clickerBonus , setClickerBonus ] = useState ( 0 ) ; //set initial clicker bonus to 0
28
28
const [ clickers , setClickers ] = useState ( 1 ) ; //set initial clickers to 1
29
+ const [ clicksMultiplier , setClicksMultiplier ] = useState ( 1 ) ; //set clicks multiplier to 1
29
30
const [ seconds , setSeconds ] = useState ( 0 ) ; //set initial seconds played to 0
31
+ const [ secondsMultiplier , setSecondsMultiplier ] = useState ( 1 ) ; //set clicks multiplier to 1
30
32
const updateClickers = useCallback ( ( ) => {
31
33
//update click multiplier for clickers
32
34
setClickMultiplier (
@@ -83,14 +85,14 @@ function App() {
83
85
const interval = setInterval ( ( ) => {
84
86
//increase points every second
85
87
setPoints ( ( prevPoints ) => prevPoints + pointsPerSecond ) ; //increase points by points per second
86
- setSeconds ( ( prevSeconds ) => prevSeconds + 1 ) ; //add 1 second
88
+ setSeconds ( ( prevSeconds ) => prevSeconds + secondsMultiplier ) ; //add seconds by seconds multiplier
87
89
updateClickers ( ) ; //update clickers value
88
90
updateAutoClickers ( ) ; //update auto clickers value
89
91
} , 1000 ) ;
90
92
return ( ) => {
91
93
clearInterval ( interval ) ; //clear interval when component unmounts
92
94
} ;
93
- } , [ pointsPerSecond , updateAutoClickers , updateClickers ] ) ;
95
+ } , [ pointsPerSecond , secondsMultiplier , updateAutoClickers , updateClickers ] ) ;
94
96
95
97
function checkPointsForUpgrade ( points , pointsRequired ) {
96
98
//check if user has enough points to upgrade
@@ -106,7 +108,7 @@ function App() {
106
108
function addPointsFromClick ( ) {
107
109
//add points from clicking a button
108
110
setPoints ( ( prevPoints ) => prevPoints + clickMultiplier ) ; //increase points by 1 when button clicked
109
- setClicks ( ( prevClicks ) => prevClicks + 1 ) ; //increase clicks made by 1
111
+ setClicks ( ( prevClicks ) => prevClicks + clicksMultiplier ) ; //increase clicks made by clicks multiplier
110
112
updateClickers ( ) ; //update clickers value
111
113
updateAutoClickers ( ) ; //update auto clickers value
112
114
}
@@ -340,6 +342,30 @@ function App() {
340
342
setMaxLevel ( ( prevMaxLevel ) => prevMaxLevel + 1 ) ; //increase max level by 1
341
343
}
342
344
}
345
+ function upgradeSecondsMultiplier ( ) {
346
+ //upgrade seconds multiplier
347
+ if (
348
+ checkPointsForUpgrade ( points , 1e5 * Math . pow ( 10 , secondsMultiplier - 1 ) )
349
+ ) {
350
+ setPoints (
351
+ ( prevPoints ) => prevPoints - 1e5 * Math . pow ( 10 , secondsMultiplier - 1 ) ,
352
+ ) ;
353
+ setSecondsMultiplier (
354
+ ( prevSecondsMultiplier ) => prevSecondsMultiplier + 1 ,
355
+ ) ; //increase seconds multiplier by 1
356
+ }
357
+ }
358
+ function upgradeClicksMultiplier ( ) {
359
+ //upgrade clicks multiplier
360
+ if (
361
+ checkPointsForUpgrade ( points , 1e6 * Math . pow ( 10 , clicksMultiplier - 1 ) )
362
+ ) {
363
+ setPoints (
364
+ ( prevPoints ) => prevPoints - 1e6 * Math . pow ( 10 , clicksMultiplier - 1 ) ,
365
+ ) ;
366
+ setClicksMultiplier ( ( prevClicksMultiplier ) => prevClicksMultiplier + 1 ) ; //increase clicks multiplier by 1
367
+ }
368
+ }
343
369
return (
344
370
//dynamic app HTML output
345
371
< div className = "App" >
@@ -409,6 +435,30 @@ function App() {
409
435
< CostDisplay cost = { 1e3 * Math . pow ( 10 , clickerBonus ) } />
410
436
</ td >
411
437
</ tr >
438
+ < tr >
439
+ < td >
440
+ Seconds Multiplier:{ ' ' }
441
+ < NumericDisplay value = { secondsMultiplier } shortForm = { false } />
442
+ < br />
443
+ { /*upgrade clicker bonus*/ }
444
+ < button onClick = { ( ) => upgradeSecondsMultiplier ( ) } >
445
+ Upgrade Seconds Multiplier
446
+ </ button >
447
+ < CostDisplay cost = { 1e5 * Math . pow ( 10 , secondsMultiplier - 1 ) } />
448
+ </ td >
449
+ </ tr >
450
+ < tr >
451
+ < td >
452
+ Clicks Multiplier:{ ' ' }
453
+ < NumericDisplay value = { clicksMultiplier } shortForm = { false } />
454
+ < br />
455
+ { /*upgrade clicker bonus*/ }
456
+ < button onClick = { ( ) => upgradeClicksMultiplier ( ) } >
457
+ Upgrade Clicks Multiplier
458
+ </ button >
459
+ < CostDisplay cost = { 1e6 * Math . pow ( 10 , clicksMultiplier - 1 ) } />
460
+ </ td >
461
+ </ tr >
412
462
< table >
413
463
< thead >
414
464
< tr >
0 commit comments