@@ -61,7 +61,7 @@ const textStyle = new PIXI.TextStyle({
6161
6262// Menu stuff
6363
64- const infoText = new PIXI . Text ( " [F] to enter fullscreen\n [Esc] to pause the game\n\n [A] is left, [D] is right\n[W] is jump, [S] is to drop\n\nGetting hit by an enemy die\n will lower your health by\n the shown number, jumping\n on top of it will restore\n your health by the number\n\n\n Press [W ]" , textStyle ) ;
64+ const infoText = new PIXI . Text ( " [F] to enter fullscreen\n [Esc] to pause the game\n\n [A] is left, [D] is right\n[W] is jump, [S] is to drop\n\nGetting hit by an enemy die\n will lower your health by\n the shown number, jumping\n on top of it will restore\n your health by the number\n\n\n Press [Enter ]" , textStyle ) ;
6565infoText . x = app . view . width * 0.5 ;
6666infoText . y = app . view . height * 0.5 ;
6767infoText . anchor = { x : 0.5 , y : 0.5 } ;
@@ -80,7 +80,7 @@ topMessage.y = app.view.height * 0.1;
8080topMessage . anchor = { x : 0.5 , y : 0.5 } ;
8181allocationScreen . addChild ( topMessage ) ;
8282
83- const newRolls = [ 0 , 0 , 0 , 0 ] ;
83+ let newRolls = [ ] ;
8484
8585let rollSprite = [ ] ;
8686
@@ -110,10 +110,11 @@ statName[3].y = app.view.height * 0.4;
110110statName [ 3 ] . anchor = { x : 0.5 , y : 0.5 } ;
111111allocationScreen . addChild ( statName [ 3 ] ) ;
112112
113- const directions = new PIXI . Text ( "Set the rules for the next level by dragging the dice " , textStyle )
113+ const directions = new PIXI . Text ( "Press [W] try your luck in the next level... " , textStyle )
114114directions . x = app . view . width * 0.5 ;
115- directions . y = app . view . height * 0.85 ;
115+ directions . y = app . view . height * 0.9 ;
116116directions . anchor = { x : 0.5 , y : 0.5 } ;
117+ directions . visible = false ;
117118allocationScreen . addChild ( directions ) ;
118119
119120// Scene stuff
@@ -157,37 +158,30 @@ app.ticker.add((deltaTime) => {
157158 scene . visible = false ;
158159 allocationScreen . visible = false ;
159160 menuScore . text = "Level " + states . level + " | " + states . score + " points" ;
160- rollSprite = [ ] ;
161161
162- if ( PIXI . input . getKeyFired ( "w " ) ) {
162+ if ( PIXI . input . getKeyFired ( "enter " ) ) {
163163 states . start = true ;
164+ states . allocation = true ;
164165 states . life = 6 ;
165166 states . speed = 3 ;
166167 states . speedMult = 3 ;
167168 states . jump = 3 ;
168169 states . jumpMult = 3 ;
169170 states . danger = 3 ;
170171 states . dangerSpawnBoost = 0 ;
171- states . level = 1 ;
172+ states . level = 0 ;
172173 states . dangerCount = 0 ;
173174 states . score = 0 ;
174175
175176 player . x = app . view . width * 0.5 ;
176177 player . y = app . view . height ;
177178 player . anchor = { x : 0.5 , y : 1.0 } ;
178179 player . vec = { x : 0 , y : 0 } ;
179- player . tint = 0x33ff44 ;
180- states . allocation = true ;
181180 }
182181 } else {
183182
184183 menu . visible = false ;
185184
186- if ( ! states . pause && PIXI . input . getKeyFired ( "escape" ) ) {
187- states . pause = true ;
188- pauseText . visible = true ;
189- }
190-
191185 if ( states . allocation ) {
192186
193187 scene . visible = false ;
@@ -241,144 +235,141 @@ app.ticker.add((deltaTime) => {
241235 }
242236 } ) ;
243237
244- if ( PIXI . input . getKeyFired ( "w" ) ) {
245- states . level ++ ;
246- states . allocation = false ;
247- states . jump = newRolls [ 0 ] ;
248- states . speed = newRolls [ 1 ] ;
249- states . danger = newRolls [ 2 ] ;
250- states . life = newRolls [ 3 ] ;
238+ if ( newRolls . length == 4 ) {
239+ directions . visible = true ;
240+ if ( PIXI . input . getKeyFired ( "w" ) ) {
241+ states . dangerCount = 0 ;
242+ states . level ++ ;
243+ states . allocation = false ;
244+ states . jump = newRolls [ 0 ] ;
245+ states . speed = newRolls [ 1 ] ;
246+ states . danger = newRolls [ 2 ] ;
247+ states . life = newRolls [ 3 ] ;
248+ for ( let i = 0 ; i < 4 ; i ++ ) {
249+ allocationScreen . removeChild ( rollSprite [ i ] ) ;
250+ }
251+ rollSprite = [ ] ;
252+ newRolls = [ ] ;
253+ directions . visible = false ;
254+ }
251255 }
252256
253257 } else {
254- if ( ! states . pause ) {
255-
258+ allocationScreen . visible = false ;
259+ scene . visible = true ;
256260
257- allocationScreen . visible = false ;
258- scene . visible = true ;
261+ let t = Math . max ( states . life , 1 ) ;
262+ player . texture = diceImg [ t ] ;
263+ player . tint = lifeTint [ t ] ;
259264
260- let t = Math . max ( states . life , 1 ) ;
261- player . texture = diceImg [ t ] ;
262- player . tint = lifeTint [ t ] ;
265+ score . text = "Level " + states . level + " | " + states . score + " points, " + ( 25 + states . level * 5 - states . dangerCount ) + " dice left" ;
263266
264- score . text = "Level " + states . level + " | " + states . score + " points, " + ( 25 + states . level * 5 - states . dangerCount ) + " dice left" ;
267+ // X velocity
268+ player . vec . x = clamp ( player . vec . x * ( 1 - ( 0.1 * deltaTime ) * ( player . vec . y == 0 ) ) + ( PIXI . input . getKeyDown ( "d" ) - PIXI . input . getKeyDown ( "a" ) ) * ( player . vec . y == 0 ) * states . speedMult , ( states . speed + 2 ) * - states . speedMult , ( states . speed + 2 ) * states . speedMult ) ;
265269
266- // X velocity
267- player . vec . x = clamp ( player . vec . x * ( 1 - ( 0.1 * deltaTime ) * ( player . vec . y == 0 ) ) + ( PIXI . input . getKeyDown ( "d" ) - PIXI . input . getKeyDown ( "a" ) ) * ( player . vec . y == 0 ) * states . speedMult , states . speed * - states . speedMult , states . speed * states . speedMult ) ;
268-
269- // Y velocity
270- if ( player . y < app . view . height ) {
271- player . vec . y += 1 + 1.5 * ( ! PIXI . input . getKeyDown ( "w" ) || ( player . vec . y > 0 ) ) + 2.5 * PIXI . input . getKeyDown ( "s" ) ;
270+ // Y velocity
271+ if ( player . y < app . view . height ) {
272+ player . vec . y += 1 + 1.5 * ( ! PIXI . input . getKeyDown ( "w" ) || ( player . vec . y > 0 ) ) + 2.5 * PIXI . input . getKeyDown ( "s" ) ;
273+ } else {
274+ if ( PIXI . input . getKeyFired ( "w" ) ) {
275+ player . vec . y = - 14 - states . jump * states . jumpMult ;
272276 } else {
273- if ( PIXI . input . getKeyFired ( "w" ) ) {
274- player . vec . y = - 14 - states . jump * states . jumpMult ;
275- } else {
276- player . vec . y = 0 ;
277- player . y = app . view . height ;
278- }
277+ player . vec . y = 0 ;
278+ player . y = app . view . height ;
279279 }
280+ }
280281
281- // Player X position
282- player . x += player . vec . x ;
283- if ( player . x < player . width * 0.5 ) {
284- player . x = player . width * 0.5 ;
285- player . vec . x *= - phys . bounce ;
286- } else if ( player . x > app . view . width - player . width * 0.5 ) {
287- player . x = ( app . view . width - player . width * 0.5 ) ;
288- player . vec . x *= - phys . bounce ;
289- }
290- // Player Y position
291- player . y = Math . min ( player . y + player . vec . y , app . view . height ) ^ 0 ;
292-
293- // Dangers
294- dangerSet . forEach ( ( danger ) => {
295- switch ( danger . type ) {
296- case 0 :
297- danger . vec . y ++ ;
298- danger . y = ( danger . y + danger . vec . y ) ^ 0 ;
299- if ( danger . y >= app . view . height ) {
300- danger . y = app . view . height ;
301- danger . vec . y *= - phys . bounce ;
302- danger . vec . x = danger . vec . x * phys . bounce + ( Math . random ( ) - 0.5 ) * danger . vec . y ;
303- if ( danger . vec . y < - 2 ) {
304- states . score += danger . facing ;
305- danger . facing = rand ( 1 , 6 ) ;
306- danger . texture = diceImg [ danger . facing ] ;
307- danger . tint = dangerTint [ danger . facing ] ;
308- }
309- }
310- danger . x = ( danger . x + danger . vec . x ) ^ 0 ;
311- if ( danger . x < danger . width * 0.5 ) {
312- danger . x = danger . width * 0.5 ;
313- danger . vec . x *= - phys . bounce ;
314- } else if ( danger . x > app . view . width - danger . width * 0.5 ) {
315- danger . x = app . view . width - danger . width * 0.5 ;
316- danger . vec . x *= - phys . bounce ;
282+ // Player X position
283+ player . x += player . vec . x ;
284+ if ( player . x < player . width * 0.5 ) {
285+ player . x = player . width * 0.5 ;
286+ player . vec . x *= - phys . bounce ;
287+ } else if ( player . x > app . view . width - player . width * 0.5 ) {
288+ player . x = ( app . view . width - player . width * 0.5 ) ;
289+ player . vec . x *= - phys . bounce ;
290+ }
291+ // Player Y position
292+ player . y = Math . min ( player . y + player . vec . y , app . view . height ) ^ 0 ;
293+
294+ // Dangers
295+ dangerSet . forEach ( ( danger ) => {
296+ switch ( danger . type ) {
297+ case 0 :
298+ danger . vec . y ++ ;
299+ danger . y = ( danger . y + danger . vec . y ) ^ 0 ;
300+ if ( danger . y >= app . view . height ) {
301+ danger . y = app . view . height ;
302+ danger . vec . y *= - phys . bounce ;
303+ danger . vec . x = danger . vec . x * phys . bounce + ( Math . random ( ) - 0.5 ) * danger . vec . y ;
304+ if ( danger . vec . y < - 2 ) {
305+ states . score += danger . facing ;
306+ danger . facing = rand ( 1 , 6 ) ;
307+ danger . texture = diceImg [ danger . facing ] ;
308+ danger . tint = dangerTint [ danger . facing ] ;
317309 }
318- break ;
319- }
320- if ( PIXI . collision . aabb ( player , danger ) ) {
321- if ( player . y + player . height * 0.45 < danger . y ) {
322- // Jumped on top, score up AND heal AND bounce
323- states . life = clamp ( states . life + danger . facing , 1 , 6 )
324- player . vec . y = - 24 - states . jump * states . jumpMult ;
325- states . score += danger . facing * 3 ;
326- states . dangerCount ++ ;
327- } else {
328- // Hit by danger, lose life
329- states . life -= danger . facing ;
330310 }
331- scene . removeChild ( danger ) ;
332- dangerSet . delete ( danger ) ;
333- } else if ( Math . abs ( danger . vec . y ) < 0.25 && danger . y == app . view . height ) {
334- states . score += danger . facing ;
311+ danger . x = ( danger . x + danger . vec . x ) ^ 0 ;
312+ if ( danger . x < danger . width * 0.5 ) {
313+ danger . x = danger . width * 0.5 ;
314+ danger . vec . x *= - phys . bounce ;
315+ } else if ( danger . x > app . view . width - danger . width * 0.5 ) {
316+ danger . x = app . view . width - danger . width * 0.5 ;
317+ danger . vec . x *= - phys . bounce ;
318+ }
319+ break ;
320+ }
321+ if ( PIXI . collision . aabb ( player , danger ) ) {
322+ if ( player . y + player . height * 0.45 < danger . y ) {
323+ // Jumped on top, score up AND heal AND bounce
324+ states . life = clamp ( states . life + danger . facing , 1 , 6 )
325+ player . vec . y = - 24 - states . jump * states . jumpMult ;
326+ states . score += danger . facing * 3 ;
335327 states . dangerCount ++ ;
336- scene . removeChild ( danger ) ;
337- dangerSet . delete ( danger ) ;
338- }
339- } ) ;
340-
341- if ( dangerSet . size < states . danger + states . level && Math . random ( ) < states . dangerSpawnBoost ) {
342- states . dangerSpawnBoost = 0 ;
343- let num = rand ( 1 , 6 ) ;
344- let newDanger = PIXI . Sprite . from ( diceImg [ num ] ) ;
345- newDanger . type = 0 ;
346- newDanger . facing = num ;
347- switch ( newDanger . type ) {
348- case 0 :
349- newDanger . width = 64 ;
350- newDanger . height = 64 ;
351- newDanger . y = 0 ;
352- newDanger . x = clamp ( player . x + ( ( Math . random ( ) - 0.5 ) * app . view . width ) , newDanger . width * 0.5 , app . view . width - newDanger . width * 0.5 ) ^ 0 ;
353- newDanger . vec = {
354- x : 0 ,
355- y : 0
356- }
357- newDanger . anchor = {
358- x : 0.5 ,
359- y : 1.0
360- }
361- newDanger . tint = dangerTint [ num ] ;
362- break ;
328+ } else {
329+ // Hit by danger, lose life
330+ states . life -= danger . facing ;
363331 }
364- scene . addChild ( newDanger ) ;
365- dangerSet . add ( newDanger ) ;
366- } else {
367- states . dangerSpawnBoost += 0.00005 * ( states . danger + states . level ) ;
332+ scene . removeChild ( danger ) ;
333+ dangerSet . delete ( danger ) ;
334+ } else if ( Math . abs ( danger . vec . y ) < 0.25 && danger . y == app . view . height ) {
335+ states . score += danger . facing ;
336+ states . dangerCount ++ ;
337+ scene . removeChild ( danger ) ;
338+ dangerSet . delete ( danger ) ;
368339 }
340+ } ) ;
369341
370- if ( states . dangerCount >= 25 + states . level * 5 ) {
371- states . dangerCount = 0 ;
372- states . level ++ ;
373- states . pause = true ;
374- states . allocation = true ;
375- rollSprite = [ ] ;
342+ if ( dangerSet . size < states . danger + states . level && Math . random ( ) < states . dangerSpawnBoost ) {
343+ states . dangerSpawnBoost = 0 ;
344+ let num = rand ( 1 , 6 ) ;
345+ let newDanger = PIXI . Sprite . from ( diceImg [ num ] ) ;
346+ newDanger . type = 0 ;
347+ newDanger . facing = num ;
348+ switch ( newDanger . type ) {
349+ case 0 :
350+ newDanger . width = 64 ;
351+ newDanger . height = 64 ;
352+ newDanger . y = 0 ;
353+ newDanger . x = clamp ( player . x + ( ( Math . random ( ) - 0.5 ) * app . view . width ) , newDanger . width * 0.5 , app . view . width - newDanger . width * 0.5 ) ^ 0 ;
354+ newDanger . vec = {
355+ x : 0 ,
356+ y : 0
357+ }
358+ newDanger . anchor = {
359+ x : 0.5 ,
360+ y : 1.0
361+ }
362+ newDanger . tint = dangerTint [ num ] ;
363+ break ;
376364 }
365+ scene . addChild ( newDanger ) ;
366+ dangerSet . add ( newDanger ) ;
377367 } else {
378- if ( PIXI . input . getKeyFired ( "escape" ) ) {
379- states . pause = false ;
380- pauseText . visible = false ;
381- }
368+ states . dangerSpawnBoost += 0.00005 * ( states . danger + states . level ) ;
369+ }
370+
371+ if ( states . dangerCount >= 25 + states . level * 5 ) {
372+ states . allocation = true ;
382373 }
383374 }
384375
0 commit comments