Search in sources :

Example 1 with KeyframeAnimation

use of com.teamwizardry.librarianlib.features.animator.animations.KeyframeAnimation in project Wizardry by TeamWizardry.

the class ComponentWhitelistedModifiers method refresh.

public void refresh() {
    if (worktable.selectedComponent == null) {
        setVisible(false);
        addTag("disabled");
        return;
    } else {
        setVisible(true);
        removeTag("disabled");
    }
    HashSet<GuiComponent> temp = new HashSet<>(list.getChildren());
    for (GuiComponent component : temp) {
        list.relationships.remove(component);
    }
    Module module = worktable.getModule(worktable.selectedComponent);
    if (module == null)
        return;
    if (module.applicableModifiers() == null)
        return;
    if (Objects.requireNonNull(module.applicableModifiers()).length <= 0)
        return;
    ModuleModifier[] modifiers = module.applicableModifiers();
    if (modifiers == null)
        return;
    for (ModuleModifier modifier : modifiers) {
        ComponentRect bar = new ComponentRect(0, 0, getSize().getXi(), 16);
        bar.getColor().setValue(new Color(0x80000000, true));
        ComponentSprite plate = new ComponentSprite(TableModule.plate, 0, 0, 16, 16);
        bar.add(plate);
        Sprite icon = new Sprite(new ResourceLocation(Wizardry.MODID, "textures/gui/worktable/icons/" + modifier.getID() + ".png"));
        ComponentSprite iconComp = new ComponentSprite(icon, 2, 2, 12, 12);
        plate.add(iconComp);
        ComponentText text = new ComponentText(20, 4, ComponentText.TextAlignH.LEFT, ComponentText.TextAlignV.TOP);
        text.getText().setValue(TextFormatting.GREEN + modifier.getShortHandName());
        bar.add(text);
        bar.render.getTooltip().func((Function<GuiComponent, java.util.List<String>>) t -> {
            List<String> txt = new ArrayList<>();
            for (GuiComponent comp : worktable.paperComponents.keySet()) if (comp.hasTag("dragging"))
                return txt;
            txt.add(TextFormatting.GOLD + module.getReadableName());
            if (GuiScreen.isShiftKeyDown())
                txt.add(TextFormatting.GRAY + module.getDescription());
            else
                txt.add(TextFormatting.GRAY + LibrarianLib.PROXY.translate("wizardry.misc.sneak"));
            return txt;
        });
        bar.BUS.hook(GuiComponentEvents.MouseInEvent.class, event -> {
            bar.getColor().setValue(new Color(0x66000000, true));
        });
        bar.BUS.hook(GuiComponentEvents.MouseOutEvent.class, event -> {
            bar.getColor().setValue(new Color(0x80000000, true));
        });
        bar.BUS.hook(GuiComponentEvents.MouseDownEvent.class, event -> {
            if (event.component.getMouseOver()) {
                bar.getColor().setValue(new Color(0x4D000000, true));
            }
        });
        bar.BUS.hook(GuiComponentEvents.MouseUpEvent.class, event -> {
            if (event.component.getMouseOver()) {
                bar.getColor().setValue(new Color(0x80000000, true));
            }
        });
        bar.BUS.hook(GuiComponentEvents.MouseClickEvent.class, (event) -> {
            if (!event.component.getMouseOver())
                return;
            int i = worktable.selectedComponent.hasData(Integer.class, modifier.getID()) ? worktable.selectedComponent.getData(Integer.class, modifier.getID()) : 0;
            int status = -1;
            if (event.getButton() == EnumMouseButton.LEFT) {
                worktable.selectedComponent.setData(Integer.class, modifier.getID(), ++i);
                status = 0;
            } else if (event.getButton() == EnumMouseButton.RIGHT) {
                if (worktable.selectedComponent.hasData(Integer.class, modifier.getID())) {
                    if (worktable.selectedComponent.getData(Integer.class, modifier.getID()) > 0) {
                        worktable.selectedComponent.setData(Integer.class, modifier.getID(), --i);
                        status = 1;
                    } else {
                        worktable.selectedComponent.removeData(Integer.class, modifier.getID());
                    }
                }
            }
            ComponentSprite fakePlate = new ComponentSprite(TableModule.plate, 0, 0, 16, 16);
            bar.add(fakePlate);
            ComponentSprite fakeIconComp = new ComponentSprite(icon, 2, 2, 12, 12);
            fakePlate.add(fakeIconComp);
            ScheduledEventAnimation scheduled = new ScheduledEventAnimation(20, fakePlate::invalidate);
            Vec2d r = worktable.selectedComponent.thisPosToOtherContext(bar);
            KeyframeAnimation<ComponentSprite> animX = new KeyframeAnimation<>(fakePlate, "pos.x");
            animX.setDuration(20);
            if (status == 0) {
                animX.setKeyframes(new Keyframe[] { new Keyframe(0, 0, Easing.linear), new Keyframe(1f, r.getX(), Easing.easeInBack) });
            } else if (status == 1) {
                animX.setKeyframes(new Keyframe[] { new Keyframe(0, r.getX(), Easing.linear), new Keyframe(1f, 0, Easing.easeInBack) });
            }
            KeyframeAnimation<ComponentSprite> animY = new KeyframeAnimation<>(fakePlate, "pos.y");
            animY.setDuration(20);
            if (status == 0) {
                animY.setKeyframes(new Keyframe[] { new Keyframe(0, 0, Easing.linear), new Keyframe(1f, r.getY(), Easing.easeInBack) });
            } else if (status == 1) {
                animX.setKeyframes(new Keyframe[] { new Keyframe(0, r.getY(), Easing.linear), new Keyframe(1f, 0, Easing.easeInBack) });
            }
            worktable.getMainComponents().add(scheduled, animX, animY);
        });
        list.add(bar);
    }
}
Also used : ComponentList(com.teamwizardry.librarianlib.features.gui.components.ComponentList) ComponentRect(com.teamwizardry.librarianlib.features.gui.components.ComponentRect) Sprite(com.teamwizardry.librarianlib.features.sprite.Sprite) ModuleModifier(com.teamwizardry.wizardry.api.spell.module.ModuleModifier) LibrarianLib(com.teamwizardry.librarianlib.core.LibrarianLib) Function(java.util.function.Function) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Keyframe(com.teamwizardry.librarianlib.features.animator.animations.Keyframe) Easing(com.teamwizardry.librarianlib.features.animator.Easing) Module(com.teamwizardry.wizardry.api.spell.module.Module) ScheduledEventAnimation(com.teamwizardry.librarianlib.features.animator.animations.ScheduledEventAnimation) KeyframeAnimation(com.teamwizardry.librarianlib.features.animator.animations.KeyframeAnimation) ComponentSprite(com.teamwizardry.librarianlib.features.gui.components.ComponentSprite) TextFormatting(net.minecraft.util.text.TextFormatting) Wizardry(com.teamwizardry.wizardry.Wizardry) EnumMouseButton(com.teamwizardry.librarianlib.features.gui.EnumMouseButton) GuiComponent(com.teamwizardry.librarianlib.features.gui.component.GuiComponent) java.awt(java.awt) Objects(java.util.Objects) GuiScreen(net.minecraft.client.gui.GuiScreen) List(java.util.List) Vec2d(com.teamwizardry.librarianlib.features.math.Vec2d) ResourceLocation(net.minecraft.util.ResourceLocation) GuiComponentEvents(com.teamwizardry.librarianlib.features.gui.component.GuiComponentEvents) ComponentText(com.teamwizardry.librarianlib.features.gui.components.ComponentText) GuiComponent(com.teamwizardry.librarianlib.features.gui.component.GuiComponent) Vec2d(com.teamwizardry.librarianlib.features.math.Vec2d) Keyframe(com.teamwizardry.librarianlib.features.animator.animations.Keyframe) KeyframeAnimation(com.teamwizardry.librarianlib.features.animator.animations.KeyframeAnimation) ModuleModifier(com.teamwizardry.wizardry.api.spell.module.ModuleModifier) ResourceLocation(net.minecraft.util.ResourceLocation) ComponentList(com.teamwizardry.librarianlib.features.gui.components.ComponentList) ArrayList(java.util.ArrayList) List(java.util.List) HashSet(java.util.HashSet) Sprite(com.teamwizardry.librarianlib.features.sprite.Sprite) ComponentSprite(com.teamwizardry.librarianlib.features.gui.components.ComponentSprite) ComponentSprite(com.teamwizardry.librarianlib.features.gui.components.ComponentSprite) GuiComponentEvents(com.teamwizardry.librarianlib.features.gui.component.GuiComponentEvents) ScheduledEventAnimation(com.teamwizardry.librarianlib.features.animator.animations.ScheduledEventAnimation) ComponentRect(com.teamwizardry.librarianlib.features.gui.components.ComponentRect) Module(com.teamwizardry.wizardry.api.spell.module.Module) ComponentText(com.teamwizardry.librarianlib.features.gui.components.ComponentText)

Aggregations

LibrarianLib (com.teamwizardry.librarianlib.core.LibrarianLib)1 Easing (com.teamwizardry.librarianlib.features.animator.Easing)1 Keyframe (com.teamwizardry.librarianlib.features.animator.animations.Keyframe)1 KeyframeAnimation (com.teamwizardry.librarianlib.features.animator.animations.KeyframeAnimation)1 ScheduledEventAnimation (com.teamwizardry.librarianlib.features.animator.animations.ScheduledEventAnimation)1 EnumMouseButton (com.teamwizardry.librarianlib.features.gui.EnumMouseButton)1 GuiComponent (com.teamwizardry.librarianlib.features.gui.component.GuiComponent)1 GuiComponentEvents (com.teamwizardry.librarianlib.features.gui.component.GuiComponentEvents)1 ComponentList (com.teamwizardry.librarianlib.features.gui.components.ComponentList)1 ComponentRect (com.teamwizardry.librarianlib.features.gui.components.ComponentRect)1 ComponentSprite (com.teamwizardry.librarianlib.features.gui.components.ComponentSprite)1 ComponentText (com.teamwizardry.librarianlib.features.gui.components.ComponentText)1 Vec2d (com.teamwizardry.librarianlib.features.math.Vec2d)1 Sprite (com.teamwizardry.librarianlib.features.sprite.Sprite)1 Wizardry (com.teamwizardry.wizardry.Wizardry)1 Module (com.teamwizardry.wizardry.api.spell.module.Module)1 ModuleModifier (com.teamwizardry.wizardry.api.spell.module.ModuleModifier)1 java.awt (java.awt)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1