Fix drawing order by using Linked maps in layouts
This commit is contained in:
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
package de.johni0702.minecraft.gui.layout;
|
package de.johni0702.minecraft.gui.layout;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
@@ -32,11 +31,12 @@ import org.lwjgl.util.ReadableDimension;
|
|||||||
import org.lwjgl.util.ReadablePoint;
|
import org.lwjgl.util.ReadablePoint;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public abstract class CustomLayout<T extends GuiContainer<T>> implements Layout {
|
public abstract class CustomLayout<T extends GuiContainer<T>> implements Layout {
|
||||||
private final Layout parent;
|
private final Layout parent;
|
||||||
private Map<GuiElement, Pair<Point, Dimension>> result = Maps.newHashMap();
|
private Map<GuiElement, Pair<Point, Dimension>> result = new LinkedHashMap<>();
|
||||||
|
|
||||||
public CustomLayout() {
|
public CustomLayout() {
|
||||||
this(null);
|
this(null);
|
||||||
|
|||||||
@@ -23,7 +23,6 @@
|
|||||||
package de.johni0702.minecraft.gui.layout;
|
package de.johni0702.minecraft.gui.layout;
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -38,6 +37,7 @@ import org.lwjgl.util.ReadablePoint;
|
|||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class GridLayout implements Layout {
|
public class GridLayout implements Layout {
|
||||||
@@ -63,7 +63,7 @@ public class GridLayout implements Layout {
|
|||||||
}
|
}
|
||||||
int cellWidth = (size.getWidth() + spacingX) / columns - spacingX;
|
int cellWidth = (size.getWidth() + spacingX) / columns - spacingX;
|
||||||
int cellHeight = (size.getHeight() + spacingY) / rows - spacingY;
|
int cellHeight = (size.getHeight() + spacingY) / rows - spacingY;
|
||||||
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> map = Maps.newHashMap();
|
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> map = new LinkedHashMap<>();
|
||||||
Iterator<Map.Entry<GuiElement, LayoutData>> iter = container.getElements().entrySet().iterator();
|
Iterator<Map.Entry<GuiElement, LayoutData>> iter = container.getElements().entrySet().iterator();
|
||||||
for (int i = 0; i < rows; i++) {
|
for (int i = 0; i < rows; i++) {
|
||||||
for (int j = 0; j < columns; j++) {
|
for (int j = 0; j < columns; j++) {
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
package de.johni0702.minecraft.gui.layout;
|
package de.johni0702.minecraft.gui.layout;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -35,6 +34,7 @@ import org.lwjgl.util.Point;
|
|||||||
import org.lwjgl.util.ReadableDimension;
|
import org.lwjgl.util.ReadableDimension;
|
||||||
import org.lwjgl.util.ReadablePoint;
|
import org.lwjgl.util.ReadablePoint;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class HorizontalLayout implements Layout {
|
public class HorizontalLayout implements Layout {
|
||||||
@@ -59,7 +59,7 @@ public class HorizontalLayout implements Layout {
|
|||||||
public Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> layOut(GuiContainer<?> container, ReadableDimension size) {
|
public Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> layOut(GuiContainer<?> container, ReadableDimension size) {
|
||||||
int x = 0;
|
int x = 0;
|
||||||
int spacing = 0;
|
int spacing = 0;
|
||||||
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> map = Maps.newHashMap();
|
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> map = new LinkedHashMap<>();
|
||||||
for (Map.Entry<GuiElement, LayoutData> entry : container.getElements().entrySet()) {
|
for (Map.Entry<GuiElement, LayoutData> entry : container.getElements().entrySet()) {
|
||||||
x += spacing;
|
x += spacing;
|
||||||
spacing = this.spacing;
|
spacing = this.spacing;
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
package de.johni0702.minecraft.gui.layout;
|
package de.johni0702.minecraft.gui.layout;
|
||||||
|
|
||||||
import com.google.common.collect.Maps;
|
|
||||||
import de.johni0702.minecraft.gui.container.GuiContainer;
|
import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -35,6 +34,7 @@ import org.lwjgl.util.Point;
|
|||||||
import org.lwjgl.util.ReadableDimension;
|
import org.lwjgl.util.ReadableDimension;
|
||||||
import org.lwjgl.util.ReadablePoint;
|
import org.lwjgl.util.ReadablePoint;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class VerticalLayout implements Layout {
|
public class VerticalLayout implements Layout {
|
||||||
@@ -59,7 +59,7 @@ public class VerticalLayout implements Layout {
|
|||||||
public Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> layOut(GuiContainer<?> container, ReadableDimension size) {
|
public Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> layOut(GuiContainer<?> container, ReadableDimension size) {
|
||||||
int y = 0;
|
int y = 0;
|
||||||
int spacing = 0;
|
int spacing = 0;
|
||||||
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> map = Maps.newHashMap();
|
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> map = new LinkedHashMap<>();
|
||||||
for (Map.Entry<GuiElement, LayoutData> entry : container.getElements().entrySet()) {
|
for (Map.Entry<GuiElement, LayoutData> entry : container.getElements().entrySet()) {
|
||||||
y += spacing;
|
y += spacing;
|
||||||
spacing = this.spacing;
|
spacing = this.spacing;
|
||||||
|
|||||||
Reference in New Issue
Block a user