package info.u250.c2d.engine.transitions;
import info.u250.c2d.accessors.MeshMaskAccessor;
import info.u250.c2d.engine.Engine;
import info.u250.c2d.engine.Transition;
import info.u250.c2d.graphic.FadeMask;
import aurelienribon.tweenengine.BaseTween;
import aurelienribon.tweenengine.Tween;
import aurelienribon.tweenengine.TweenCallback;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Color;
/**
* the scene fade in and fade out . we use the mask to archive this
*
* @author lycying@gmail.com
*/
final class TransitionSceneFadeWhite extends Transition {
public TransitionSceneFadeWhite() {
this.mask = new FadeMask(new Color(1, 1, 1, 1));
}
FadeMask mask;
@Override
protected void doTransition(final int halfDurationMillis) {
outgoing.hide();
Tween.to(mask, MeshMaskAccessor.Transparency, halfDurationMillis)
.target(1f).setCallback(new TweenCallback() {
@Override
public void onEvent(int type, BaseTween<?> source) {
doSetMainScene(incoming);
Tween.to(mask, MeshMaskAccessor.Transparency,
halfDurationMillis).target(0)
.setCallback(new TweenCallback() {
@Override
public void onEvent(int type,
BaseTween<?> source) {
Gdx.input.setInputProcessor(incoming.getInputProcessor());
incoming.show();
reset();
}
}).start(Engine.getTweenManager());
}
}).start(Engine.getTweenManager());
}
@Override
public void render(float delta) {
Engine.getMainScene().render(delta);
if (isTransiting()) {
mask.render(delta);
}
}
}