package speiger.src.coreengine.rendering.gui.components.layouts; import java.util.List; import java.util.function.Consumer; import speiger.src.collections.objects.lists.ObjectArrayList; import speiger.src.coreengine.rendering.gui.GuiComponent; import speiger.src.coreengine.rendering.gui.helper.box.IGuiBox; public class VerticalLayout implements Consumer { GuiComponent parent; List components = new ObjectArrayList<>(); IGuiBox box; float padding; boolean changing = false; public VerticalLayout(List components, IGuiBox box, float padding) { this.components.addAll(components); for(int i = 0;i T addComponent(T gui) { components.add(gui); gui.addChangeListener(this); gui.addCloseListener(this::removeComponent); accept(null); return gui; } public void removeComponent(GuiComponent gui) { if(components.remove(gui)) { gui.removeChangeListener(this); gui.removeCloseListener(this::removeComponent); accept(null); } } @Override public void accept(GuiComponent t) { if(changing) return; changing = true; float minX = box.getBaseX(); float minY = box.getBaseY(); float currentY = 0F; for(int i = 0;i