Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.burutaru.game.entities;
import java.util.Vector;
import com.gebauz.bauzoid.graphics.sprite.Sprite;
import com.gebauz.bauzoid.graphics.sprite.SpriteInstance;
import com.gebauz.bauzoid.math.MathUtil;
import com.gebauz.burutaru.game.GameLogic;
public class Explosions
extends Entity
{
// Constants========================================================================================
public static final float EXPLO_LIFETIME = 1.0f
;
public static final float EXPLO_SIZE = 80.0f
;
// Embedded Types===================================================================================
public class Instance
{
// Fields=======================================================================================
private float mLifeTime = 0.0f
;
private SpriteInstance mSpriteInstance =
null;
// Methods======================================================================================
public Instance
(float x,
float y,
float size
)
{
mSpriteInstance = mExploSprite.
createSpriteInstanceForAll();
mSpriteInstance.
transform.
x = x
;
mSpriteInstance.
transform.
y = y
;
mSpriteInstance.
transform.
w = size
;
mSpriteInstance.
transform.
h = size
;
mSpriteInstance.
transform.
centerPivot();
}
public void update
(float deltaTime
)
{
if (isAlive
())
{
mLifeTime += deltaTime
;
int frame =
(int)(MathUtil.
clamp(mLifeTime / EXPLO_LIFETIME, 0.0f, 1.0f
) * mSpriteInstance.
getNumFrames());
mSpriteInstance.
setCurrentFrame(frame
);
}
}
public void render
()
{
if (isAlive
())
{
mSpriteInstance.
render();
}
}
// Getters/Setters==============================================================================
public final boolean isAlive
()
{
return (mLifeTime
<= EXPLO_LIFETIME
);
}
}
// Fields===========================================================================================
private Sprite mExploSprite =
null;
private Vector<Instance
> mExplosions =
new Vector<Instance
>();
// Methods==========================================================================================
public Explosions
(GameLogic gameLogic
)
{
super(gameLogic
);
mExploSprite =
new Sprite
(getGraphics
(),
"data/textures/explosion.png",
"data/textures/explosion.txt");
}
@
Override
public void initAsync
()
{
mExploSprite.
initAsync();
}
@
Override
public void init
()
{
mExploSprite.
init();
}
@
Override
public void exit
()
{
mExploSprite.
dispose();
}
@
Override
public void update
(float deltaTime
)
{
int i =
0;
while (i
< mExplosions.
size())
{
mExplosions.
get(i
).
update(deltaTime
);
if (!mExplosions.
get(i
).
isAlive())
{
mExplosions.
remove(i
);
continue;
}
++i
;
}
}
@
Override
public void render
()
{
for (int i =
0; i
< mExplosions.
size(); i++
)
{
mExplosions.
get(i
).
render();
}
}
public void spawn
(float x,
float y,
float size
)
{
mExplosions.
add(new Instance
(x, y, size
));
//mExploSound.play();
}
// Getters/Setters==================================================================================
}