@@ -114,6 +114,100 @@ PrinceJS.Utils = {
114114 return Math . floor ( Math . random ( ) * Math . floor ( max ) ) ;
115115 } ,
116116
117+ continueGame : function ( game ) {
118+ return PrinceJS . Utils . pointerPressed ( game ) || PrinceJS . Utils . gamepadAnyPressed ( game ) ;
119+ } ,
120+
121+ gamepadButtonPressedCheck : function ( game , buttons , name = "default" ) {
122+ if ( this [ `_${ name } Pressed` ] ) {
123+ return false ;
124+ }
125+ let pressed = false ;
126+ let pad = game . input . gamepad . pad1 ;
127+ if ( pad && pad . connected ) {
128+ if ( ! buttons ) {
129+ buttons = Object . keys ( pad . _rawPad . buttons ) . map ( ( button ) => parseInt ( button ) ) ;
130+ }
131+ for ( let button of buttons ) {
132+ if ( pad . justPressed ( button ) ) {
133+ pressed = true ;
134+ }
135+ }
136+ }
137+ if ( pressed ) {
138+ this [ `_${ name } Pressed` ] = true ;
139+ PrinceJS . Utils . delayed ( ( ) => {
140+ this [ `_${ name } Pressed` ] = false ;
141+ } , 500 ) ;
142+ }
143+ return pressed ;
144+ } ,
145+
146+ gamepadButtonDownCheck : function ( game , buttons ) {
147+ let pad = game . input . gamepad . pad1 ;
148+ if ( pad && pad . connected ) {
149+ if ( ! buttons ) {
150+ buttons = Object . keys ( pad . _rawPad . buttons ) . map ( ( button ) => parseInt ( button ) ) ;
151+ }
152+ for ( let button of buttons ) {
153+ if ( pad . isDown ( button ) ) {
154+ return true ;
155+ }
156+ }
157+ }
158+ return false ;
159+ } ,
160+
161+ gamepadAxisCheck : function ( game , axes , comparison ) {
162+ let pad = game . input . gamepad . pad1 ;
163+ if ( pad && pad . connected ) {
164+ for ( let axis of axes ) {
165+ if ( comparison === "<" && pad . axis ( axis ) < - 0.75 ) {
166+ return true ;
167+ } else if ( comparison === ">" && pad . axis ( axis ) > 0.75 ) {
168+ return true ;
169+ }
170+ }
171+ }
172+ return false ;
173+ } ,
174+
175+ gamepadAnyPressed : function ( game ) {
176+ return PrinceJS . Utils . gamepadButtonPressedCheck ( game ) ;
177+ } ,
178+
179+ gamepadUpPressed : function ( game ) {
180+ return PrinceJS . Utils . gamepadButtonDownCheck ( game , [ 1 , 5 , 7 , 12 ] ) || PrinceJS . Utils . gamepadAxisCheck ( game , [ 1 , 3 ] , "<" ) ;
181+ } ,
182+
183+ gamepadDownPressed : function ( game ) {
184+ return PrinceJS . Utils . gamepadButtonDownCheck ( game , [ 13 ] ) || PrinceJS . Utils . gamepadAxisCheck ( game , [ 1 , 3 ] , ">" ) ;
185+ } ,
186+
187+ gamepadLeftPressed : function ( game ) {
188+ return PrinceJS . Utils . gamepadButtonDownCheck ( game , [ 14 ] ) || PrinceJS . Utils . gamepadAxisCheck ( game , [ 0 , 2 ] , "<" ) ;
189+ } ,
190+
191+ gamepadRightPressed : function ( game ) {
192+ return PrinceJS . Utils . gamepadButtonDownCheck ( game , [ 15 ] ) || PrinceJS . Utils . gamepadAxisCheck ( game , [ 0 , 2 ] , ">" ) ;
193+ } ,
194+
195+ gamepadActionPressed : function ( game ) {
196+ return PrinceJS . Utils . gamepadButtonDownCheck ( game , [ 0 , 2 , 3 , 4 , 6 ] ) ;
197+ } ,
198+
199+ gamepadInfoPressed : function ( game ) {
200+ return PrinceJS . Utils . gamepadButtonPressedCheck ( game , [ 16 , 17 , 18 , 19 , 20 , 21 ] , "info" ) ;
201+ } ,
202+
203+ gamepadPreviousPressed : function ( game ) {
204+ return PrinceJS . Utils . gamepadButtonPressedCheck ( game , [ 8 ] , "previous" ) ;
205+ } ,
206+
207+ gamepadNextPressed : function ( game ) {
208+ return PrinceJS . Utils . gamepadButtonPressedCheck ( game , [ 9 ] , "next" ) ;
209+ } ,
210+
117211 pointerPressed : function ( game ) {
118212 let pointerPressed = this . _pointerPressed ;
119213 this . _pointerPressed = PrinceJS . Utils . pointerDown ( game ) ;
0 commit comments