Split mod into core, recording, replay, render[todo], paths[todo] and extras[wip] modules
Move everything to com.replaymod package Add KeyBindingRegistry and SettingsRegistry Recreate settings GUI with new GUI API and dynamically from SettingsRegistry Use ReplayFile from ReplayStudio ReplayHandler is now object oriented Add GuiOverlay, GuiSlider and GuiTexturedButton to GUI API Rewrite both overlays to use new GUI API Fix size capping in vertical and horizontal layout Allow CustomLayouts to have parents Fix tooltip rendering when close to screen border Allow changing of columns in GridLayout
This commit is contained in:
@@ -35,15 +35,32 @@ import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
public abstract class CustomLayout<T extends GuiContainer<T>> implements Layout {
|
||||
private final Layout parent;
|
||||
private Map<GuiElement, Pair<Point, Dimension>> result = Maps.newHashMap();
|
||||
|
||||
public CustomLayout() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public CustomLayout(Layout parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> layOut(GuiContainer container, ReadableDimension size) {
|
||||
result.clear();
|
||||
Collection<GuiElement> elements = container.getChildren();
|
||||
for (GuiElement element : elements) {
|
||||
result.put(element, Pair.of(new Point(0, 0), new Dimension(element.getMinSize())));
|
||||
if (parent == null) {
|
||||
Collection<GuiElement> elements = container.getChildren();
|
||||
for (GuiElement element : elements) {
|
||||
result.put(element, Pair.of(new Point(0, 0), new Dimension(element.getMinSize())));
|
||||
}
|
||||
} else {
|
||||
Map<GuiElement, Pair<ReadablePoint, ReadableDimension>> elements = parent.layOut(container, size);
|
||||
for (Map.Entry<GuiElement, Pair<ReadablePoint, ReadableDimension>> entry : elements.entrySet()) {
|
||||
Pair<ReadablePoint, ReadableDimension> pair = entry.getValue();
|
||||
result.put(entry.getKey(), Pair.of(new Point(pair.getLeft()), new Dimension(pair.getRight())));
|
||||
}
|
||||
}
|
||||
|
||||
layout((T) container, size.getWidth(), size.getHeight());
|
||||
|
||||
@@ -27,7 +27,6 @@ import de.johni0702.minecraft.gui.container.GuiContainer;
|
||||
import de.johni0702.minecraft.gui.element.GuiElement;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
@@ -40,11 +39,13 @@ import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class GridLayout implements Layout {
|
||||
private static final Data DEFAULT_DATA = new Data();
|
||||
|
||||
private final int columns;
|
||||
@Accessors(chain = true)
|
||||
@Getter
|
||||
@Setter
|
||||
private int columns;
|
||||
|
||||
@Accessors(chain = true)
|
||||
@Getter
|
||||
|
||||
@@ -67,7 +67,9 @@ public class HorizontalLayout implements Layout {
|
||||
GuiElement element = entry.getKey();
|
||||
Data data = entry.getValue() instanceof Data ? (Data) entry.getValue() : DEFAULT_DATA;
|
||||
Dimension elementSize = new Dimension(element.getMinSize());
|
||||
elementSize.setHeight(Math.min(size.getHeight(), element.getMaxSize().getHeight()));
|
||||
ReadableDimension elementMaxSize = element.getMaxSize();
|
||||
elementSize.setWidth(Math.min(size.getWidth() - x, Math.min(elementSize.getWidth(), elementMaxSize.getWidth())));
|
||||
elementSize.setHeight(Math.min(size.getHeight(), elementMaxSize.getHeight()));
|
||||
int remainingHeight = size.getHeight() - elementSize.getHeight();
|
||||
int y = (int) (data.alignment * remainingHeight);
|
||||
map.put(element, Pair.<ReadablePoint, ReadableDimension>of(new Point(x, y), elementSize));
|
||||
|
||||
@@ -67,6 +67,8 @@ public class VerticalLayout implements Layout {
|
||||
GuiElement element = entry.getKey();
|
||||
Data data = entry.getValue() instanceof Data ? (Data) entry.getValue() : DEFAULT_DATA;
|
||||
Dimension elementSize = new Dimension(element.getMinSize());
|
||||
ReadableDimension elementMaxSize = element.getMaxSize();
|
||||
elementSize.setHeight(Math.min(size.getHeight() - y, Math.min(elementSize.getHeight(), elementMaxSize.getHeight())));
|
||||
elementSize.setWidth(Math.min(size.getWidth(), element.getMaxSize().getWidth()));
|
||||
int remainingWidth = size.getWidth() - elementSize.getWidth();
|
||||
int x = (int) (data.alignment * remainingWidth);
|
||||
|
||||
Reference in New Issue
Block a user