Remove preferred size and default button size
Replace alignment data in horizontal and vertical layout with double value Add convenient size(GuiElement, ReadableDimension) method to custom layout
This commit is contained in:
@@ -28,6 +28,7 @@ import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||
import de.johni0702.minecraft.gui.function.Clickable;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
@@ -46,12 +47,10 @@ public abstract class AbstractGuiButton<T extends AbstractGuiButton<T>> extends
|
||||
private String label;
|
||||
|
||||
public AbstractGuiButton() {
|
||||
setSize(new Dimension(200, 20));
|
||||
}
|
||||
|
||||
public AbstractGuiButton(GuiContainer container) {
|
||||
super(container);
|
||||
setSize(new Dimension(200, 20));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -84,8 +83,9 @@ public abstract class AbstractGuiButton<T extends AbstractGuiButton<T>> extends
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
return getPreferredSize();
|
||||
public ReadableDimension calcMinSize() {
|
||||
FontRenderer fontRenderer = getMinecraft().fontRendererObj;
|
||||
return new Dimension(fontRenderer.getStringWidth(label), 20);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -74,13 +74,18 @@ public abstract class AbstractGuiCheckbox<T extends AbstractGuiCheckbox<T>>
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
public ReadableDimension calcMinSize() {
|
||||
FontRenderer fontRenderer = getMinecraft().fontRendererObj;
|
||||
int height = fontRenderer.FONT_HEIGHT + 2;
|
||||
int width = height + 2 + fontRenderer.getStringWidth(label);
|
||||
return new Dimension(width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMaxSize() {
|
||||
return getMinSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick() {
|
||||
getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.create(BUTTON_SOUND, 1.0F));
|
||||
|
||||
@@ -42,7 +42,7 @@ public abstract class AbstractGuiElement<T extends AbstractGuiElement<T>> implem
|
||||
@Getter
|
||||
private boolean enabled = true;
|
||||
|
||||
private Dimension maxSize, preferredSize;
|
||||
protected Dimension minSize, maxSize;
|
||||
|
||||
public AbstractGuiElement() {
|
||||
}
|
||||
@@ -99,20 +99,19 @@ public abstract class AbstractGuiElement<T extends AbstractGuiElement<T>> implem
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public T setMinSize(ReadableDimension minSize) {
|
||||
this.minSize = new Dimension(minSize);
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public T setMaxSize(ReadableDimension maxSize) {
|
||||
this.maxSize = new Dimension(maxSize);
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public T setPreferredSize(ReadableDimension preferredSize) {
|
||||
this.preferredSize = new Dimension(preferredSize);
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public T setSize(ReadableDimension size) {
|
||||
Dimension dimension = new Dimension(size);
|
||||
maxSize = preferredSize = dimension;
|
||||
return getThis();
|
||||
setMinSize(size);
|
||||
return setMaxSize(size);
|
||||
}
|
||||
|
||||
public T setSize(int width, int height) {
|
||||
@@ -120,30 +119,30 @@ public abstract class AbstractGuiElement<T extends AbstractGuiElement<T>> implem
|
||||
}
|
||||
|
||||
public T setWidth(int width) {
|
||||
if (minSize == null) {
|
||||
minSize = new Dimension(width, 0);
|
||||
} else {
|
||||
minSize.setWidth(width);
|
||||
}
|
||||
if (maxSize == null) {
|
||||
maxSize = new Dimension(width, 0);
|
||||
maxSize = new Dimension(width, Integer.MAX_VALUE);
|
||||
} else {
|
||||
maxSize.setWidth(width);
|
||||
}
|
||||
if (preferredSize == null) {
|
||||
preferredSize = new Dimension(width, 0);
|
||||
} else {
|
||||
preferredSize.setWidth(width);
|
||||
}
|
||||
return getThis();
|
||||
}
|
||||
|
||||
public T setHeight(int height) {
|
||||
if (minSize == null) {
|
||||
minSize = new Dimension(0, height);
|
||||
} else {
|
||||
minSize.setHeight(height);
|
||||
}
|
||||
if (maxSize == null) {
|
||||
maxSize = new Dimension(0, height);
|
||||
maxSize = new Dimension(Integer.MAX_VALUE, height);
|
||||
} else {
|
||||
maxSize.setHeight(height);
|
||||
}
|
||||
if (preferredSize == null) {
|
||||
preferredSize = new Dimension(0, height);
|
||||
} else {
|
||||
preferredSize.setHeight(height);
|
||||
}
|
||||
return getThis();
|
||||
}
|
||||
|
||||
@@ -152,12 +151,14 @@ public abstract class AbstractGuiElement<T extends AbstractGuiElement<T>> implem
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMaxSize() {
|
||||
return maxSize == null ? getPreferredSize() : maxSize;
|
||||
public ReadableDimension getMinSize() {
|
||||
return minSize == null ? calcMinSize() : minSize;
|
||||
}
|
||||
|
||||
protected abstract ReadableDimension calcMinSize();
|
||||
|
||||
@Override
|
||||
public ReadableDimension getPreferredSize() {
|
||||
return preferredSize == null ? getMinSize() : preferredSize;
|
||||
public ReadableDimension getMaxSize() {
|
||||
return maxSize == null ? new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE) : maxSize;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import de.johni0702.minecraft.gui.RenderInfo;
|
||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import net.minecraft.client.renderer.texture.DynamicTexture;
|
||||
import org.lwjgl.util.Dimension;
|
||||
import org.lwjgl.util.ReadableDimension;
|
||||
|
||||
import java.awt.image.BufferedImage;
|
||||
@@ -60,8 +61,8 @@ public abstract class AbstractGuiImage<T extends AbstractGuiImage<T>>
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
return getPreferredSize();
|
||||
public ReadableDimension calcMinSize() {
|
||||
return new Dimension(0, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -61,11 +61,16 @@ public abstract class AbstractGuiLabel<T extends AbstractGuiLabel<T>> extends Ab
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
public ReadableDimension calcMinSize() {
|
||||
FontRenderer fontRenderer = getMinecraft().fontRendererObj;
|
||||
return new Dimension(fontRenderer.getStringWidth(text), fontRenderer.FONT_HEIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMaxSize() {
|
||||
return getMinSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T setText(String text) {
|
||||
this.text = text;
|
||||
|
||||
@@ -32,8 +32,10 @@ import de.johni0702.minecraft.gui.function.Tickable;
|
||||
import de.johni0702.minecraft.gui.function.Typeable;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.util.Dimension;
|
||||
import org.lwjgl.util.ReadableColor;
|
||||
import org.lwjgl.util.ReadableDimension;
|
||||
import org.lwjgl.util.ReadablePoint;
|
||||
@@ -84,8 +86,9 @@ public abstract class AbstractGuiTextField<T extends AbstractGuiTextField<T>>
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
return getPreferredSize();
|
||||
public ReadableDimension calcMinSize() {
|
||||
FontRenderer fontRenderer = getMinecraft().fontRendererObj;
|
||||
return new Dimension(0, fontRenderer.FONT_HEIGHT);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -70,7 +70,7 @@ public abstract class AbstractGuiTooltip<T extends AbstractGuiTooltip<T>> extend
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
public ReadableDimension calcMinSize() {
|
||||
FontRenderer fontRenderer = getMinecraft().fontRendererObj;
|
||||
int height = 1 + LINE_SPACING + text.length * (fontRenderer.FONT_HEIGHT + LINE_SPACING);
|
||||
int width = 0;
|
||||
@@ -84,6 +84,11 @@ public abstract class AbstractGuiTooltip<T extends AbstractGuiTooltip<T>> extend
|
||||
return new Dimension(width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMaxSize() {
|
||||
return getMinSize();
|
||||
}
|
||||
|
||||
public T setText(String[]text) {
|
||||
this.text = text;
|
||||
return getThis();
|
||||
|
||||
@@ -38,10 +38,8 @@ public interface GuiElement<T extends GuiElement<T>> {
|
||||
void draw(GuiRenderer renderer, ReadableDimension size, RenderInfo renderInfo);
|
||||
|
||||
ReadableDimension getMinSize();
|
||||
ReadableDimension getPreferredSize();
|
||||
ReadableDimension getMaxSize();
|
||||
|
||||
T setPreferredSize(ReadableDimension preferredSize);
|
||||
T setMaxSize(ReadableDimension maxSize);
|
||||
|
||||
boolean isEnabled();
|
||||
|
||||
@@ -29,6 +29,7 @@ import de.johni0702.minecraft.gui.element.AbstractGuiElement;
|
||||
import lombok.Getter;
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import org.lwjgl.util.Dimension;
|
||||
import org.lwjgl.util.ReadableColor;
|
||||
import org.lwjgl.util.ReadableDimension;
|
||||
|
||||
@@ -82,7 +83,7 @@ public abstract class AbstractGuiProgressBar<T extends AbstractGuiElement<T>> ex
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReadableDimension getMinSize() {
|
||||
return getPreferredSize();
|
||||
public ReadableDimension calcMinSize() {
|
||||
return new Dimension(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user