mirror of
https://github.com/Shiewk/Widgets.git
synced 2026-04-28 11:34:17 +02:00
62 lines
2.2 KiB
Java
62 lines
2.2 KiB
Java
package de.shiewk.widgets.client.screen;
|
|
|
|
import de.shiewk.widgets.ModWidget;
|
|
import de.shiewk.widgets.client.screen.components.WidgetSettingsEditWidget;
|
|
import net.minecraft.client.gui.*;
|
|
import net.minecraft.client.gui.screen.Screen;
|
|
import net.minecraft.client.gui.widget.ClickableWidget;
|
|
import net.minecraft.text.Text;
|
|
import net.minecraft.util.Util;
|
|
|
|
public class WidgetSettingsScreen extends AnimatedScreen {
|
|
private static final Text previewText = Text.translatable("widgets.ui.preview");
|
|
private final ModWidget widget;
|
|
private final Runnable onChange;
|
|
public WidgetSettingsScreen(Screen parent, ModWidget widget) {
|
|
super(Text.translatable("widgets.ui.widgetSettings", widget.getName()), parent, 500);
|
|
this.widget = widget;
|
|
onChange = () -> {
|
|
widget.onSettingsChanged(widget.getSettings());
|
|
if (parent instanceof WidgetConfigScreen widgetConfigScreen){
|
|
widgetConfigScreen.changedSettings(widget);
|
|
}
|
|
};
|
|
}
|
|
|
|
@Override
|
|
protected void init() {
|
|
super.init();
|
|
addDrawableChild(new WidgetSettingsEditWidget(0, 0, this.width / 2 - 8, this.height, textRenderer, widget, this.onChange));
|
|
}
|
|
|
|
@Override
|
|
public void renderScreenContents(DrawContext context, int mouseX, int mouseY, float delta) {
|
|
context.drawText(textRenderer, previewText, this.width * 3 / 4 - textRenderer.getWidth(previewText) / 2, this.height / 50, 0xffffffff, false);
|
|
widget.render(context, Util.getMeasuringTimeNano(), textRenderer, (int) ((float) (this.width * 3) / 4 - (widget.width() * widget.getScaleFactor()) / 2), (int) ((float) this.height / 2 - (widget.height() * widget.getScaleFactor()) / 2));
|
|
}
|
|
|
|
@Override
|
|
public boolean mouseReleased(Click click) {
|
|
for (Element child : children()) {
|
|
if (child instanceof ClickableWidget s){
|
|
s.mouseReleased(click);
|
|
}
|
|
}
|
|
return super.mouseReleased(click);
|
|
}
|
|
|
|
@Override
|
|
public void close() {
|
|
assert client != null;
|
|
client.setScreen(parent);
|
|
}
|
|
|
|
@Override
|
|
public void tick() {
|
|
super.tick();
|
|
if (!widget.getSettings().isEnabled()){
|
|
widget.tick();
|
|
}
|
|
}
|
|
}
|