chore(config-ui-tiny): plumb text renderers through entry list
This commit is contained in:
parent
8c4e3bb9dc
commit
33f2bb4c13
@ -144,9 +144,8 @@ public class TinyConfigScreen extends ScreenWithSaveHook {
|
||||
int headerWidth = Math.min(400, tabNavWidth) - 28;
|
||||
int singleHeaderWidth = MathHelper.roundUpToMultiple(headerWidth / categories.size(), 2);
|
||||
int singleTextWidth = singleHeaderWidth - 2;
|
||||
TextRenderer tr = MinecraftClient.getInstance().textRenderer;
|
||||
for (ConfigCategory category : categories) {
|
||||
if (tr.getWidth(getTitle(category.getTranslationPrefix())) > singleTextWidth) return true;
|
||||
if (textRenderer.getWidth(getTitle(category.getTranslationPrefix())) > singleTextWidth) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -31,11 +31,11 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
}
|
||||
|
||||
public void addUnknown(ClickableWidget resetButton, BooleanSupplier resetVisible, Text text, Reflowable reflow) {
|
||||
this.addEntry(new ConfigUnknownEntry(text, resetVisible, resetButton, reflow));
|
||||
this.addEntry(new ConfigUnknownEntry(text, resetVisible, resetButton, reflow, textRenderer));
|
||||
}
|
||||
|
||||
public void addButton(@Nullable ClickableWidget button, ClickableWidget resetButton, BooleanSupplier resetVisible, Text text, Reflowable reflow) {
|
||||
this.addEntry(new ConfigScreenEntry(button, text, resetVisible, resetButton, reflow));
|
||||
this.addEntry(new ConfigScreenEntry(button, text, resetVisible, resetButton, reflow, textRenderer));
|
||||
}
|
||||
|
||||
public void addReference(Text text, Supplier<Screen> targetScreen) {
|
||||
@ -43,7 +43,7 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
}
|
||||
|
||||
public void addText(Text text) {
|
||||
for (ConfigEntry entry : ConfigTextEntry.create(this, text, width)) this.addEntry(entry);
|
||||
for (ConfigEntry entry : ConfigTextEntry.create(textRenderer, this, text, width)) this.addEntry(entry);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -100,27 +100,22 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
private int width;
|
||||
private final OrderedText text;
|
||||
private final TextRenderer renderer;
|
||||
private final ConfigTextEntry next;
|
||||
public StringVisitable originalText = null;
|
||||
|
||||
public ConfigTextEntry(int width, OrderedText text, TextRenderer renderer, ConfigTextEntry next) {
|
||||
public ConfigTextEntry(int width, OrderedText text, TextRenderer renderer) {
|
||||
this.width = width;
|
||||
this.text = text;
|
||||
this.renderer = renderer;
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
public static List<ConfigTextEntry> create(EntryListWidget parent, StringVisitable text, int width) {
|
||||
TextRenderer renderer = MinecraftClient.getInstance().textRenderer;
|
||||
public static List<ConfigTextEntry> create(TextRenderer renderer, EntryListWidget parent, StringVisitable text, int width) {
|
||||
List<ConfigTextEntry> entries = new ArrayList<>();
|
||||
ConfigTextEntry next = null;
|
||||
List<OrderedText> wrappedLines = new ArrayList<>(renderer.wrapLines(text, width));
|
||||
Collections.reverse(wrappedLines);
|
||||
for (OrderedText line : wrappedLines) {
|
||||
ConfigTextEntry[] tmp = new ConfigTextEntry[1];
|
||||
entries.add(next = tmp[0] = parent.new ConfigTextEntry(width, line, renderer, next));
|
||||
entries.add(parent.new ConfigTextEntry(width, line, renderer));
|
||||
}
|
||||
if (!entries.isEmpty()) entries.get(entries.size() - 1).originalText = text;
|
||||
if (!entries.isEmpty()) entries.getLast().originalText = text;
|
||||
Collections.reverse(entries);
|
||||
return entries;
|
||||
}
|
||||
@ -150,7 +145,7 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
List<ConfigEntry> children = EntryListWidget.this.children();
|
||||
int i = children.indexOf(this);
|
||||
EntryListWidget.this.removeEntry(this);
|
||||
for (ConfigTextEntry entry : create(EntryListWidget.this, originalText, width)) {
|
||||
for (ConfigTextEntry entry : create(renderer, EntryListWidget.this, originalText, width)) {
|
||||
children.add(i++, entry);
|
||||
}
|
||||
} else {
|
||||
@ -194,19 +189,20 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static class ConfigScreenEntry extends ConfigEntry {
|
||||
private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
|
||||
public final ClickableWidget button;
|
||||
private final BooleanSupplier resetVisible;
|
||||
private final ClickableWidget resetButton;
|
||||
private final Text text;
|
||||
private final Reflowable reflow;
|
||||
private final TextRenderer renderer;
|
||||
|
||||
public ConfigScreenEntry(ClickableWidget button, Text text, BooleanSupplier resetVisible, ClickableWidget resetButton, Reflowable reflow) {
|
||||
public ConfigScreenEntry(ClickableWidget button, Text text, BooleanSupplier resetVisible, ClickableWidget resetButton, Reflowable reflow, TextRenderer renderer) {
|
||||
this.button = button;
|
||||
this.resetVisible = resetVisible;
|
||||
this.resetButton = resetButton;
|
||||
this.text = text;
|
||||
this.reflow = reflow;
|
||||
this.renderer = renderer;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -214,7 +210,7 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
super.render(context, index, y, x, entryWidth, entryHeight, mouseX, mouseY, hovered, tickDelta);
|
||||
button.setY(y);
|
||||
button.render(context, mouseX, mouseY, tickDelta);
|
||||
context.drawTextWithShadow(textRenderer, text, 12, y + 5, 0xFFFFFF);
|
||||
context.drawTextWithShadow(renderer, text, 12, y + 5, 0xFFFFFF);
|
||||
if (resetVisible.getAsBoolean()) {
|
||||
resetButton.setY(y);
|
||||
resetButton.render(context, mouseX, mouseY, tickDelta);
|
||||
@ -243,23 +239,24 @@ public class EntryListWidget extends ElementListWidget<EntryListWidget.ConfigEnt
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public static class ConfigUnknownEntry extends ConfigEntry {
|
||||
private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer;
|
||||
private final BooleanSupplier resetVisible;
|
||||
private final ClickableWidget resetButton;
|
||||
private final Text text;
|
||||
private final Reflowable reflow;
|
||||
private final TextRenderer renderer;
|
||||
|
||||
public ConfigUnknownEntry(Text text, BooleanSupplier resetVisible, ClickableWidget resetButton, Reflowable reflow) {
|
||||
public ConfigUnknownEntry(Text text, BooleanSupplier resetVisible, ClickableWidget resetButton, Reflowable reflow, TextRenderer renderer) {
|
||||
this.resetVisible = resetVisible;
|
||||
this.resetButton = resetButton;
|
||||
this.text = text;
|
||||
this.reflow = reflow;
|
||||
this.renderer = renderer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(DrawContext context, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
|
||||
super.render(context, index, y, x, entryWidth, entryHeight, mouseX, mouseY, hovered, tickDelta);
|
||||
context.drawTextWithShadow(textRenderer, text, 12, y + 5, 0xFFFFFF);
|
||||
context.drawTextWithShadow(renderer, text, 12, y + 5, 0xFFFFFF);
|
||||
if (resetVisible.getAsBoolean()) {
|
||||
resetButton.setY(y);
|
||||
resetButton.render(context, mouseX, mouseY, tickDelta);
|
||||
|
Loading…
Reference in New Issue
Block a user