/** * */ package net.puppygames.applet.effects; import com.shavenpuppy.jglib.interpolators.LinearInterpolator; /** * Fades things out */ public abstract class FadeEffect extends Effect { private final int duration; private final int fadeDuration; private int tick; private boolean fading; private int alpha = 255; public FadeEffect(int duration, int fadeDuration) { this.duration = duration; this.fadeDuration = fadeDuration; } public void reset() { fading = false; tick = 0; alpha = 255; } @Override public void finish() { if (!fading) { fading = true; tick = 0; } } public int getAlpha() { return alpha; } @Override protected final void doTick() { tick ++; if (fading) { alpha = (int) LinearInterpolator.instance.interpolate(255.0f, 0.0f, (float) tick / (float) fadeDuration); } else { if (tick >= duration) { fading = true; tick = 0; } } onTicked(); } protected void onTicked() { } @Override public boolean isEffectActive() { return !fading || tick < fadeDuration; } @Override protected final void render() { // Don't actually need to do anything } }