Skip to content

Commit 78f3185

Browse files
committed
Fix scissoring of list widget
1 parent cc3ee08 commit 78f3185

File tree

3 files changed

+29
-13
lines changed

3 files changed

+29
-13
lines changed

src/main/java/btw/lowercase/optiboxes/screen/SkyLayerListScreen.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package btw.lowercase.optiboxes.screen;
22

3+
import btw.lowercase.optiboxes.screen.widget.Gidget;
4+
import btw.lowercase.optiboxes.screen.widget.ScrollableList;
35
import btw.lowercase.optiboxes.screen.widget.SimpleButton;
46
import btw.lowercase.optiboxes.screen.widget.Text;
57
import btw.lowercase.optiboxes.skybox.OptiFineSkyLayer;
@@ -8,6 +10,9 @@
810
import net.minecraft.network.chat.CommonComponents;
911
import net.minecraft.network.chat.Component;
1012

13+
import java.util.ArrayList;
14+
import java.util.List;
15+
1116
public class SkyLayerListScreen extends DebugScreen {
1217
private final OptiFineSkybox skybox;
1318

@@ -20,21 +25,24 @@ public SkyLayerListScreen(Screen parent, OptiFineSkybox skybox) {
2025
protected void init() {
2126
super.init();
2227

23-
this.gidgets.add(new Text.Builder(this.title, this.width / 2, 12).centered().build(this.font));
24-
this.gidgets.add(new Text.Builder(this.skybox.getLayers().size() + " layers", this.width / 2, 12 + this.font.lineHeight).centered().build(this.font));
28+
this.gidgets.add(new Text.Builder(this.title.getString() + " (" + this.skybox.getLayers().size() + " layer(s)" + ")", this.width / 2, 12).centered().build(this.font));
2529

30+
List<Gidget> scrollableListGidgets = new ArrayList<>();
2631
int index = 0;
2732
for (OptiFineSkyLayer skyLayer : this.skybox.getLayers()) {
2833
int cidx = index;
29-
this.gidgets.add(new SimpleButton(
34+
scrollableListGidgets.add(new SimpleButton(
3035
Component.literal(index + " - " + skyLayer.source()),
3136
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
32-
36 + ((SimpleButton.DEFAULT_HEIGHT + SimpleButton.DEFAULT_PADDING) * index),
37+
((SimpleButton.DEFAULT_HEIGHT + SimpleButton.DEFAULT_PADDING) * index),
3338
(button) -> this.minecraft.setScreen(new SkyLayerInfoScreen(this, skyLayer, cidx))
3439
));
3540
index++;
3641
}
3742

43+
int pad = 20 + font.lineHeight;
44+
this.gidgets.add(new ScrollableList(scrollableListGidgets, 0, pad, this.width, this.height - pad - SimpleButton.DEFAULT_HEIGHT - 8));
45+
3846
this.gidgets.add(new SimpleButton(
3947
CommonComponents.GUI_BACK,
4048
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),

src/main/java/btw/lowercase/optiboxes/screen/SkyboxListScreen.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,14 @@ protected void init() {
3434
scrollableListGidgets.add(new SimpleButton(
3535
Component.literal(skybox.getWorldResourceKey().identifier().toString()),
3636
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
37-
30 + ((SimpleButton.DEFAULT_HEIGHT + SimpleButton.DEFAULT_PADDING) * index),
37+
((SimpleButton.DEFAULT_HEIGHT + SimpleButton.DEFAULT_PADDING) * index),
3838
(button) -> this.minecraft.setScreen(new SkyLayerListScreen(this, skybox))
3939
));
4040
index++;
4141
}
42-
this.gidgets.add(new ScrollableList(scrollableListGidgets, 0, 16, this.width, this.height - 32));
42+
43+
int pad = 20 + font.lineHeight;
44+
this.gidgets.add(new ScrollableList(scrollableListGidgets, 0, pad, this.width, this.height - pad - SimpleButton.DEFAULT_HEIGHT - 8));
4345

4446
this.gidgets.add(new SimpleButton(
4547
CommonComponents.GUI_DONE,

src/main/java/btw/lowercase/optiboxes/screen/widget/ScrollableList.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,55 @@
11
package btw.lowercase.optiboxes.screen.widget;
22

3-
import com.mojang.blaze3d.systems.RenderSystem;
43
import net.minecraft.client.gui.GuiGraphics;
4+
import net.minecraft.util.ARGB;
55

66
import java.util.List;
77

88
public class ScrollableList extends Gidget {
99
private final List<Gidget> gidgets;
10+
private double scrollY;
1011

1112
public ScrollableList(List<Gidget> gidgets, int x, int y, int width, int height) {
1213
super(x, y, width, height);
1314
this.gidgets = gidgets;
15+
this.scrollY = 0.0F;
1416
for (Gidget gidget : this.gidgets) {
15-
gidget.reposition(this.x() + gidget.x(), this.y() + gidget.y());
17+
gidget.reposition(this.x() + gidget.x(), this.y() + gidget.y() + 4);
1618
}
1719
}
1820

1921
@Override
2022
public void render(GuiGraphics guiGraphics, int mouseX, int mouseY) {
2123
this.renderBackground(guiGraphics);
22-
RenderSystem.enableScissorForRenderTypeDraws(this.x(), this.y(), this.width(), this.height());
24+
guiGraphics.enableScissor(this.x(), this.y(), this.x() + this.width(), this.y() + this.height());
2325
for (Gidget gidget : this.gidgets) {
2426
gidget.render(guiGraphics, mouseX, mouseY);
2527
}
26-
RenderSystem.disableScissorForRenderTypeDraws();
28+
guiGraphics.disableScissor();
2729
}
2830

2931
@Override
3032
public void renderBackground(GuiGraphics guiGraphics) {
31-
33+
guiGraphics.fill(this.x(), this.y(), this.x() + this.width(), this.y() + this.height(), ARGB.color(0.3F, 0));
34+
guiGraphics.hLine(this.x(), this.x() + this.width(), this.y(), ARGB.color(0.7F, 0));
35+
guiGraphics.hLine(this.x(), this.x() + this.width(), this.y() + this.height(), ARGB.color(0.7F, 0));
3236
}
3337

3438
@Override
3539
public void onMouseMove(double mouseX, double mouseY) {
3640
super.onMouseMove(mouseX, mouseY);
3741
for (Gidget gidget : this.gidgets) {
38-
gidget.onMouseMove(mouseX, mouseY);
42+
if (this.isInside(mouseX, mouseY)) {
43+
gidget.onMouseMove(mouseX, mouseY);
44+
}
3945
}
4046
}
4147

4248
@Override
4349
public void onMouseClicked(double mouseX, double mouseY) {
4450
super.onMouseClicked(mouseX, mouseY);
4551
for (Gidget gidget : this.gidgets) {
46-
if (gidget.isInside(mouseX, mouseY)) {
52+
if (this.isInside(mouseX, mouseY) && gidget.isInside(mouseX, mouseY)) {
4753
gidget.onMouseClicked(mouseX, mouseY);
4854
}
4955
}

0 commit comments

Comments
 (0)