package info.u250.c2d.tests.animations;
import static com.badlogic.gdx.scenes.scene2d.actions.Actions.delay;
import static com.badlogic.gdx.scenes.scene2d.actions.Actions.scaleTo;
import static com.badlogic.gdx.scenes.scene2d.actions.Actions.sequence;
import info.u250.c2d.engine.Engine;
import info.u250.c2d.engine.EngineDrive;
import info.u250.c2d.engine.Scene;
import info.u250.c2d.engine.resources.AliasResourceManager;
import info.u250.c2d.graphic.C2dStage;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.scenes.scene2d.Group;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;
import com.badlogic.gdx.scenes.scene2d.ui.Label;
import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle;
public class GracefulEffectLabel extends Engine {
@Override
protected EngineDrive onSetupEngineDrive() {
return new EngineX();
}
@Override
public void dispose () {
super.dispose();
}
private class EngineX implements EngineDrive{
@Override
public void onResourcesRegister(AliasResourceManager<String> reg) {
reg.font("Font", "data/fonts/battle.fnt");
}
@Override
public void dispose() {}
@Override
public EngineOptions onSetupEngine() {
final EngineOptions opt = new EngineOptions(new String[]{"data/fonts/battle.fnt"},800,480);
return opt;
}
@Override
public void onLoadedResourcesCompleted() {
final C2dStage stage = new C2dStage();
final ColorfulText textGroup = new ColorfulText();
stage.addActor(textGroup);
textGroup.show(true, "Boss Battle!!!!");
textGroup.addAction(Actions.forever(Actions.sequence(Actions.delay(4,Actions.run(new Runnable() {
@Override
public void run() {
textGroup.show(false, "Battle 16/2500");
}
})),Actions.delay(4,Actions.run(new Runnable() {
@Override
public void run() {
textGroup.show(true, "Boss Battle!!!!");
}
})))));
Engine.setMainScene(new Scene() {
@Override
public void render(float delta) {
stage.act();
stage.draw();
}
@Override
public InputProcessor getInputProcessor() {
return null;
}
@Override
public void update(float delta) {
}
@Override
public void hide() {
}
@Override
public void show() {
}
});
}
}
public class ColorfulText extends Group {
public void show(boolean isBoss,String text) {
this.clear();
if(isBoss){
String[] strs = text.split("");
float width = 0;
for(int i=0;i<strs.length;i++){
String s = strs[i];
Label temp = new Label(s, new LabelStyle(Engine.resource("Font", BitmapFont.class), Color.WHITE));
temp.setPosition(width, 400);
temp.addAction(Actions.delay(0.1f*i,Actions.sequence(Actions.moveBy(0, -300,0.5f,Interpolation.swingOut),Actions.delay(1f,Actions.moveBy(0, 300,0.3f)))));
this.addActor(temp);
width+=temp.getPrefWidth();
}
this.setPosition(Engine.getWidth() / 2 - width / 2, 100);
}else{
Label battleLabel = new Label(text, new LabelStyle(Engine.resource("Font", BitmapFont.class), Color.WHITE));
this.setSize(battleLabel.getPrefWidth(), battleLabel.getPrefHeight());
this.setPosition(Engine.getWidth() / 2 - battleLabel.getPrefWidth() / 2, 200);
this.setOrigin(this.getWidth() / 2, this.getHeight()/2);
this.setScale(0);
this.addAction(sequence(scaleTo(1, 1, 1f, Interpolation.swingOut), delay(1f), Actions.moveBy(50, 0, 0.1f), Actions.moveBy(-1500, 0, 0.3f)));
this.addActor(battleLabel);
}
}
}
}