Skip to content

Commit d8f2073

Browse files
committed
Refactor window mode option
1 parent 70d5cdc commit d8f2073

File tree

5 files changed

+47
-13
lines changed

5 files changed

+47
-13
lines changed

src/main/java/net/vulkanmod/config/Config.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class Config {
1616

1717
public int frameQueueSize = 2;
1818
public VideoModeSet.VideoMode videoMode = VideoModeManager.getFirstAvailable().getVideoMode();
19-
public boolean windowedFullscreen = false;
19+
public int windowMode = 0;
2020

2121
public int advCulling = 2;
2222
public boolean indirectDraw = true;

src/main/java/net/vulkanmod/config/option/Options.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.vulkanmod.config.gui.OptionBlock;
99
import net.vulkanmod.config.video.VideoModeManager;
1010
import net.vulkanmod.config.video.VideoModeSet;
11+
import net.vulkanmod.config.video.WindowMode;
1112
import net.vulkanmod.render.chunk.build.light.LightMode;
1213
import net.vulkanmod.render.vertex.TerrainRenderType;
1314
import net.vulkanmod.vulkan.Renderer;
@@ -77,19 +78,18 @@ public static OptionBlock[] getVideoOpts() {
7778
new OptionBlock("", new Option<?>[]{
7879
resolutionOption,
7980
RefreshRate,
80-
new SwitchOption(Component.translatable("options.fullscreen"),
81+
new CyclingOption<>(Component.translatable("vulkanmod.options.windowMode"),
82+
WindowMode.values(),
8183
value -> {
82-
minecraftOptions.fullscreen().set(value);
83-
// window.toggleFullScreen();
84-
fullscreenDirty = true;
85-
},
86-
() -> minecraftOptions.fullscreen().get()),
87-
new SwitchOption(Component.translatable("vulkanmod.options.windowedFullscreen"),
88-
value -> {
89-
config.windowedFullscreen = value;
84+
boolean exclusiveFullscreen = value == WindowMode.EXCLUSIVE_FULLSCREEN;
85+
minecraftOptions.fullscreen()
86+
.set(exclusiveFullscreen);
87+
88+
config.windowMode = value.mode;
9089
fullscreenDirty = true;
9190
},
92-
() -> config.windowedFullscreen),
91+
() -> WindowMode.fromValue(config.windowMode))
92+
.setTranslator(value -> Component.translatable(WindowMode.getComponentName(value))),
9393
new RangeOption(Component.translatable("options.framerateLimit"),
9494
10, 260, 10,
9595
value -> Component.nullToEmpty(value == 260 ?
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package net.vulkanmod.config.video;
2+
3+
public enum WindowMode {
4+
WINDOWED(0),
5+
WINDOWED_FULLSCREEN(1),
6+
EXCLUSIVE_FULLSCREEN(2);
7+
8+
public final int mode;
9+
10+
WindowMode(int mode) {
11+
this.mode = mode;
12+
}
13+
14+
public static WindowMode fromValue(int value) {
15+
return switch (value) {
16+
case 0 -> WINDOWED;
17+
case 1 -> WINDOWED_FULLSCREEN;
18+
case 2 -> EXCLUSIVE_FULLSCREEN;
19+
20+
default -> throw new IllegalStateException("Unexpected value: " + value);
21+
};
22+
}
23+
24+
public static String getComponentName(WindowMode windowMode) {
25+
return switch (windowMode) {
26+
case WINDOWED -> "vulkanmod.options.windowMode.windowed";
27+
case WINDOWED_FULLSCREEN -> "vulkanmod.options.windowMode.windowedFullscreen";
28+
case EXCLUSIVE_FULLSCREEN -> "options.fullscreen";
29+
};
30+
}
31+
}

src/main/java/net/vulkanmod/mixin/window/WindowMixin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.vulkanmod.config.video.VideoModeManager;
99
import net.vulkanmod.config.option.Options;
1010
import net.vulkanmod.config.video.VideoModeSet;
11+
import net.vulkanmod.config.video.WindowMode;
1112
import net.vulkanmod.vulkan.Renderer;
1213
import net.vulkanmod.vulkan.VRenderSystem;
1314
import net.vulkanmod.vulkan.Vulkan;
@@ -163,7 +164,7 @@ private void setMode() {
163164
this.wasOnFullscreen = true;
164165
}
165166
}
166-
else if (config.windowedFullscreen) {
167+
else if (config.windowMode == WindowMode.WINDOWED_FULLSCREEN.mode) {
167168
VideoModeSet.VideoMode videoMode = VideoModeManager.getOsVideoMode();
168169

169170
if (!this.wasOnFullscreen) {

src/main/resources/assets/vulkanmod/lang/en_us.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,7 @@
3939
"vulkanmod.options.uniqueOpaqueLayer": "Unique opaque layer",
4040
"vulkanmod.options.uniqueOpaqueLayer.tooltip": "Use a unique render layer for opaque terrain to improve performance.",
4141

42-
"vulkanmod.options.windowedFullscreen": "Windowed Fullscreen"
42+
"vulkanmod.options.windowMode": "Window Mode",
43+
"vulkanmod.options.windowMode.windowed": "Windowed",
44+
"vulkanmod.options.windowMode.windowedFullscreen": "Windowed Fullscreen"
4345
}

0 commit comments

Comments
 (0)