Path: blob/main/public/games/files/space-invaders/assets/javascript/module/Aliens.js
1520 views
/**1* Created by stryker on 2014.03.05..2*/3define(['module/HUD'],function(HUD){45//Private variables6var _game = null;7//var _alienGroups = [];8var _playerShip = null;910//Private class11//This is a wrapper for the aliengroup12//Instead of extending Phaser group, i wrap it up in a class13var _Aliens = function(configuration){14var _alienGroup = _game.add.group(),15_cols = configuration.cols,16_rows = configuration.rows,17_scoreValue = configuration.scoreValue,18_firingTime = configuration.firingTime,19_bulletSpeed = configuration.bulletSpeed,20_health = configuration.health,21_easing = configuration.easing,22_alien = null,23_tween = null,24_bulletGroup = null,25_bullet = null,26_explosionGroup = null,27_explosion = null,28_livingAlien = [],29_randomAlienIndex = null,30_shooter = null,31_shootingEvent = null;3233_alienGroup.enableBody = true;34_alienGroup.physicsBodyType = Phaser.Physics.ARCADE;35_createAllienGroup();3637function _createAllienGroup(){38//making aliens39for(var i=0;i < _cols;i++){40for(var j=0; j < _rows;j++){41_alien = _alienGroup.create(i * 48, j * 50, 'invader');4243//custome properties44_alien.health = _health;45_alien.myScore = _scoreValue;4647_alien.anchor.setTo(0.5, 0.5);48_alien.animations.add('fly', [ 0, 1, 2, 3 ], 20, true);49_alien.play('fly');50_alien.body.moves = false;51}52}535455//setting aliens postition56_alienGroup.x = 100;57_alienGroup.y = 50;5859// All this does is basically start the invaders moving.60_tween = _game.add.tween(_alienGroup).to( { x: 200 }, 2000, _easing, true, 0, 1000, true);6162}63646566var _fireBullet = function(){67_bullet = _bulletGroup.getFirstExists(false);6869_livingAlien = [];7071_alienGroup.forEachAlive(function(alien){72_livingAlien.push(alien);73});7475if(_bullet && _livingAlien.length > 0){7677//_bullet.lifespan = _game.height / (_bulletSpeed/1000);78_bullet.checkWorldBounds = true;7980_randomAlienIndex = _game.rnd.integerInRange(0,_livingAlien.length);8182_shooter = _livingAlien[_randomAlienIndex];8384if(_shooter){85_bullet.reset(_shooter.body.x,_shooter.body.y);8687_game.physics.arcade.moveToObject(_bullet,_playerShip,_bulletSpeed);88}89//all alien died90}else if(_livingAlien.length == 0){91_game.state.start('End');92}9394};9596var _collisionHandler = function(bullet, alien){9798alien.damage(bullet.bulletDamage);99bullet.kill();100101if(alien.health == 0){102_explosion = _explosionGroup.getFirstExists(false);103_explosion.reset(alien.body.x,alien.body.y);104_explosion.play('kaboom',30,false,true);105}106107HUD.updateScoreText(alien.myScore);108};109110//Public functions111return{112setBulletGroup: function(bullets){113_bulletGroup = bullets.getBulletGroup();114},115getBulletGroup: function(){116return _bulletGroup;117},118setExplosionGroup: function(explosions){119_explosionGroup = explosions.getExplosionGroup();120},121startShooting: function(){122_shootingEvent = _game.time.events.loop(_firingTime,_fireBullet,this);123},124stopShooting: function(){125_game.time.events.remove(_shootingEvent);126},127createOverLap: function(bulletGroup){128_game.physics.arcade.overlap(bulletGroup, _alienGroup, _collisionHandler, null, this);129},130getAlienGroup: function(){131return _alienGroup;132}133134}135136};//End of _Aliens137138//Public functions139return{140init: function(game){141_game = game;142},143preload: function(){144_game.load.spritesheet('invader', 'assets/img/invader32x32x4.png', 32, 32);145},146create: function(configuration){147return( new _Aliens(configuration) );148},149setPlayerShip: function(playerShip){150_playerShip = playerShip;151}152}153});154155