package pathanimation;

import javafx.animation.Interpolator;
import javafx.animation.transition.FadeTransition;
import javafx.scene.Node;
import javafx.scene.image.Image;

public def PLATFORM = "desktop";  // or "mobile"

public abstract class Scenario {
    public var node: Node;
    public-read var image: Image;
    public abstract function play(): Void;
    public abstract function pause(): Void;
    public-read var running: Boolean;

    var fadein = FadeTransition {
        node: bind this.node
        fromValue: bind this.node.opacity
        toValue: 1
        duration: 2s
        interpolate: Interpolator.EASEOUT
    };

    var fadeout = FadeTransition {
        node: bind this.node
        fromValue: bind this.node.opacity
        toValue: 0
        duration: 2s
        interpolate: Interpolator.EASEOUT
    };

    package function fadeIn() {
        fadeout.stop();
        fadein.play();
    }

    package function fadeOut() {
        fadein.stop();
        fadeout.play();
    }
}