gdx-studio

#libgdx#java#desktop

git clone https://git.pyrossh.dev/gdx-studio

An IDE for creating Games using libgdx and Java supported on all platforms Android, iOS, Desktop


src/scene2d/Effect.java
package scene2d;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.math.Interpolation;
import com.badlogic.gdx.scenes.scene2d.Action;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.actions.Actions;

/*
 *  <p>
 *  The EffectFactory allows to do magic effects on your actors.
 *  Effects like scale in/out, shake, fade in/out are supported.
 *  <p>
 */
public class Effect {

	public static void createEffect(Actor actor, EffectType effectType, float value,
			float duration, InterpolationType type){
		if(actor == null)
			return;
		Interpolation interp = InterpolationType.getInterpolation(type);
		float x = 0;//actor.getX();
		float y = 0;//actor.getY();
		switch(effectType){
			case ScaleToThenFadeOut:
				actor.addAction(Actions.sequence(Actions.scaleTo(value, value, duration, interp)));
				break;
			case PatrolX:
				actor.addAction(Actions.forever(Actions.sequence(Actions.moveBy(value, 0, duration, interp),
						Actions.moveBy(-value, 0, duration, interp))));
				break;
			
			case PatrolY:
				actor.addAction(Actions.forever(Actions.sequence(Actions.moveBy(0, value, duration, interp),
						Actions.moveBy(0, -value, duration, interp))));
				break;
				
			case SlideLeft:
				actor.setPosition(999, y);
				actor.addAction(Actions.moveTo(x, y, duration, interp));
				break;
			case SlideRight:
				actor.setPosition(-999, y);
				actor.addAction(Actions.moveTo(x, y, duration, interp));
				break;
			case SlideUp:
				actor.setPosition(x, -999);
				actor.addAction(Actions.moveTo(x, y, duration, interp));
				break;
			case SlideDown:
				actor.setPosition(x, 999);
				actor.addAction(Actions.moveTo(x, y, duration, interp));
				break;
			case FadeIn:
				Color color = actor.getColor();
				color.a = 0f;
				actor.setColor(color);
				actor.addAction(Actions.fadeIn(duration, interp));
				break;
			case FadeOut:
				Color color2 = actor.getColor();
				color2.a = 1f;
				actor.setColor(color2);
				actor.addAction(Actions.fadeOut(duration, interp));
				break;
			case FadeInOut:
				actor.addAction(fadeInOut(value, duration, interp));
				break;
			case ScaleIn:
				actor.setScale(0, 0);
				actor.addAction(Actions.scaleTo(1, 1, duration, interp));
				break;
			case ScaleOut:
				actor.setScale(1, 1);
				actor.addAction(Actions.scaleTo(0, 0, duration, interp));
				break;
			case ScaleInOut:
				actor.addAction(scaleInOut(value, duration, interp));
				break;	
			case None:
				break;
			default:
				break;
		}
	}
	
	public static void createEffect(ImageJson imageJson){
		createEffect(imageJson, imageJson.effectType, imageJson.effectValue, imageJson.effectDuration, 
				imageJson.interpolationType);
	}

	
	public static Action scaleInOut(float value, float duration, Interpolation interp){
		return Actions.sequence(Actions.scaleTo(value, value, duration, interp), Actions.scaleTo(1, 1, duration, interp));
	}
	
	public static Action shakeInOut(float value, float duration, Interpolation interp){
		return Actions.sequence(Actions.rotateTo(value, duration, interp), Actions.rotateTo(-value, duration, interp),
				Actions.rotateTo(0, duration, interp));
	}
	
	public static Action fadeInOut(float value, float duration, Interpolation interp){
		return Actions.sequence(Actions.fadeIn(duration, interp), Actions.fadeOut(duration, interp));
	}
	
	public static Action fadeOutIn(float value, float duration, Interpolation interp){
		return Actions.sequence(Actions.fadeOut(duration, interp), Actions.fadeIn(duration, interp));
	}

	/**
	 * Scale effect, Shake effect (SC, SHK)
	 * */
	public static void create_SC_SHK(Actor actor, float scaleRatioX,
			float scaleRatioY, float shakeAngle, float originalAngle,
			float duration, final boolean isRemoveActor) {
		if (actor != null) {
			actor.addAction(Actions.sequence(
					Actions.scaleTo(scaleRatioX, scaleRatioY, duration),
					Actions.rotateTo(shakeAngle, duration),
					Actions.rotateTo(-shakeAngle, duration),
					Actions.rotateTo(originalAngle, duration)));
		}
	}

	//
	// TRIPLE EFFECTS (Sequence - Chain reaction)
	// ################################################################
	/**
	 * Scale effect, Back To Normal, Fade Out (SC, BTN, FO)
	 * */
	public static void create_SC_BTN_FO(Actor actor, float scaleRatioX,
			float scaleRatioY, float duration, float delayBeforeFadeOut,
			final boolean isRemoveActor) {
		if (actor != null) {
			actor.addAction(Actions.sequence(
					Actions.scaleTo(scaleRatioX, scaleRatioY, duration),
					Actions.scaleTo(1, 1, duration),
					Actions.delay(delayBeforeFadeOut),
					Actions.fadeOut(duration)));
		}
	}

	/**
	 * Scale effect, Shake effect, Back To Normal (SC, SHK, BTN)
	 * */
	public static void create_SC_SHK_BTN(Actor actor, float scaleRatioX,
			float scaleRatioY, float shakeAngle, float originalAngle,
			float duration, final boolean isRemoveActor) {
		if (actor != null) {
			actor.addAction(Actions.sequence(
					Actions.scaleTo(scaleRatioX, scaleRatioY, duration),
					Actions.rotateTo(shakeAngle, duration),
					Actions.rotateTo(-shakeAngle, duration),
					Actions.rotateTo(originalAngle, duration),
					Actions.scaleTo(1, 1, duration)));
		}
	}

	static Interpolation[] interpolationsValue = {
		Interpolation.bounce, Interpolation.bounceIn,  Interpolation.bounceOut,  
		Interpolation.circle,  Interpolation.circleIn,  Interpolation.circleOut, 
		Interpolation.elastic,  Interpolation.elasticIn,  Interpolation.elasticOut, 
		Interpolation.exp10,  Interpolation.exp10In,  Interpolation.exp10Out, 
		Interpolation.exp5,  Interpolation.exp5In,  Interpolation.exp5Out, 
		Interpolation.linear,  Interpolation.fade,
		Interpolation.pow2,  Interpolation.pow2In,  Interpolation.pow2Out, 
		Interpolation.pow3,  Interpolation.pow3In,  Interpolation.pow3Out, 
		Interpolation.pow4,  Interpolation.pow4In,  Interpolation.pow4Out, 
		Interpolation.pow5,  Interpolation.pow5In,  Interpolation.pow5Out, 
		Interpolation.sine,  Interpolation.sineIn,  Interpolation.sineOut, 
		Interpolation.swing,  Interpolation.swingIn,  Interpolation.swingOut, 
	};
}