// Path: src/main/java/com/lunar/utilities/Logger.java
// public class Logger {
// 
//     /**
//      * Log information.
//      *
//      * @param information the information.
//      */
//     public static void logInformation(String information) {
//         System.out.println("[INFO] " + information);
//     }
// 
//     /**
//      * Log an error.
//      *
//      * @param error the error
//      */
//     public static void logError(String error) {
//         System.out.println("[ERROR] " + error);
//     }
// 
//     /**
//      * Log a warning
//      *
//      * @param warning the warning
//      */
//     public static void logWarning(String warning) {
//         System.out.println("[WARNING] " + warning);
//     }
// 
//     /**
//      * Log a critical message.
//      *
//      * @param critical the critical message.
//      */
//     public static void logCritical(String critical) {
//         System.out.println("[CRITICAL] " + critical);
//     }
// 
// }


import com.lunar.utilities.Logger;
import com.sun.istack.internal.Nullable;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
package com.lunar.animation;



public class AnimationManager {

    private List<Animation> animationFrames;
    private Animation playingAnimation;

    public AnimationManager(Animation[] animations) {
        animationFrames = Arrays.asList(animations);
    }

    public AnimationManager(List<Animation> animations) {
        animationFrames = new ArrayList<>(animations);
    }

    public AnimationManager(Animation animation) {
        animationFrames = new ArrayList<>();
        animationFrames.add(animation);
    }

    /**
     * @return all the animations.
     */
    public List<Animation> getAnimationFrames() {
        return animationFrames;
    }

    /**
     * @return the current playing animation.
     */
    @Nullable
    public Animation getPlayingAnimation() {
        return playingAnimation == null ? null : playingAnimation.isRunning() ? playingAnimation : null;
    }

    /**
     * Update the current playing animation.
     */
    public void updatePlayingAnimation() {
        if (playingAnimation == null) {
// Path: src/main/java/com/lunar/utilities/Logger.java
// public class Logger {
// 
//     /**
//      * Log information.
//      *
//      * @param information the information.
//      */
//     public static void logInformation(String information) {
//         System.out.println("[INFO] " + information);
//     }
// 
//     /**
//      * Log an error.
//      *
//      * @param error the error
//      */
//     public static void logError(String error) {
//         System.out.println("[ERROR] " + error);
//     }
// 
//     /**
//      * Log a warning
//      *
//      * @param warning the warning
//      */
//     public static void logWarning(String warning) {
//         System.out.println("[WARNING] " + warning);
//     }
// 
//     /**
//      * Log a critical message.
//      *
//      * @param critical the critical message.
//      */
//     public static void logCritical(String critical) {
//         System.out.println("[CRITICAL] " + critical);
//     }
// 
// }


// Path: src/main/java/com/lunar/animation/AnimationManager.java
import com.lunar.utilities.Logger;
import com.sun.istack.internal.Nullable;
import java.awt.Graphics;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

package com.lunar.animation;



public class AnimationManager {

    private List<Animation> animationFrames;
    private Animation playingAnimation;

    public AnimationManager(Animation[] animations) {
        animationFrames = Arrays.asList(animations);
    }

    public AnimationManager(List<Animation> animations) {
        animationFrames = new ArrayList<>(animations);
    }

    public AnimationManager(Animation animation) {
        animationFrames = new ArrayList<>();
        animationFrames.add(animation);
    }

    /**
     * @return all the animations.
     */
    public List<Animation> getAnimationFrames() {
        return animationFrames;
    }

    /**
     * @return the current playing animation.
     */
    @Nullable
    public Animation getPlayingAnimation() {
        return playingAnimation == null ? null : playingAnimation.isRunning() ? playingAnimation : null;
    }

    /**
     * Update the current playing animation.
     */
    public void updatePlayingAnimation() {
        if (playingAnimation == null) {
            Logger.logWarning("Attempted to update a null animation frame.");