package info.u250.c2d.tests.parallax;
import info.u250.c2d.engine.Engine;
import info.u250.c2d.engine.EngineDrive;
import info.u250.c2d.engine.SceneStage;
import info.u250.c2d.engine.load.startup.LineLoading;
import info.u250.c2d.engine.load.startup.StartupLoading;
import info.u250.c2d.engine.resources.AliasResourceManager;
import info.u250.c2d.graphic.AdvanceSprite;
import info.u250.c2d.graphic.parallax.ParallaxGroup;
import info.u250.c2d.graphic.parallax.ParallaxGroupSpeedToAction;
import info.u250.c2d.graphic.parallax.ParallaxLayer;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.Image;
public class ParallaxGroupEventsTest extends Engine{
@Override
protected EngineDrive onSetupEngineDrive() {
return new EngineX();
}
@Override
protected StartupLoading getStartupLoading() {
return new LineLoading();
}
private class EngineX implements EngineDrive{
@Override
public void onResourcesRegister(AliasResourceManager<String> reg) {
reg.textureAtlas("bgAtlas", "data/parallax/bg.atlas");
}
@Override
public void dispose() {}
@Override
public EngineOptions onSetupEngine() {
final EngineOptions opt = new EngineOptions(new String[]{"data/parallax/bg.atlas"},800,480);
return opt;
}
ParallaxGroup rbg ;
@Override
public void onLoadedResourcesCompleted() {
final TextureAtlas bgAtlas = Engine.resource("bgAtlas",TextureAtlas.class);
rbg = new ParallaxGroup(480, 320, new Vector2(50,100));
rbg.addActor(new Image(new AdvanceSprite(bgAtlas.findRegion("bg") )));
rbg.addActor(new ParallaxLayer(rbg,new Image(new AdvanceSprite(bgAtlas.findRegion("cloud") )), new Vector2(0.5f,0),new Vector2(0,1000), new Vector2(0,70)));
rbg.addActor(new ParallaxLayer(rbg,new Image(new AdvanceSprite(bgAtlas.findRegion("front") )), new Vector2(1f,0),new Vector2(0,1000), new Vector2()));
rbg.addActor(new ParallaxLayer(rbg,new Image(new AdvanceSprite(bgAtlas.findRegion("dock-tree") )), new Vector2(1f,0),new Vector2(1000,1000), new Vector2()));
rbg.addAction(Actions.forever(Actions.sequence(
ParallaxGroupSpeedToAction.obtain(1000,300,1),
ParallaxGroupSpeedToAction.obtain(50,300,2),
Actions.scaleTo(2, 2,0.5f),
Actions.scaleTo(1, 1,1.5f)
)));
final SceneStage stage = new SceneStage();
final Group group = new Group();
group.setScale(Engine.getWidth()/480f);
group.addActor(rbg);
stage.addActor(group);
Engine.setMainScene(stage);
}
}
}