use of com.teamwizardry.librarianlib.features.sprite.Sprite 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);
}
}
use of com.teamwizardry.librarianlib.features.sprite.Sprite in project Wizardry by TeamWizardry.
the class TableModule method drawComponent.
@Override
public void drawComponent(@NotNull Vec2d mousePos, float partialTicks) {
super.drawComponent(mousePos, partialTicks);
Sprite plate;
plate = selectedModule == this ? PLATE_HIGHLIGHTED : PLATE;
Vec2d pos = Vec2d.ZERO;
Vec2d size = new Vec2d(plate.getWidth(), plate.getHeight());
if (selectedModule == this || (getMouseOver() && !hasTag("connecting"))) {
size = size.add(6, 6);
pos = pos.sub(3, 3);
}
if (hasTag("connecting")) {
drawWire(pos.add(size.getX() / 2.0, size.getY() / 2.0), mousePos, getColorForModule(module.getModuleType()), Color.WHITE);
} else if (linksTo != null) {
Vec2d posTo = new Vec2d(linksTo.getPos().getX() - (linksTo.getSize().getXi() / 2.0), linksTo.getPos().getY() - (linksTo.getSize().getYi() / 2.0));
drawWire(pos.add(size.getX() / 2.0, size.getY() / 2.0), posTo.add(size.getX() / 2.0, size.getY() / 2.0), getColorForModule(module.getModuleType()), getColorForModule(linksTo.getModule().getModuleType()));
}
plate.bind();
plate.draw(0, pos.getXi(), pos.getYi(), size.getXi(), size.getYi());
double shrink = 2;
icon.bind();
icon.draw(0, (float) ((plate.getWidth() / 2.0) - ((size.getX() - shrink) / 2.0)), (float) ((plate.getHeight() / 2.0) - ((size.getY() - shrink) / 2.0)), (float) (size.getX() - shrink), (float) (size.getYi() - shrink));
}
Aggregations