Some Refactoring

This commit is contained in:
Frank 2022-07-15 10:26:00 +02:00
parent 170b3e5096
commit d420045de8
4 changed files with 61 additions and 45 deletions

View file

@ -1,48 +1,9 @@
package org.betterx.ui.layout.components;
import org.betterx.ui.layout.components.render.ComponentRenderer;
import org.betterx.ui.layout.values.DynamicSize;
import org.betterx.ui.layout.values.Rectangle;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.components.AbstractWidget;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
class AbstractVanillaComponentRenderer<C extends AbstractWidget, V extends AbstractVanillaComponent<C, V>> implements ComponentRenderer {
V linkedComponent;
public Font getFont() {
return Minecraft.getInstance().font;
}
public int getWidth(net.minecraft.network.chat.Component c) {
return getFont().width(c.getVisualOrderText()) + 24;
}
public int getHeight(net.minecraft.network.chat.Component c) {
return getFont().lineHeight + 11;
}
protected V getLinkedComponent() {
return linkedComponent;
}
@Override
public void renderInBounds(PoseStack poseStack, int x, int y, float a, Rectangle bounds, Rectangle clipRect) {
if (linkedComponent != null) {
if (linkedComponent.vanillaComponent != null) {
linkedComponent.vanillaComponent.render(poseStack, x, y, a);
}
}
}
}
public abstract class AbstractVanillaComponent<C extends AbstractWidget, V extends AbstractVanillaComponent<C, V>> extends Component<AbstractVanillaComponentRenderer<C, V>> {
protected C vanillaComponent;
protected final net.minecraft.network.chat.Component component;
@ -65,14 +26,18 @@ public abstract class AbstractVanillaComponent<C extends AbstractWidget, V exten
vanillaComponent = createVanillaComponent();
}
protected net.minecraft.network.chat.Component contentComponent() {
return component;
}
@Override
public int getContentWidth() {
return renderer.getWidth(component);
return renderer.getWidth(contentComponent());
}
@Override
public int getContentHeight() {
return renderer.getHeight(component);
return renderer.getHeight(contentComponent());
}
@Override

View file

@ -0,0 +1,43 @@
package org.betterx.ui.layout.components;
import org.betterx.ui.layout.components.render.ComponentRenderer;
import org.betterx.ui.layout.values.Rectangle;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Font;
import net.minecraft.client.gui.components.AbstractWidget;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public class AbstractVanillaComponentRenderer<C extends AbstractWidget, V extends AbstractVanillaComponent<C, V>> implements ComponentRenderer {
V linkedComponent;
public Font getFont() {
return Minecraft.getInstance().font;
}
public int getWidth(net.minecraft.network.chat.Component c) {
return getFont().width(c.getVisualOrderText()) + 24;
}
public int getHeight(net.minecraft.network.chat.Component c) {
return getFont().lineHeight + 11;
}
protected V getLinkedComponent() {
return linkedComponent;
}
@Override
public void renderInBounds(PoseStack poseStack, int x, int y, float a, Rectangle bounds, Rectangle clipRect) {
if (linkedComponent != null) {
if (linkedComponent.vanillaComponent != null) {
linkedComponent.vanillaComponent.render(poseStack, x, y, a);
}
}
}
}

View file

@ -1,14 +1,11 @@
package org.betterx.ui.layout.components;
import org.betterx.ui.layout.components.render.ButtonRenderer;
import org.betterx.ui.layout.values.DynamicSize;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
class ButtonRenderer extends AbstractVanillaComponentRenderer<net.minecraft.client.gui.components.Button, Button> {
}
@Environment(EnvType.CLIENT)
public class Button extends AbstractVanillaComponent<net.minecraft.client.gui.components.Button, Button> {
final net.minecraft.client.gui.components.Button.OnPress onPress;

View file

@ -0,0 +1,11 @@
package org.betterx.ui.layout.components.render;
import org.betterx.ui.layout.components.AbstractVanillaComponentRenderer;
import org.betterx.ui.layout.components.Button;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
@Environment(EnvType.CLIENT)
public class ButtonRenderer extends AbstractVanillaComponentRenderer<net.minecraft.client.gui.components.Button, Button> {
}