function pause_click_handler() { paused = !paused; if (!paused) { this.style.opacity = 0; reset_puck(puck); } else { this.style.opacity = 1; } }
update(game) { game.physics.arcade.collide(puck, [paddles.n, paddles.s, paddles.e, paddles.w], hit_puck, null, this); paddles.n.body.velocity.setMagnitude(0); paddles.s.body.velocity.setMagnitude(0); paddles.e.body.velocity.setMagnitude(0); paddles.w.body.velocity.setMagnitude(0); update_bg_color(game); let oob = check_out_of_bounds(game, puck); if (oob) { hit_world(puck, oob); } /* * this is weird, let's not forget about this. this should be * handled in the pause_click_handler but for some reason the puck * is not being placed back in the center of the game */ if (paused) { reset_puck(puck, false); } // check for players pressing start to join the game each(player_codes, log_in_if_start_pressed); // check for gamepad input during login each(player_codes, navigate_ui_if_logging_in); // map input to commands each(player_codes, move_paddle); each(player_codes, execute_powerup_if_a); each(player_codes, rotate_powerup_if_b); // update the player status scorecards scorecards.update(players); }
create(game) { scorecards.create(players); game.physics.startSystem(Phaser.Physics.ARCADE); scores.reset_all(); puck = game.add.sprite( game.world.centerX, game.world.centerY, 'puck'); // dangit, players need references to puck, to pass into powerups that affect the puck // I shoulda just made everything globa, for a game this size. :) players.n.puck = puck; players.s.puck = puck; players.e.puck = puck; players.w.puck = puck; // end of dangit paddles.n = game.add.sprite( game.world.centerX, conf.PADDLE_PLACEMENT_WORLD_PADDING, 'paddle-blue'); paddles.s = game.add.sprite( game.world.centerX, game.world.height - conf.PADDLE_PLACEMENT_WORLD_PADDING - 20, 'paddle-green'); paddles.e = game.add.sprite( game.world.width - conf.PADDLE_PLACEMENT_WORLD_PADDING, game.world.centerY, 'paddle-yellow'); paddles.w = game.add.sprite( conf.PADDLE_PLACEMENT_WORLD_PADDING + 20, game.world.centerY, 'paddle-red'); paddles.n.addChild(game.make.sprite(0, 0, 'paddle-blue')); paddles.w.angle = 90; paddles.e.angle = 90; game.physics.enable([puck, paddles.n, paddles.s, paddles.e, paddles.w], Phaser.Physics.ARCADE); puck.name = 'PUCK'; puck.body.setSize(20, 20, puck.height/2 - 10, puck.width/2 - 10); reset_puck(puck); paddles.n.name = 'n'; paddles.s.name = 's'; paddles.e.name = 'e'; paddles.w.name = 'w'; paddles.n.body.immovable = true; paddles.s.body.immovable = true; paddles.e.body.immovable = true; paddles.w.body.immovable = true; paddles.n.body.collideWorldBounds = true; paddles.s.body.collideWorldBounds = true; paddles.e.body.collideWorldBounds = true; paddles.w.body.collideWorldBounds = true; set_body_to_sprite_size(paddles.n); set_body_to_sprite_size(paddles.s); set_body_to_sprite_size(paddles.e, true); set_body_to_sprite_size(paddles.w, true); // not sure why this offset is needed, but it lines up the hitboxes with // the sprites. paddles.w.body.offset.x = -20; paddles.e.body.offset.x = -20; // pad_n.body.offset.y = +20; // pad_s.body.offset.y = +20; // puck.body.collideWorldBounds = true; puck.body.bounce.setTo(1, 1); update_bg_color(game); // add points to players periodically game.time.events.loop(Phaser.Timer.SECOND * conf.SCORING_SEC_PER_POINT, tick, this); let press_start_elements = document.querySelectorAll('.press-start'); invoke(press_start_elements, 'addEventListener', 'click', press_start_click_handler, false); let pause_button = document.querySelector('#pause-btn'); pause_button.addEventListener('click', pause_click_handler, false); }