Some Refactoring
This commit is contained in:
parent
170b3e5096
commit
d420045de8
4 changed files with 61 additions and 45 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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> {
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue