package org.test;
import loon.Screen;
import loon.action.sprite.ISprite;
import loon.action.sprite.Sprite;
import loon.event.FrameLoopEvent;
import loon.event.GameTouch;
import loon.geom.PointI;
import loon.opengl.GLEx;
import loon.utils.MathUtils;
import loon.utils.timer.LTimerContext;
public class LightImageTest extends Screen {
int tick = 0;
int frequency = 80;
int type = 0;
@Override
public void draw(GLEx g) {
}
@Override
public void onLoad() {
add(MultiScreenTest.getBackButton(this, 1));
final int limit = 40;
loop(0, new FrameLoopEvent() {
@Override
public void invoke(long elapsedTime, Screen e) {
if (tick > frequency) {
tick = 0;
Sprite laser = new Sprite("laser/laser0" + ((type % 5) + 1)
+ ".png");
laser.setStatus(0);
type++;
PointI pos1;
PointI pos2;
if (type % 2 == 0) {
pos1 = new PointI((int) (-limit * MathUtils.random()),
(int) MathUtils.random() * getHeight());
pos2 = new PointI((int) (getWidth() * MathUtils
.random()), (int) MathUtils.random()
* getHeight() + limit);
} else {
pos1 = new PointI(
(int) MathUtils.random() * getWidth(),
(int) (-limit * MathUtils.random()));
pos2 = new PointI(
(int) MathUtils.random() * getWidth(),
(int) ((getHeight() + limit) * MathUtils
.random()));
}
int distX = pos1.x - pos2.x;
int distY = pos1.y - pos2.y;
int dist = MathUtils.sqrt(distX * distX + distY * distY) + 40;
laser.setScaleX(dist / limit);
laser.setLocation(pos1);
laser.blendLight();
laser.setRotation((MathUtils.atan2(distY, distX) + MathUtils.PI)
* 180 / MathUtils.PI);
add(laser);
frequency *= 0.9;
}
ISprite[] sprites = SPRITE().getSprites();
for (int i = 0; i < sprites.length; i++) {
Sprite laser = (Sprite) sprites[i];
laser.setStatus(laser.getStatus() + 1);
if (laser.getStatus() > 60 * 0.3) {
laser.setAlpha(laser.getAlpha() * 0.9f);
laser.setScaleY(laser.getAlpha());
if (laser.getAlpha() < 0.01) {
sprites = SPRITE().getSprites();
remove(laser);
i--;
}
}
}
tick += 1;
}
@Override
public void completed() {
}
});
}
@Override
public void alter(LTimerContext timer) {
}
@Override
public void resize(int width, int height) {
}
@Override
public void touchDown(GameTouch e) {
}
@Override
public void touchUp(GameTouch e) {
}
@Override
public void touchMove(GameTouch e) {
}
@Override
public void touchDrag(GameTouch e) {
}
@Override
public void resume() {
}
@Override
public void pause() {
}
@Override
public void close() {
}
}