Particle effects con candy deletion

This commit is contained in:
2015-12-01 06:41:06 +01:00
parent 17d2e063ff
commit dda5c8e77c
2 changed files with 66 additions and 1 deletions

View File

@@ -1,6 +1,30 @@
window.Images = new ImageLoader(); window.Images = new ImageLoader();
var Particle = function(game, position, image) {
this.Game = game;
this.GameEntity = new GameEntity(
game.GameScreen,
position,
{X:image.naturalWidth, Y:image.naturalHeight},
image,
"Particle"
);
this.Speed = Vec2D.Scale(Vec2D.Normalize({
X: Math.floor(Math.random() * 33)-16,
Y: Math.floor(Math.random() * 33)-16}),32);
};
Particle.prototype = {
Update: function() {
this.Speed = Vec2D.Scale(this.Speed, 1.2);
this.GameEntity.AddPosition(this.Speed);
if(this.GameEntity.InsideScreen()==false){
this.GameEntity.Delete();
}
}
};
///////////////////////////////////////// /////////////////////////////////////////
// //
// CandyEntity // CandyEntity
@@ -9,7 +33,7 @@ var CandyEntity = function(game, color, gridPosition){
this.Game = game; this.Game = game;
this.GridPosition = gridPosition || {X: 0, Y: 0}; this.GridPosition = gridPosition || {X: 0, Y: 0};
this.Color = color; this.Color = color;
this.GameEntity = new GameEntity( this.GameEntity = new GameEntity(
game.GameScreen, game.GameScreen,
null, null,
{X: 32, Y: 32}, {X: 32, Y: 32},
@@ -29,6 +53,15 @@ CandyEntity.prototype = {
}); });
}, },
Delete: function(){ Delete: function(){
var frag;
for(var i=0; i<4; i++){
frag = new Particle(
this.Game,
this.GameEntity.PositionDest,
Images.GetImage(this.Color)
);
this.Game.GameScreen.AddEntity(frag);
}
this.GameEntity.Delete(); this.GameEntity.Delete();
}, },
SetOffset: function(x, y){ SetOffset: function(x, y){

View File

@@ -1,3 +1,21 @@
var Vec2D = {
Scale: function(vecIn, scale) {
return {
X: vecIn.X * scale,
Y: vecIn.Y * scale
};
},
Normalize: function(vecIn){
var len = Math.sqrt(
(vecIn.X * vecIn.X) +
(vecIn.Y * vecIn.Y));
return {
X: vecIn.X / len,
Y: vecIn.Y / len};
}
};
///////////////////////////////////////// /////////////////////////////////////////
// //
@@ -164,6 +182,10 @@ GameEntity.prototype = {
this.PositionDest.X = position.X; this.PositionDest.X = position.X;
this.PositionDest.Y = position.Y; this.PositionDest.Y = position.Y;
}, },
AddPosition: function(delta) {
this.PositionDest.X = this.Position.X + delta.X;
this.PositionDest.Y = this.Position.Y + delta.Y;
},
Delete: function(){ Delete: function(){
this.Deleted = true; this.Deleted = true;
}, },
@@ -176,6 +198,16 @@ GameEntity.prototype = {
true true
); );
}, },
InsideScreen: function(){
return (
(this.Position.X+(this.Size.X/2))>0 &&
(this.Position.Y+(this.Size.Y/2))>0 &&
(this.Position.X-(this.Size.X/2))
<this.GameScreen.Size.X &&
(this.Position.Y-(this.Size.Y/2))
<this.GameScreen.Size.Y
);
},
Debug: false Debug: false
}; };