113 lines
2.7 KiB
JavaScript
113 lines
2.7 KiB
JavaScript
|
|
// -- Init the Background DIV
|
|
Layouts.Ennemies = new Layout({
|
|
|
|
// -- Define elements to draw with options
|
|
el: [],
|
|
images: ['images/sprites/alien_1.png?_=1', 'images/sprites/alien_2.png?_=1', 'images/sprites/explosion-sprite.png' ],
|
|
|
|
// -- Define current Speed
|
|
speed: 7,
|
|
direction: 1,
|
|
|
|
// -- Define canvas parent
|
|
dom: $('div#ground')
|
|
|
|
}) ;
|
|
|
|
// -- Restart enemy
|
|
Layouts.Ennemies.reinitObj = function(obj) {
|
|
var self = this ;
|
|
obj.x = Math.round(Math.random()*self.width)
|
|
obj.y = Math.round(-Math.random()*self.height) ;
|
|
obj.settings.speed = Math.round(Math.max(10, Math.random()*20)) ;
|
|
obj.explosing = false ;
|
|
return obj ;
|
|
} ;
|
|
|
|
// -- Create a random ennemy
|
|
Layouts.Ennemies.createRandom = function(opts) {
|
|
var self = this ;
|
|
|
|
var libsAlien = [
|
|
{
|
|
width: 80,
|
|
height: 80,
|
|
imageSrc: self.settings.images[0],
|
|
sprites: [0,1,2,3]
|
|
},
|
|
{
|
|
width: 80,
|
|
height: 80,
|
|
imageSrc: self.settings.images[1],
|
|
sprites: [0]
|
|
}
|
|
] ;
|
|
|
|
// Choose one in the lib
|
|
var alien = libsAlien[Math.floor(Math.random()*libsAlien.length)] ;
|
|
|
|
// Construct global properties
|
|
alien.name = 'ennemy' ;
|
|
alien.type = 'alien' ;
|
|
alien.power = 40 ;
|
|
alien.speed = Math.round(Math.max(10, Math.random()*20)) ;
|
|
alien.direction = 1 ;
|
|
alien.origin = {x:Math.round(Math.random()*self.width), y:Math.round(-Math.random()*self.height)} ;
|
|
alien.explode = function(obj) {
|
|
if ( ! obj || obj.explosing ) return false ;
|
|
self.createExplosion(obj) ;
|
|
obj.explosing = true ;
|
|
obj.box.hide(0);
|
|
obj = self.reinitObj(obj);
|
|
|
|
Game.score = Game.score || 0 ;
|
|
Game.score += obj.settings.power ;
|
|
} ;
|
|
alien.animate = function (obj) {
|
|
if ( obj.explosing ) {
|
|
obj.y = obj.parent.height+1000 ;
|
|
} else {
|
|
obj.y += obj.settings.speed*obj.settings.direction ;
|
|
}
|
|
if ( obj.y > obj.parent.height+obj.height ) {
|
|
obj = self.reinitObj(obj);
|
|
}
|
|
} ;
|
|
|
|
// Add it to scene
|
|
this.els.push(this.createObj(alien)) ;
|
|
} ;
|
|
|
|
// -- Create an explosion
|
|
Layouts.Ennemies.createExplosion = function(object) {
|
|
|
|
var self = this ;
|
|
var explosion = {
|
|
name: 'explosion',
|
|
type: 'neutral',
|
|
width:330,
|
|
height:330,
|
|
imageSrc: self.settings.images[2],
|
|
sprites: [0,1,2],
|
|
origin: {x: object.x-330/2+object.width/2, y: object.y-330/2+object.height/2},
|
|
animate: function(obj) {
|
|
obj.settings.spriteMod = 5 ;
|
|
}
|
|
}
|
|
|
|
var newObj = this.createObj(explosion) ;
|
|
self.els.push(newObj) ;
|
|
|
|
if ( timers.playSoundExplode ) clearTimeout(timers.playSoundExplode) ;
|
|
timers.playSoundExplode = setTimeout(function() {
|
|
soundManager.play('explode') ;
|
|
}, 1000/FPS) ;
|
|
|
|
setTimeout(function() {
|
|
newObj.deleteObj() ;
|
|
if ( ! Layouts.Player.running )
|
|
$(document).trigger('gameComplete') ;
|
|
}, 500) ;
|
|
|
|
} ;
|