Skip to content

Commit 0206f54

Browse files
committed
Add scrolling to scrollable list
1 parent afd0370 commit 0206f54

File tree

11 files changed

+598
-515
lines changed

11 files changed

+598
-515
lines changed

src/main/java/btw/lowercase/skyboxify/screen/DebugScreen.java

Lines changed: 87 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -33,112 +33,112 @@
3333
import java.util.List;
3434

3535
public class DebugScreen extends Screen {
36-
protected final List<Gidget> gidgets;
37-
private final Screen parent;
38-
39-
public DebugScreen(Component title, Screen parent) {
40-
super(title);
41-
this.gidgets = new ArrayList<>();
42-
this.parent = parent;
43-
}
44-
45-
@Override
46-
protected void init() {
47-
this.gidgets.clear();
48-
}
49-
50-
@Override
51-
public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) {
52-
super.render(guiGraphics, mouseX, mouseY, delta);
53-
for (Gidget gidget : this.gidgets) {
54-
gidget.render(guiGraphics, mouseX, mouseY);
55-
}
56-
}
57-
58-
private void mouseClickedInternal(double mouseX, double mouseY) {
59-
for (Gidget gidget : this.gidgets) {
60-
if (gidget.box().contains((int) mouseX, (int) mouseY)) {
61-
gidget.onMouseClicked(mouseX, mouseY);
62-
}
63-
}
64-
}
65-
66-
//? >=1.21.9 {
67-
@Override
68-
public boolean mouseClicked(net.minecraft.client.input.MouseButtonEvent event, boolean isDoubleClick) {
69-
this.mouseClickedInternal(event.x(), event.y());
70-
return super.mouseClicked(event, isDoubleClick);
71-
}
72-
//?} else {
36+
protected final List<Gidget> gidgets;
37+
private final Screen parent;
38+
39+
public DebugScreen(Component title, Screen parent) {
40+
super(title);
41+
this.gidgets = new ArrayList<>();
42+
this.parent = parent;
43+
}
44+
45+
@Override
46+
protected void init() {
47+
this.gidgets.clear();
48+
}
49+
50+
@Override
51+
public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) {
52+
super.render(guiGraphics, mouseX, mouseY, delta);
53+
for (Gidget gidget : this.gidgets) {
54+
gidget.render(guiGraphics, mouseX, mouseY);
55+
}
56+
}
57+
58+
private void mouseClickedInternal(double mouseX, double mouseY) {
59+
for (Gidget gidget : this.gidgets) {
60+
if (gidget.box().contains((int) mouseX, (int) mouseY)) {
61+
gidget.onMouseClicked(mouseX, mouseY);
62+
}
63+
}
64+
}
65+
66+
//? >=1.21.9 {
67+
@Override
68+
public boolean mouseClicked(net.minecraft.client.input.MouseButtonEvent event, boolean isDoubleClick) {
69+
this.mouseClickedInternal(event.x(), event.y());
70+
return super.mouseClicked(event, isDoubleClick);
71+
}
72+
//?} else {
7373
/*@Override
7474
public boolean mouseClicked(double mouseX, double mouseY, int button) {
7575
this.mouseClickedInternal(mouseX, mouseY);
7676
return super.mouseClicked(mouseX, mouseY, button);
7777
}
7878
*///?}
7979

80-
@Override
81-
public void mouseMoved(double mouseX, double mouseY) {
82-
for (Gidget gidget : this.gidgets) {
83-
gidget.onMouseMove(mouseX, mouseY);
84-
}
85-
86-
super.mouseMoved(mouseX, mouseY);
87-
}
88-
89-
@Override
90-
public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) {
91-
for (Gidget gidget : this.gidgets) {
92-
if (gidget.box().contains((int) mouseX, (int) mouseY)) {
93-
gidget.onMouseScrolled(mouseX, mouseY, scrollX, scrollY);
94-
}
95-
}
96-
97-
return super.mouseScrolled(mouseX, mouseY, scrollX, scrollY);
98-
}
99-
100-
private void keyPressedInternal(int keyCode, int scanCode, int modifiers) {
101-
for (Gidget gidget : this.gidgets) {
102-
gidget.onKeyDown(scanCode, keyCode, modifiers);
103-
}
104-
}
105-
106-
//? >=1.21.9 {
107-
@Override
108-
public boolean keyPressed(net.minecraft.client.input.KeyEvent event) {
109-
this.keyPressedInternal(event.key(), event.scancode(), event.modifiers());
110-
return super.keyPressed(event);
111-
}
112-
//?} else {
80+
@Override
81+
public void mouseMoved(double mouseX, double mouseY) {
82+
for (Gidget gidget : this.gidgets) {
83+
gidget.onMouseMove(mouseX, mouseY);
84+
}
85+
86+
super.mouseMoved(mouseX, mouseY);
87+
}
88+
89+
@Override
90+
public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) {
91+
for (Gidget gidget : this.gidgets) {
92+
if (gidget.box().contains((int) mouseX, (int) mouseY)) {
93+
gidget.onMouseScrolled(mouseX, mouseY, scrollX, scrollY);
94+
}
95+
}
96+
97+
return super.mouseScrolled(mouseX, mouseY, scrollX, scrollY);
98+
}
99+
100+
private void keyPressedInternal(int keyCode, int scanCode, int modifiers) {
101+
for (Gidget gidget : this.gidgets) {
102+
gidget.onKeyDown(scanCode, keyCode, modifiers);
103+
}
104+
}
105+
106+
//? >=1.21.9 {
107+
@Override
108+
public boolean keyPressed(net.minecraft.client.input.KeyEvent event) {
109+
this.keyPressedInternal(event.key(), event.scancode(), event.modifiers());
110+
return super.keyPressed(event);
111+
}
112+
//?} else {
113113
/*@Override
114114
public boolean keyPressed(int keyCode, int scanCode, int modifiers) {
115115
this.keyPressedInternal(keyCode, scanCode, modifiers);
116116
return super.keyPressed(keyCode, scanCode, modifiers);
117117
}
118118
*///?}
119119

120-
private void keyReleasedInternal(int keyCode, int scanCode, int modifiers) {
121-
for (Gidget gidget : this.gidgets) {
122-
gidget.onKeyUp(scanCode, keyCode, modifiers);
123-
}
124-
}
125-
126-
//? >=1.21.9 {
127-
@Override
128-
public boolean keyReleased(net.minecraft.client.input.KeyEvent event) {
129-
this.keyPressedInternal(event.key(), event.scancode(), event.modifiers());
130-
return super.keyReleased(event);
131-
}
132-
//?} else {
120+
private void keyReleasedInternal(int keyCode, int scanCode, int modifiers) {
121+
for (Gidget gidget : this.gidgets) {
122+
gidget.onKeyUp(scanCode, keyCode, modifiers);
123+
}
124+
}
125+
126+
//? >=1.21.9 {
127+
@Override
128+
public boolean keyReleased(net.minecraft.client.input.KeyEvent event) {
129+
this.keyPressedInternal(event.key(), event.scancode(), event.modifiers());
130+
return super.keyReleased(event);
131+
}
132+
//?} else {
133133
/*@Override
134134
public boolean keyReleased(int keyCode, int scanCode, int modifiers) {
135135
this.keyPressedInternal(keyCode, scanCode, modifiers);
136136
return super.keyReleased(keyCode, scanCode, modifiers);
137137
}
138138
*///?}
139139

140-
@Override
141-
public void onClose() {
142-
this.minecraft.setScreen(this.parent);
143-
}
140+
@Override
141+
public void onClose() {
142+
this.minecraft.setScreen(this.parent);
143+
}
144144
}

src/main/java/btw/lowercase/skyboxify/screen/SkyLayerInfoScreen.java

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -31,45 +31,44 @@
3131
import net.minecraft.network.chat.Component;
3232

3333
public class SkyLayerInfoScreen extends DebugScreen {
34-
private final SkyLayer skyLayer;
34+
private final SkyLayer skyLayer;
3535

36-
public SkyLayerInfoScreen(Screen parent, SkyLayer skyLayer, int index) {
37-
super(Component.literal(index + " - " + skyLayer.source().toString()), parent);
38-
this.skyLayer = skyLayer;
39-
}
36+
public SkyLayerInfoScreen(Screen parent, SkyLayer skyLayer, int index) {
37+
super(Component.literal(index + " - " + skyLayer.source().toString()), parent);
38+
this.skyLayer = skyLayer;
39+
}
4040

41-
@Override
42-
protected void init() {
43-
super.init();
41+
@Override
42+
protected void init() {
43+
super.init();
4444

45-
this.gidgets.add(new Text.Builder(this.title, this.width / 2, 12).centered().build(this.font));
45+
this.gidgets.add(Text.builder(this.title)
46+
.position(this.width / 2, 12)
47+
.centered()
48+
.build(this.font));
4649

47-
int y = 12 + (this.font.lineHeight * 3);
48-
this.gidgets.add(new Text.Builder(" Rotate: " + this.skyLayer.rotate(), this.width / 2, y).centered().build(this.font));
49-
y += this.font.lineHeight + 2;
50-
this.gidgets.add(new Text.Builder(" Axis: " + this.skyLayer.axis(), this.width / 2, y).centered().build(this.font));
51-
y += this.font.lineHeight + 2;
52-
this.gidgets.add(new Text.Builder(" Blend: " + this.skyLayer.blend(), this.width / 2, y).centered().build(this.font));
53-
y += this.font.lineHeight + 2;
54-
this.gidgets.add(new Text.Builder(" Speed: " + this.skyLayer.speed(), this.width / 2, y).centered().build(this.font));
55-
y += this.font.lineHeight + 2;
56-
this.gidgets.add(new Text.Builder(" Transition: " + this.skyLayer.transition(), this.width / 2, y).centered().build(this.font));
57-
y += this.font.lineHeight + 2;
58-
this.gidgets.add(new Text.Builder(" Fade: " + this.skyLayer.fade(), this.width / 2, y).centered().build(this.font));
59-
y += this.font.lineHeight + 2;
60-
this.gidgets.add(new Text.Builder(" Loop: " + this.skyLayer.loop(), this.width / 2, y).centered().build(this.font));
61-
y += this.font.lineHeight + 2;
62-
this.gidgets.add(new Text.Builder(" Biomes: " + this.skyLayer.biomes(), this.width / 2, y).centered().build(this.font));
63-
y += this.font.lineHeight + 2;
64-
this.gidgets.add(new Text.Builder(" Heights: " + this.skyLayer.heights(), this.width / 2, y).centered().build(this.font));
65-
y += this.font.lineHeight + 2;
66-
this.gidgets.add(new Text.Builder(" Weather Conditions: " + this.skyLayer.weatherConditions(), this.width / 2, y).centered().build(this.font));
50+
addLine(Text.builder("Rotate: " + this.skyLayer.rotate()).centered().build(this.font));
51+
addLine(Text.builder("Axis: " + this.skyLayer.axis()).centered().build(this.font));
52+
addLine(Text.builder("Blend: " + this.skyLayer.blend()).centered().build(this.font));
53+
addLine(Text.builder("Speed: " + this.skyLayer.speed()).centered().build(this.font));
54+
addLine(Text.builder("Transition: " + this.skyLayer.transition()).centered().build(this.font));
55+
addLine(Text.builder("Fade: " + this.skyLayer.fade()).centered().build(this.font));
56+
addLine(Text.builder("Loop: " + this.skyLayer.loop()).centered().build(this.font));
57+
addLine(Text.builder("Biomes: " + this.skyLayer.biomes()).centered().build(this.font));
58+
addLine(Text.builder("Heights: " + this.skyLayer.heights()).centered().build(this.font));
59+
addLine(Text.builder("Weather Conditions: " + this.skyLayer.weatherConditions()).centered().build(this.font));
6760

68-
this.gidgets.add(new SimpleButton(
69-
CommonComponents.GUI_BACK,
70-
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
71-
this.height - SimpleButton.DEFAULT_HEIGHT - 4,
72-
(button) -> this.onClose()
73-
));
74-
}
61+
this.gidgets.add(new SimpleButton(
62+
CommonComponents.GUI_BACK,
63+
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
64+
this.height - SimpleButton.DEFAULT_HEIGHT - 4,
65+
(button) -> this.onClose()
66+
));
67+
}
68+
69+
private void addLine(final Text text) {
70+
text.move(this.width / 2, 12 + (this.font.lineHeight * 3) + ((this.font.lineHeight + 2) * (this.gidgets.size() - 1)));
71+
text.setText(Component.literal(" " + text.getText().getString()));
72+
this.gidgets.add(text);
73+
}
7574
}

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

Lines changed: 34 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -37,47 +37,45 @@
3737
import java.util.List;
3838

3939
public class SkyLayerListScreen extends DebugScreen {
40-
private final Skybox skybox;
40+
private final Skybox skybox;
4141

42-
public SkyLayerListScreen(Screen parent, Skybox skybox) {
43-
super(Component.literal(
44-
//? >=1.21.11 {
45-
/*skybox.getWorldResourceKey().identifier().toString()
46-
*///?} else {
47-
skybox.getWorldResourceKey().location().toString()
48-
//?}
49-
), parent);
50-
this.skybox = skybox;
51-
}
42+
public SkyLayerListScreen(Screen parent, Skybox skybox) {
43+
super(Component.literal(
44+
//? >=1.21.11 {
45+
/*skybox.getWorldResourceKey().identifier().toString()
46+
*///?} else {
47+
skybox.getWorldResourceKey().location().toString()
48+
//?}
49+
), parent);
50+
this.skybox = skybox;
51+
}
5252

53-
@Override
54-
protected void init() {
55-
super.init();
53+
@Override
54+
protected void init() {
55+
super.init();
5656

57-
this.gidgets.add(new Text.Builder(this.title.getString() + " (" + this.skybox.getLayers().size() + " layer(s)" + ")", this.width / 2, 12).centered().build(this.font));
57+
this.gidgets.add(Text.builder(this.title.getString() + " (" + this.skybox.getLayers().size() + " layer(s)" + ")")
58+
.position(this.width / 2, 12)
59+
.centered()
60+
.build(this.font));
5861

59-
List<Gidget> scrollableListGidgets = new ArrayList<>();
60-
int index = 0;
61-
for (SkyLayer skyLayer : this.skybox.getLayers()) {
62-
int cidx = index;
63-
scrollableListGidgets.add(new SimpleButton(
64-
Component.literal(index + " - " + skyLayer.source()),
65-
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
66-
((SimpleButton.DEFAULT_HEIGHT + SimpleButton.DEFAULT_PADDING) * index),
67-
(button) -> this.minecraft.setScreen(new SkyLayerInfoScreen(this, skyLayer, cidx))
68-
));
69-
index++;
70-
}
62+
List<Gidget> scrollableListGidgets = new ArrayList<>();
63+
int index = 0;
64+
for (SkyLayer skyLayer : this.skybox.getLayers()) {
65+
int skyIndex = index;
66+
scrollableListGidgets.add(SimpleButton.builder(Component.literal((index + 1) + " - " + skyLayer.source()), button -> this.minecraft.setScreen(new SkyLayerInfoScreen(this, skyLayer, skyIndex))).build());
67+
index++;
68+
}
7169

72-
int pad = 20 + font.lineHeight;
73-
this.gidgets.add(new ScrollableList(scrollableListGidgets, 0, pad, this.width, this.height - pad - SimpleButton.DEFAULT_HEIGHT - 8));
70+
int pad = 20 + font.lineHeight;
71+
this.gidgets.add(new ScrollableList(scrollableListGidgets, 0, pad, this.width, this.height - pad - SimpleButton.DEFAULT_HEIGHT - 8));
7472

75-
this.gidgets.add(new SimpleButton(
76-
CommonComponents.GUI_BACK,
77-
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
78-
this.height - SimpleButton.DEFAULT_HEIGHT - 4,
79-
(button) -> this.onClose()
80-
));
81-
}
73+
this.gidgets.add(new SimpleButton(
74+
CommonComponents.GUI_BACK,
75+
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
76+
this.height - SimpleButton.DEFAULT_HEIGHT - 4,
77+
(button) -> this.onClose()
78+
));
79+
}
8280
}
8381

0 commit comments

Comments
 (0)