LibJF/libjf-config-ui-tiny/src/client/java/io/gitlab/jfronny/libjf/config/impl/ui/tiny/presets/PresetsScreen.java

60 lines
2.3 KiB
Java
Raw Normal View History

package io.gitlab.jfronny.libjf.config.impl.ui.tiny.presets;
2022-01-08 20:02:15 +01:00
import io.gitlab.jfronny.libjf.LibJf;
2023-08-30 14:14:20 +02:00
import io.gitlab.jfronny.libjf.config.api.v2.ConfigCategory;
import io.gitlab.jfronny.libjf.config.api.v2.dsl.CategoryBuilder;
2023-08-30 14:14:20 +02:00
import io.gitlab.jfronny.libjf.config.impl.ConfigCore;
2022-01-08 20:02:15 +01:00
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
2023-06-09 15:04:53 +02:00
import net.minecraft.client.gui.DrawContext;
2022-01-08 20:02:15 +01:00
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ButtonWidget;
2022-08-27 17:41:56 +02:00
import net.minecraft.text.Text;
2022-01-08 20:02:15 +01:00
import java.util.Map;
2022-08-27 17:41:56 +02:00
import java.util.Objects;
2022-01-08 20:02:15 +01:00
@Environment(EnvType.CLIENT)
public class PresetsScreen extends Screen {
private final Screen parent;
private final ConfigCategory config;
private final Runnable afterSelect;
2022-01-08 20:02:15 +01:00
public PresetsScreen(Screen parent, ConfigCategory config, Runnable afterSelect) {
2023-08-30 14:14:20 +02:00
super(Text.translatable(ConfigCore.MOD_ID + ".presets"));
2022-01-08 20:02:15 +01:00
this.parent = parent;
this.config = config;
this.afterSelect = afterSelect;
2022-01-08 20:02:15 +01:00
}
@Override
protected void init() {
super.init();
2023-12-06 19:05:03 +01:00
PresetListWidget list = new PresetListWidget(this.client, this.width, this.height, 32, 25);
for (Map.Entry<String, Runnable> entry : config.getPresets().entrySet()) {
list.addButton(ButtonWidget.builder(CategoryBuilder.CONFIG_PRESET_DEFAULT.equals(entry.getKey()) ? Text.translatable(entry.getKey()) : Text.translatable(config.getTranslationPrefix() + entry.getKey()),
2022-01-08 20:02:15 +01:00
button -> {
LibJf.LOGGER.info("Preset selected: " + entry.getKey());
entry.getValue().run();
config.fix();
afterSelect.run();
2022-08-27 17:41:56 +02:00
Objects.requireNonNull(client).setScreen(parent);
2022-12-07 19:54:35 +01:00
})
.dimensions(width / 2 - 100, 0, 200, 20)
2022-12-07 19:54:35 +01:00
.build());
2022-01-08 20:02:15 +01:00
}
2023-08-20 13:33:23 +02:00
this.addDrawableChild(list);
2022-01-08 20:02:15 +01:00
}
@Override
2022-02-12 09:52:43 +01:00
public void close() {
2022-08-27 17:41:56 +02:00
Objects.requireNonNull(client).setScreen(parent);
2022-01-08 20:02:15 +01:00
}
@Override
2023-06-09 15:04:53 +02:00
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
super.render(context, mouseX, mouseY, delta);
2023-08-20 13:33:23 +02:00
context.drawCenteredTextWithShadow(textRenderer, title, width / 2, 16 - textRenderer.fontHeight / 2, 0xFFFFFF);
2022-01-08 20:02:15 +01:00
}
}