Spaces:
Build error
Build error
package net.minecraft.client.gui.layouts; | |
import com.mojang.math.Divisor; | |
import java.util.ArrayList; | |
import java.util.Iterator; | |
import java.util.List; | |
import java.util.function.Consumer; | |
import net.minecraft.Util; | |
import net.minecraftforge.api.distmarker.Dist; | |
import net.minecraftforge.api.distmarker.OnlyIn; | |
public class EqualSpacingLayout extends AbstractLayout { | |
private final EqualSpacingLayout.Orientation orientation; | |
private final List<EqualSpacingLayout.ChildContainer> children = new ArrayList<>(); | |
private final LayoutSettings defaultChildLayoutSettings = LayoutSettings.defaults(); | |
public EqualSpacingLayout(int p_298986_, int p_300198_, EqualSpacingLayout.Orientation p_297766_) { | |
this(0, 0, p_298986_, p_300198_, p_297766_); | |
} | |
public EqualSpacingLayout(int p_300144_, int p_297966_, int p_301171_, int p_299404_, EqualSpacingLayout.Orientation p_300279_) { | |
super(p_300144_, p_297966_, p_301171_, p_299404_); | |
this.orientation = p_300279_; | |
} | |
public void arrangeElements() { | |
super.arrangeElements(); | |
if (!this.children.isEmpty()) { | |
int i = 0; | |
int j = this.orientation.getSecondaryLength(this); | |
for (EqualSpacingLayout.ChildContainer equalspacinglayout$childcontainer : this.children) { | |
i += this.orientation.getPrimaryLength(equalspacinglayout$childcontainer); | |
j = Math.max(j, this.orientation.getSecondaryLength(equalspacinglayout$childcontainer)); | |
} | |
int k = this.orientation.getPrimaryLength(this) - i; | |
int l = this.orientation.getPrimaryPosition(this); | |
Iterator<EqualSpacingLayout.ChildContainer> iterator = this.children.iterator(); | |
EqualSpacingLayout.ChildContainer equalspacinglayout$childcontainer1 = iterator.next(); | |
this.orientation.setPrimaryPosition(equalspacinglayout$childcontainer1, l); | |
l += this.orientation.getPrimaryLength(equalspacinglayout$childcontainer1); | |
if (this.children.size() >= 2) { | |
Divisor divisor = new Divisor(k, this.children.size() - 1); | |
while (divisor.hasNext()) { | |
l += divisor.nextInt(); | |
EqualSpacingLayout.ChildContainer equalspacinglayout$childcontainer2 = iterator.next(); | |
this.orientation.setPrimaryPosition(equalspacinglayout$childcontainer2, l); | |
l += this.orientation.getPrimaryLength(equalspacinglayout$childcontainer2); | |
} | |
} | |
int i1 = this.orientation.getSecondaryPosition(this); | |
for (EqualSpacingLayout.ChildContainer equalspacinglayout$childcontainer3 : this.children) { | |
this.orientation.setSecondaryPosition(equalspacinglayout$childcontainer3, i1, j); | |
} | |
switch (this.orientation) { | |
case HORIZONTAL: | |
this.height = j; | |
break; | |
case VERTICAL: | |
this.width = j; | |
} | |
} | |
} | |
public void visitChildren(Consumer<LayoutElement> p_299750_) { | |
this.children.forEach(p_298818_ -> p_299750_.accept(p_298818_.child)); | |
} | |
public LayoutSettings newChildLayoutSettings() { | |
return this.defaultChildLayoutSettings.copy(); | |
} | |
public LayoutSettings defaultChildLayoutSetting() { | |
return this.defaultChildLayoutSettings; | |
} | |
public <T extends LayoutElement> T addChild(T p_301351_) { | |
return this.addChild(p_301351_, this.newChildLayoutSettings()); | |
} | |
public <T extends LayoutElement> T addChild(T p_299596_, LayoutSettings p_301383_) { | |
this.children.add(new EqualSpacingLayout.ChildContainer(p_299596_, p_301383_)); | |
return p_299596_; | |
} | |
public <T extends LayoutElement> T addChild(T p_298517_, Consumer<LayoutSettings> p_297917_) { | |
return this.addChild(p_298517_, Util.make(this.newChildLayoutSettings(), p_297917_)); | |
} | |
static class ChildContainer extends AbstractLayout.AbstractChildWrapper { | |
protected ChildContainer(LayoutElement p_298955_, LayoutSettings p_298136_) { | |
super(p_298955_, p_298136_); | |
} | |
} | |
public static enum Orientation { | |
HORIZONTAL, | |
VERTICAL; | |
int getPrimaryLength(LayoutElement p_299718_) { | |
return switch (this) { | |
case HORIZONTAL -> p_299718_.getWidth(); | |
case VERTICAL -> p_299718_.getHeight(); | |
}; | |
} | |
int getPrimaryLength(EqualSpacingLayout.ChildContainer p_298044_) { | |
return switch (this) { | |
case HORIZONTAL -> p_298044_.getWidth(); | |
case VERTICAL -> p_298044_.getHeight(); | |
}; | |
} | |
int getSecondaryLength(LayoutElement p_301361_) { | |
return switch (this) { | |
case HORIZONTAL -> p_301361_.getHeight(); | |
case VERTICAL -> p_301361_.getWidth(); | |
}; | |
} | |
int getSecondaryLength(EqualSpacingLayout.ChildContainer p_297317_) { | |
return switch (this) { | |
case HORIZONTAL -> p_297317_.getHeight(); | |
case VERTICAL -> p_297317_.getWidth(); | |
}; | |
} | |
void setPrimaryPosition(EqualSpacingLayout.ChildContainer p_298745_, int p_300763_) { | |
switch (this) { | |
case HORIZONTAL: | |
p_298745_.setX(p_300763_, p_298745_.getWidth()); | |
break; | |
case VERTICAL: | |
p_298745_.setY(p_300763_, p_298745_.getHeight()); | |
} | |
} | |
void setSecondaryPosition(EqualSpacingLayout.ChildContainer p_299676_, int p_297698_, int p_297461_) { | |
switch (this) { | |
case HORIZONTAL: | |
p_299676_.setY(p_297698_, p_297461_); | |
break; | |
case VERTICAL: | |
p_299676_.setX(p_297698_, p_297461_); | |
} | |
} | |
int getPrimaryPosition(LayoutElement p_299240_) { | |
return switch (this) { | |
case HORIZONTAL -> p_299240_.getX(); | |
case VERTICAL -> p_299240_.getY(); | |
}; | |
} | |
int getSecondaryPosition(LayoutElement p_299036_) { | |
return switch (this) { | |
case HORIZONTAL -> p_299036_.getY(); | |
case VERTICAL -> p_299036_.getX(); | |
}; | |
} | |
} | |
} |