use of com.teamwizardry.librarianlib.features.animator.animations.ScheduledEventAnimation 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);
}
}
Aggregations