// Path: wisper-libgdx/core/src/java/fr/wisper/animations/wisper/WisperAnimation.java
// public interface WisperAnimation {
//     public void animate(TweenManager tweenManager);
// }
// 
// Path: wisper-libgdx/core/src/java/fr/wisper/utils/Config.java
// public class Config {
//     public static final String GAME_NAME = "Wisper";
//     public static final String GAME_VERSION = "v0.1";
//     public static final int APP_WIDTH = 1280;
//     public static final int APP_HEIGHT = 768;
//     public static final String DEFAULT_SAVE_FOLDER = Config.GAME_NAME + "/saves";
//     public static final float ANIMATION_DURATION = 1.5f;
//     public static final float WISPER_SPEED = 150;
//     public static final float DOUBLE_TAP_INTERVAL = 500f;
//     public static final float WISPER_DASH_DISTANCE = 300f;
//     public static final float WISPER_DASH_DURATION = 0.25f;
//     public static final float WISPER_DASH_TIMEOUT = 2f;
//     public static final long WISPER_TIME_BETWEEN_ANIMATIONS = 8000;
//     public static final long WISPER_TIME_FIRST_ANIMATIONS = 3000;
//     public static final float GAME_RATIO = 0.1f;
//     public static final float BOX2D_WISPER_MOVE_FORCE = 500f;
//     public static final float BOX2D_WISPER_MOVE_DAMPING = 15f;
//     public static final float BOX2D_WISPER_DASH_FORCE = 50000f;
//     public static final float BOX2D_WISPER_DASH_DAMPING = 3.5f;
//     public static final float BOX2D_WISPER_DASH_TIME = 0.35f;
// 
//     public static boolean isAndroid() {
//         return (Gdx.app.getType() == Application.ApplicationType.Android);
//     }
// 
//     public static Vector2 getProjectedCoordinates(int screenX, int screenY, Viewport viewport) {
//         Vector2 touchPos = new Vector2(screenX, screenY);
//         //touchPos = getCamera().unproject(touchPos);
//         float xRatio = (float) Config.APP_WIDTH / (float) viewport.getViewportWidth();
//         float yRatio = (float) Config.APP_HEIGHT / (float) viewport.getViewportHeight();
// 
//         touchPos.x -= (Gdx.graphics.getWidth() - viewport.getViewportWidth()) / 2;
//         touchPos.x *= xRatio;
// 
//         touchPos.y = Gdx.graphics.getHeight() - touchPos.y;
//         touchPos.y -= (Gdx.graphics.getHeight() - viewport.getViewportHeight()) / 2;
//         touchPos.y *= yRatio;
// 
//         return touchPos;
//     }
// }


import aurelienribon.tweenengine.BaseTween;
import aurelienribon.tweenengine.TweenCallback;
import aurelienribon.tweenengine.TweenEquation;
import aurelienribon.tweenengine.TweenManager;
import aurelienribon.tweenengine.equations.Cubic;
import com.badlogic.gdx.utils.Timer;
import fr.wisper.animations.wisper.WisperAnimation;
import fr.wisper.utils.Config;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
package fr.wisper.entities;



public class AnimatedWisper extends Wisper {
    private List<WisperAnimation> animations = new ArrayList<WisperAnimation>();
    private Random random = new Random();
    private Timer animationTimer = new Timer();
    private Timer.Task animationTimerTask;

    public AnimatedWisper(String particleFile) {
        super(particleFile);

        initRightLeftAnimation();
        initTopBottomAnimation();
    }

    public void animate(final TweenManager tweenManager) {
// Path: wisper-libgdx/core/src/java/fr/wisper/animations/wisper/WisperAnimation.java
// public interface WisperAnimation {
//     public void animate(TweenManager tweenManager);
// }
// 
// Path: wisper-libgdx/core/src/java/fr/wisper/utils/Config.java
// public class Config {
//     public static final String GAME_NAME = "Wisper";
//     public static final String GAME_VERSION = "v0.1";
//     public static final int APP_WIDTH = 1280;
//     public static final int APP_HEIGHT = 768;
//     public static final String DEFAULT_SAVE_FOLDER = Config.GAME_NAME + "/saves";
//     public static final float ANIMATION_DURATION = 1.5f;
//     public static final float WISPER_SPEED = 150;
//     public static final float DOUBLE_TAP_INTERVAL = 500f;
//     public static final float WISPER_DASH_DISTANCE = 300f;
//     public static final float WISPER_DASH_DURATION = 0.25f;
//     public static final float WISPER_DASH_TIMEOUT = 2f;
//     public static final long WISPER_TIME_BETWEEN_ANIMATIONS = 8000;
//     public static final long WISPER_TIME_FIRST_ANIMATIONS = 3000;
//     public static final float GAME_RATIO = 0.1f;
//     public static final float BOX2D_WISPER_MOVE_FORCE = 500f;
//     public static final float BOX2D_WISPER_MOVE_DAMPING = 15f;
//     public static final float BOX2D_WISPER_DASH_FORCE = 50000f;
//     public static final float BOX2D_WISPER_DASH_DAMPING = 3.5f;
//     public static final float BOX2D_WISPER_DASH_TIME = 0.35f;
// 
//     public static boolean isAndroid() {
//         return (Gdx.app.getType() == Application.ApplicationType.Android);
//     }
// 
//     public static Vector2 getProjectedCoordinates(int screenX, int screenY, Viewport viewport) {
//         Vector2 touchPos = new Vector2(screenX, screenY);
//         //touchPos = getCamera().unproject(touchPos);
//         float xRatio = (float) Config.APP_WIDTH / (float) viewport.getViewportWidth();
//         float yRatio = (float) Config.APP_HEIGHT / (float) viewport.getViewportHeight();
// 
//         touchPos.x -= (Gdx.graphics.getWidth() - viewport.getViewportWidth()) / 2;
//         touchPos.x *= xRatio;
// 
//         touchPos.y = Gdx.graphics.getHeight() - touchPos.y;
//         touchPos.y -= (Gdx.graphics.getHeight() - viewport.getViewportHeight()) / 2;
//         touchPos.y *= yRatio;
// 
//         return touchPos;
//     }
// }


// Path: wisper-libgdx/core/src/java/fr/wisper/entities/AnimatedWisper.java
import aurelienribon.tweenengine.BaseTween;
import aurelienribon.tweenengine.TweenCallback;
import aurelienribon.tweenengine.TweenEquation;
import aurelienribon.tweenengine.TweenManager;
import aurelienribon.tweenengine.equations.Cubic;
import com.badlogic.gdx.utils.Timer;
import fr.wisper.animations.wisper.WisperAnimation;
import fr.wisper.utils.Config;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

package fr.wisper.entities;



public class AnimatedWisper extends Wisper {
    private List<WisperAnimation> animations = new ArrayList<WisperAnimation>();
    private Random random = new Random();
    private Timer animationTimer = new Timer();
    private Timer.Task animationTimerTask;

    public AnimatedWisper(String particleFile) {
        super(particleFile);

        initRightLeftAnimation();
        initTopBottomAnimation();
    }

    public void animate(final TweenManager tweenManager) {
        scheduleAnimation(tweenManager, Config.WISPER_TIME_FIRST_ANIMATIONS);