LibJF/libjf-config-ui-tiny-v1/src/client/java/io/gitlab/jfronny/libjf/config/api/v1/ui/tiny/WidgetFactory.java
JFronny 261657b2ac
All checks were successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/push/jfmod Pipeline was successful
fix(config-ui-tiny): centralize UI state tracking between individual resets and preset application using a callback to prevent desynchronization
2023-08-15 13:50:53 +02:00

25 lines
900 B
Java

package io.gitlab.jfronny.libjf.config.api.v1.ui.tiny;
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.TinyConfigScreen;
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.entry.Reflowable;
import io.gitlab.jfronny.libjf.config.impl.ui.tiny.entry.WidgetState;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.widget.ClickableWidget;
import java.util.function.Consumer;
public interface WidgetFactory<T> {
Widget<T> build(TinyConfigScreen screen, TextRenderer textRenderer);
record Widget<T>(WidgetState<T> state, Consumer<T> updateControls, ClickableWidget control, Reflowable reflow) implements Reflowable {
public Widget {
state.onUpdateCache(() -> updateControls.accept(state.cachedValue));
}
@Override
public void reflow(int width, int height) {
reflow.reflow(width, height);
}
}
}