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