Skip to content

Commit 2b659f4

Browse files
committed
Simplify debug screens code
1 parent 874010c commit 2b659f4

File tree

9 files changed

+160
-215
lines changed

9 files changed

+160
-215
lines changed

src/main/java/btw/lowercase/optiboxes/command/OptiboxesCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import btw.lowercase.optiboxes.OptiBoxesClient;
44
import btw.lowercase.optiboxes.skybox.SkyboxManager;
5-
import btw.lowercase.optiboxes.screen.OptiboxesDebugScreen;
5+
import btw.lowercase.optiboxes.screen.SkyboxListScreen;
66
import com.mojang.brigadier.Command;
77
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
88
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
@@ -20,7 +20,7 @@ public OptiboxesCommand() {
2020
});
2121

2222
then(ClientCommandManager.literal("debug").executes((context) -> {
23-
minecraft.schedule(() -> minecraft.setScreen(new OptiboxesDebugScreen(minecraft.screen, SkyboxManager.INSTANCE.getActiveSkyboxes())));
23+
minecraft.schedule(() -> minecraft.setScreen(new SkyboxListScreen(minecraft.screen, SkyboxManager.INSTANCE.getActiveSkyboxes())));
2424
return Command.SINGLE_SUCCESS;
2525
}));
2626
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package btw.lowercase.optiboxes.screen;
2+
3+
import btw.lowercase.optiboxes.screen.widget.Clickable;
4+
import btw.lowercase.optiboxes.screen.widget.Gidget;
5+
import net.minecraft.client.gui.GuiGraphics;
6+
import net.minecraft.client.gui.screens.Screen;
7+
import net.minecraft.client.input.MouseButtonEvent;
8+
import net.minecraft.network.chat.Component;
9+
import org.jetbrains.annotations.NotNull;
10+
11+
import java.util.ArrayList;
12+
import java.util.List;
13+
14+
public class DebugScreen extends Screen {
15+
protected final List<Gidget> gidgets;
16+
private final Screen parent;
17+
18+
public DebugScreen(Component title, Screen parent) {
19+
super(title);
20+
this.gidgets = new ArrayList<>();
21+
this.parent = parent;
22+
}
23+
24+
@Override
25+
protected void init() {
26+
this.gidgets.clear();
27+
}
28+
29+
@Override
30+
public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) {
31+
super.render(guiGraphics, mouseX, mouseY, delta);
32+
for (Gidget gidget : this.gidgets) {
33+
gidget.render(guiGraphics, mouseX, mouseY);
34+
}
35+
}
36+
37+
@Override
38+
public boolean mouseClicked(@NotNull MouseButtonEvent event, boolean isDoubleClick) {
39+
for (Gidget gidget : this.gidgets) {
40+
if (gidget instanceof Clickable clickable && gidget.isInside(event.x(), event.y())) {
41+
clickable.click(event.x(), event.y());
42+
}
43+
}
44+
45+
return super.mouseClicked(event, isDoubleClick);
46+
}
47+
48+
@Override
49+
public void onClose() {
50+
this.minecraft.setScreen(this.parent);
51+
}
52+
}

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

Lines changed: 0 additions & 86 deletions
This file was deleted.
Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,24 @@
11
package btw.lowercase.optiboxes.screen;
22

3-
import btw.lowercase.optiboxes.screen.widget.Gidget;
43
import btw.lowercase.optiboxes.screen.widget.Text;
54
import btw.lowercase.optiboxes.skybox.OptiFineSkyLayer;
6-
import net.minecraft.client.gui.GuiGraphics;
75
import net.minecraft.client.gui.components.Button;
86
import net.minecraft.client.gui.screens.Screen;
97
import net.minecraft.network.chat.CommonComponents;
108
import net.minecraft.network.chat.Component;
11-
import org.jetbrains.annotations.NotNull;
129

13-
import java.util.ArrayList;
14-
import java.util.List;
15-
16-
public class SkyLayerInfoScreen extends Screen {
17-
private final Screen parent;
10+
public class SkyLayerInfoScreen extends DebugScreen {
1811
private final OptiFineSkyLayer skyLayer;
19-
private final List<Gidget> gidgets;
2012

2113
public SkyLayerInfoScreen(Screen parent, OptiFineSkyLayer skyLayer, int index) {
22-
super(Component.literal(index + " - " + skyLayer.source().toString()));
23-
this.parent = parent;
14+
super(Component.literal(index + " - " + skyLayer.source().toString()), parent);
2415
this.skyLayer = skyLayer;
25-
this.gidgets = new ArrayList<>();
2616
}
2717

2818
@Override
2919
protected void init() {
30-
this.gidgets.clear();
20+
super.init();
21+
3122
this.gidgets.add(new Text.Builder(this.font, this.title, this.width / 2, 12).centered().build());
3223

3324
int y = 12 + (this.font.lineHeight * 3);
@@ -57,17 +48,4 @@ protected void init() {
5748
.pos((this.width / 2) - (Button.DEFAULT_WIDTH / 2), this.height - Button.DEFAULT_HEIGHT - 4)
5849
.build());
5950
}
60-
61-
@Override
62-
public void render(@NotNull GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) {
63-
super.render(guiGraphics, mouseX, mouseY, delta);
64-
for (Gidget gidget : this.gidgets) {
65-
gidget.render(guiGraphics, mouseX, mouseY);
66-
}
67-
}
68-
69-
@Override
70-
public void onClose() {
71-
this.minecraft.setScreen(this.parent);
72-
}
7351
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package btw.lowercase.optiboxes.screen;
2+
3+
import btw.lowercase.optiboxes.screen.widget.SimpleButton;
4+
import btw.lowercase.optiboxes.screen.widget.Text;
5+
import btw.lowercase.optiboxes.skybox.OptiFineSkyLayer;
6+
import btw.lowercase.optiboxes.skybox.OptiFineSkybox;
7+
import net.minecraft.client.gui.components.Button;
8+
import net.minecraft.client.gui.screens.Screen;
9+
import net.minecraft.network.chat.CommonComponents;
10+
import net.minecraft.network.chat.Component;
11+
12+
public class SkyLayerListScreen extends DebugScreen {
13+
private final OptiFineSkybox skybox;
14+
15+
public SkyLayerListScreen(Screen parent, OptiFineSkybox skybox) {
16+
super(Component.literal(skybox.getWorldResourceKey().identifier().toString()), parent);
17+
this.skybox = skybox;
18+
}
19+
20+
@Override
21+
protected void init() {
22+
super.init();
23+
24+
this.gidgets.add(new Text.Builder(this.font, this.title, this.width / 2, 12).centered().build());
25+
this.gidgets.add(new Text.Builder(this.font, this.skybox.getLayers().size() + " layers", this.width / 2, 12 + this.font.lineHeight).centered().build());
26+
27+
int index = 0;
28+
for (OptiFineSkyLayer skyLayer : this.skybox.getLayers()) {
29+
int cidx = index;
30+
this.gidgets.add(new SimpleButton(
31+
Component.literal(index + " - " + skyLayer.source()),
32+
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
33+
36 + ((SimpleButton.DEFAULT_HEIGHT + 8) * index),
34+
(button) -> this.minecraft.setScreen(new SkyLayerInfoScreen(this, skyLayer, cidx))
35+
));
36+
index++;
37+
}
38+
39+
this.addRenderableWidget(Button.builder(CommonComponents.GUI_BACK, (button) -> this.onClose())
40+
.pos((this.width / 2) - (Button.DEFAULT_WIDTH / 2), this.height - Button.DEFAULT_HEIGHT - 4)
41+
.build());
42+
}
43+
}
44+

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

Lines changed: 0 additions & 92 deletions
This file was deleted.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package btw.lowercase.optiboxes.screen;
2+
3+
import btw.lowercase.optiboxes.screen.widget.SimpleButton;
4+
import btw.lowercase.optiboxes.screen.widget.Text;
5+
import btw.lowercase.optiboxes.skybox.OptiFineSkybox;
6+
import net.minecraft.client.gui.components.Button;
7+
import net.minecraft.client.gui.screens.Screen;
8+
import net.minecraft.network.chat.CommonComponents;
9+
import net.minecraft.network.chat.Component;
10+
11+
import java.util.List;
12+
13+
public class SkyboxListScreen extends DebugScreen {
14+
private final List<OptiFineSkybox> skyboxes;
15+
16+
public SkyboxListScreen(Screen parent, List<OptiFineSkybox> skyboxes) {
17+
super(Component.literal(skyboxes.isEmpty() ? "No skies enabled..." : skyboxes.size() + " Total Active Skyboxes"), parent);
18+
this.skyboxes = skyboxes;
19+
}
20+
21+
@Override
22+
protected void init() {
23+
super.init();
24+
25+
// TODO: isActive | button color
26+
this.gidgets.add(new Text.Builder(this.font, this.title, this.width / 2, 12).centered().build());
27+
28+
int index = 0;
29+
for (OptiFineSkybox skybox : this.skyboxes) {
30+
this.gidgets.add(new SimpleButton(
31+
Component.literal(skybox.getWorldResourceKey().identifier().toString()),
32+
(this.width / 2) - (SimpleButton.DEFAULT_WIDTH / 2),
33+
30 + ((SimpleButton.DEFAULT_HEIGHT + 8) * index),
34+
(button) -> this.minecraft.setScreen(new SkyLayerListScreen(this, skybox))
35+
));
36+
index++;
37+
}
38+
39+
this.addRenderableWidget(Button.builder(CommonComponents.GUI_DONE, (button) -> this.onClose())
40+
.pos((this.width / 2) - (Button.DEFAULT_WIDTH / 2), this.height - Button.DEFAULT_HEIGHT - 4)
41+
.build());
42+
}
43+
}

0 commit comments

Comments
 (0)