diff --git a/src/main/java/org/saturnclient/ui2/elements/AnimationStagger.java b/src/main/java/org/saturnclient/ui2/elements/AnimationStagger.java new file mode 100644 index 0000000..ce2e1cd --- /dev/null +++ b/src/main/java/org/saturnclient/ui2/elements/AnimationStagger.java @@ -0,0 +1,52 @@ +package org.saturnclient.ui2.elements; + +import java.util.ArrayList; +import java.util.List; + +import org.saturnclient.ui2.Element; +import org.saturnclient.ui2.ElementContext; +import org.saturnclient.ui2.RenderScope; +import org.saturnclient.ui2.components.ElementRenderer; + +public class AnimationStagger extends Element { + protected List children = new ArrayList<>(); + public int duration; + + public AnimationStagger(int duration) { + this.duration = duration; + } + + @Override + public void render(RenderScope renderScope, ElementContext ctx) { + ElementRenderer.render(children, ctx.elapsed, renderScope, + ctx.mouseX, + ctx.mouseY); + } + + @Override + public void click(int mouseX, int mouseY) { + ElementRenderer.mouseClicked(children, mouseX, mouseY, 0); + } + + public void draw(Element element) { + if (element.animation != null) { + element.animation.duration = duration * (children.size() + 1); + } + children.add(element); + } + + @Override + public void keyPressed(int keyCode, int scanCode, int modifiers) { + ElementRenderer.keyPressed(children, keyCode, scanCode, modifiers); + } + + @Override + public void mouseDragged(double mouseX, double mouseY, int button, double deltaX, double deltaY) { + ElementRenderer.mouseDragged(children, mouseX, mouseY, button, deltaX, deltaY); + } + + @Override + public void mouseReleased(double mouseX, double mouseY, int button) { + ElementRenderer.mouseReleased(children, mouseX, mouseY, button); + } +}