Path: blob/main/public/games/files/garbage-collector/js/main.js
1036 views
/*jshint bitwise: false*/1/* globals requirejs, define*/2requirejs.config({3shim: {4box2d: {5exports: 'Box2D'6}7},8paths: {9box2d: 'Box2dWeb/Box2dWeb-2.1.a.3.min'10}11});1213define(function( require ) {14'use strict';1516var Game = require( 'game' );17var Player = require( 'entities/player' );1819var Material = require( 'config/material' );2021var game = Game.instance = new Game();22game.setPlayer( new Player() );23game.camera.target = game.player;2425// Add game element to body.26game.element.classList.add( 'game' );27document.body.insertBefore( game.element, document.body.firstChild );2829// Setup input.30var input = game.input;3132document.addEventListener( 'keydown', input.onKeyDown.bind( input ) );33document.addEventListener( 'keyup', input.onKeyUp.bind( input ) );3435if ( typeof window.ontouchstart !== 'undefined' ) {36game.canvas.addEventListener( 'touchstart', input.onTouchStart.bind( input ) );37game.canvas.addEventListener( 'touchmove', input.onTouchMove.bind( input ) );38game.canvas.addEventListener( 'touchend', input.onTouchEnd.bind( input ) );39}4041// Toggle player material.42var materialBtn = document.getElementById( 'material-btn' );43function togglePlayerMaterial() {44game.player.toggleMaterial();4546if ( game.player.material & Material.MATTER ) {47materialBtn.innerHTML = 'matter';48materialBtn.classList.add( 'matter' );49materialBtn.classList.remove( 'antimatter' );50} else if ( game.player.material & Material.ANTIMATTER ) {51materialBtn.innerHTML = 'antimatter';52materialBtn.classList.add( 'antimatter' );53materialBtn.classList.remove( 'matter' );54}55}5657togglePlayerMaterial();58materialBtn.addEventListener( 'click', togglePlayerMaterial );5960document.addEventListener( 'keydown', function( event ) {61// Space.62if ( event.which === 32 ) {63if ( game && game.player ) {64event.preventDefault();65togglePlayerMaterial();66}67}68});6970window.addEventListener( 'blur', function() {71game.running = false;7273// Disable all inputs.74Object.keys( game.input.keys ).forEach(function( key ) {75game.input.keys[ key ] = false;76});7778Object.keys( game.input.controls ).forEach(function( control ) {79game.input.controls[ control ] = false;80});81});8283window.addEventListener( 'focus', function() {84game.running = true;85game.tick();86});8788// Title view.89var TitleView = require( 'views/title-view' );90var titleView = new TitleView();91document.body.insertBefore( titleView.el, document.body.firstChild );9293var SettingsView = require( 'views/settings-view' );94var settingsView = new SettingsView();95document.body.insertBefore( settingsView.el, document.body.firstChild );9697// Start on click.98var startBtn = titleView.el.querySelector( '#start-btn' );99function start() {100titleView.remove();101startBtn.removeEventListener( 'click', start );102103// Start game.104game.tick();105106var level = require( 'levels/level-01' );107level( game );108}109110startBtn.addEventListener( 'click', start );111112// For debugging purposes.113if ( window.localStorage.getItem( 'debug' ) ) {114start();115var level = require( 'levels/level-03' );116level( game );117}118});119120121