Path: blob/main/public/games/files/garbage-collector/js/levels/utils-level.js
1036 views
/*globals define*/1define(function( require ) {2'use strict';34var Level = require( 'level' );56var Colors = require( 'config/colors' );7var Material = require( 'config/material' );89var Polygon = require( 'geometry/polygon' );10var Segment = require( 'geometry/segment' );1112var Player = require( 'entities/player' );13var Trail = require( 'effects/trail' );1415function addTrail( game ) {16var trail = new Trail();17trail.fill.set({18red: 255,19green: 255,20blue: 255,21alpha: 0.222});2324trail.target = game.player;25game.add( trail );26}2728function addBackground( game, red, green, blue, alpha ) {29game.background.fill.set({30red: red,31green: green,32blue: blue,33alpha: alpha34});3536game.background.prerender();37}3839function playerMaterialOff( game ) {40// Prevent player from changing material.41var materialBtn = document.getElementById( 'material-btn' );42materialBtn.style.display = 'none';43game.player.toggleMaterial = function() {};44}4546function playerMaterialOn( game ) {47// Allow player to change material.48var materialBtn = document.getElementById( 'material-btn' );49materialBtn.style.display = '';50game.player.toggleMaterial = Player.prototype.toggleMaterial;51}5253function loadData( game, data ) {54game.load({55entities: Level.loadBatchPhysicsEntities( JSON.parse( data ) )56});57}5859// Helper functions for emitters.60function normalSpawnArea( width ) {61var halfWidth = 0.5 * width;62return new Segment( 0, -halfWidth, 0, halfWidth );63}6465function normalTrash( material ) {66var trash = new Polygon();6768trash.vertices = [ 0.75, 0.75, -0.75, 0.75, -0.75, -0.75, 0.75, -0.75 ];69trash.fill.set( Colors.Solid[ Material.type( material ) ] );70trash.stroke.set( Colors.White );71trash.lineWidth = 0.2;7273return trash;74}7576function normalTrashProperties( trash, material ) {77return {78shape: 'polygon',79type: 'vector',80data: trash.vertices.slice(),81fixture: {82density: 1.75,83friction: 0.5,84restitution: 0.2,85filter: {86categoryBits: material87}88},89body: {90angularVelocity: 3 * Math.PI,91linearDamping: 0.2,92type: 'dynamic'93}94};95}9697return {98addTrail: addTrail,99addBackground: addBackground,100101playerMaterialOff: playerMaterialOff,102playerMaterialOn: playerMaterialOn,103104loadData: loadData,105106// emitter helpers.107normalSpawnArea: normalSpawnArea,108normalTrash: normalTrash,109normalTrashProperties: normalTrashProperties110};111});112113114