@@ -25,13 +25,15 @@ let state = store.getState();
2525const STRATEGIC_DEBT_AUTO_POSTPONE_MS = 15_000 ;
2626const KEYBOARD_WRITE_DEBOUNCE_MS = 180 ;
2727const KEYBOARD_HINT_VISIBLE_MS = 6000 ;
28+ const TOUCH_WRITE_SUPPRESS_CLICK_MS = 500 ;
2829
2930const app = document . querySelector ( "#app" ) ;
3031if ( ! ( app instanceof HTMLElement ) ) {
3132 throw new Error ( "Missing #app root" ) ;
3233}
3334const { elements, buttons, statCards } = mountGameShell ( app ) ;
3435let lastKeyboardWriteAt = 0 ;
36+ let lastTouchWriteAt = 0 ;
3537const audio = createAudioController ( { isGameOver } ) ;
3638const codeBackground = createCodeBackgroundController ( {
3739 container : elements . codeBackground ,
@@ -62,6 +64,7 @@ const managementPanels = createManagementPanelsController({
6264 prestigeUpgradeList : elements . prestigeUpgradeList ,
6365 goalTarget : elements . goalTarget ,
6466 goalProgress : elements . goalProgress ,
67+ goalProgressFill : elements . goalProgressFill ,
6568 goalReward : elements . goalReward ,
6669 prestigeReset : elements . prestigeReset ,
6770 } ,
@@ -98,8 +101,26 @@ function applyAction(action: GameAction): void {
98101 render ( ) ;
99102}
100103
101- buttons . click . addEventListener ( "click" , ( ) => {
104+ const performManualWriteFromUi = ( ) : void => {
102105 manualWrite . performManualWrite ( COMBO_CALLOUTS ) ;
106+ } ;
107+
108+ buttons . click . addEventListener ( "pointerdown" , ( event ) => {
109+ if ( event . pointerType === "mouse" ) {
110+ return ;
111+ }
112+ if ( event . cancelable ) {
113+ event . preventDefault ( ) ;
114+ }
115+ lastTouchWriteAt = Date . now ( ) ;
116+ performManualWriteFromUi ( ) ;
117+ } ) ;
118+
119+ buttons . click . addEventListener ( "click" , ( ) => {
120+ if ( Date . now ( ) - lastTouchWriteAt < TOUCH_WRITE_SUPPRESS_CLICK_MS ) {
121+ return ;
122+ }
123+ performManualWriteFromUi ( ) ;
103124} ) ;
104125
105126window . addEventListener ( "keydown" , ( event ) => {
0 commit comments