Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.pingK.game;
import java.util.Vector;
import com.gebauz.framework.util.MathUtil;
import com.gebauz.framework.util.Sprite2D;
import com.gebauz.framework.util.Vector4;
import com.gebauz.pingK.R;
public class PaddleImpact
{
public class ImpactElement
{
private Sprite2D mImpactSprite =
null;
private float x
;
private float y
;
private float mRotation
;
private float mLifeTime
;
public ImpactElement
(Sprite2D sprite,
float posX,
float posY,
float rotation
)
{
mImpactSprite = sprite
;
x = posX
;
y = posY
;
mRotation = rotation
;
mLifeTime = 0.0f
;
}
public void update
(float deltaTime
)
{
mLifeTime += deltaTime
;
}
public void render
()
{
mImpactSprite.
x = x
;
mImpactSprite.
y = y
;
mImpactSprite.
angle = mRotation
;
float alpha = 1.0f - MathUtil.
clamp(mLifeTime / GameConsts.
PADDLE_IMPACT_LIFETIME, 0.0f, 1.0f
);
mImpactSprite.
setColor(new Vector4
(1.0f, 1.0f, 1.0f, alpha
));
mImpactSprite.
render();
}
public boolean isDone
()
{
return (mLifeTime
> GameConsts.
PADDLE_IMPACT_LIFETIME);
}
}
private GameLogic mGameLogic =
null;
private Sprite2D mImpactSprite =
new Sprite2D
();
private Vector<ImpactElement
> mImpacts =
new Vector<ImpactElement
>();
public PaddleImpact
(GameLogic gameLogic
)
{
mGameLogic = gameLogic
;
mImpactSprite.
init(R.
drawable.
paddleimpact,
0,
0, GameConsts.
PADDLE_IMPACT_WIDTH, GameConsts.
PADDLE_IMPACT_HEIGHT);
}
public void update
(float deltaTime
)
{
int i =
0;
while (i
< mImpacts.
size())
{
ImpactElement element = mImpacts.
get(i
);
element.
update(deltaTime
);
if (element.
isDone())
{
mImpacts.
remove(i
);
continue;
}
i++
;
}
}
public void render
()
{
for (int i =
0; i
< mImpacts.
size(); i++
)
{
mImpacts.
get(i
).
render();
}
}
public void addImpact
(float x,
float y,
float rot
)
{
mImpacts.
add(new ImpactElement
(mImpactSprite, x, y, rot
));
}
}