166 lines
4.5 KiB
Java
Executable File
166 lines
4.5 KiB
Java
Executable File
package projectzombie.menu;
|
|
|
|
import gl_engine.vec.Vec2d;
|
|
import projectzombie.Main;
|
|
import projectzombie.display.DisplayRender;
|
|
import projectzombie.display.DisplayRenderUI;
|
|
import projectzombie.display.DisplayWindow;
|
|
import projectzombie.entity.EntityParticle;
|
|
import projectzombie.input.types.InputGUI;
|
|
import projectzombie.menu.gui.GUIButton;
|
|
import projectzombie.menu.gui.GUIButtonBasic;
|
|
import projectzombie.menu.gui.GUIButtonGroup;
|
|
import projectzombie.menu.gui.GUIButtonSetting;
|
|
import projectzombie.menu.gui.GUI;
|
|
import projectzombie.menu.gui.GUIBackToMenu;
|
|
import projectzombie.menu.gui.GUISelectableDirection;
|
|
import projectzombie.menu.gui.GUILabel;
|
|
import projectzombie.settings.SettingQuality;
|
|
import projectzombie.settings.Settings;
|
|
import projectzombie.world.chunk.Chunk;
|
|
|
|
public class MenuSettings extends Menu
|
|
{
|
|
public GUIButtonSetting buttonFullscreen;
|
|
|
|
private GUI gui;
|
|
private Menu menuOld;
|
|
|
|
public static String render(SettingQuality setting) {
|
|
switch(setting)
|
|
{
|
|
case HIGH: return "High";
|
|
case MEDIUM: return "Medium";
|
|
case LOW: return "Low";
|
|
case EXTREME: return "Extreme";
|
|
case LOWEST: return "Lowest";
|
|
default: return "Unknown";
|
|
}
|
|
}
|
|
|
|
public MenuSettings(Menu menuOld) {
|
|
|
|
this.menuOld = menuOld;
|
|
|
|
doGameloop = false;
|
|
doGameRender = menuOld.doGameRender;
|
|
showIngameGUI = menuOld.showIngameGUI;
|
|
keepMouse = false;
|
|
|
|
GUIButtonGroup group = new GUIButtonGroup();
|
|
group.setPos(new Vec2d(-1, 4));
|
|
|
|
group.add(new GUIButtonSetting("FPS: " + (DisplayRenderUI.showFPS ? "On" : "Off"), button -> {
|
|
DisplayRenderUI.showFPS = !DisplayRenderUI.showFPS;
|
|
button.setText("FPS: " + (DisplayRenderUI.showFPS ? "On" : "Off"));
|
|
Settings.update();
|
|
}));
|
|
|
|
group.add(new GUIButtonSetting("VSync: " + (DisplayWindow.vsync ? "On" : "Off"), button -> {
|
|
DisplayWindow.setVSync(!DisplayWindow.vsync);
|
|
button.setText("VSync: " + (DisplayWindow.vsync ? "On" : "Off"));
|
|
Settings.update();
|
|
}));
|
|
|
|
group.add(buttonFullscreen = new GUIButtonSetting("Fullscreen: " + (DisplayWindow.fullscreen ? "On" : "Off"),
|
|
button -> {
|
|
Main.window.toggleFullscreen();
|
|
button.setText("Fullscreen: " + (DisplayWindow.fullscreen ? "On" : "Off"));
|
|
}));
|
|
|
|
group.add(new GUIButtonSetting("Debug mode: " + (DisplayRenderUI.debug ? "On" : "Off"),
|
|
button ->
|
|
{
|
|
DisplayRenderUI.debug = !DisplayRenderUI.debug;
|
|
button.setText("Debug mode: " + (DisplayRenderUI.debug ? "On" : "Off"));
|
|
Settings.update();
|
|
}));
|
|
|
|
group.add(new GUIButtonSetting("Render distance: "+Chunk.RENDER_DISTANCE, button -> {
|
|
Chunk.RENDER_DISTANCE += 1;
|
|
if(Chunk.RENDER_DISTANCE > 8) {
|
|
Chunk.RENDER_DISTANCE = 2;
|
|
}
|
|
button.setText("Render distance: "+Chunk.RENDER_DISTANCE);
|
|
Settings.update();
|
|
}));
|
|
|
|
group.add(new GUIButtonSetting("Shadows: " + render(DisplayRender.getShadowQuality()), button ->
|
|
{
|
|
SettingQuality quality = DisplayRender.getShadowQuality();
|
|
|
|
switch(quality)
|
|
{
|
|
case LOWEST:
|
|
quality = SettingQuality.LOW;
|
|
break;
|
|
case LOW:
|
|
quality = SettingQuality.MEDIUM;
|
|
break;
|
|
case MEDIUM:
|
|
quality = SettingQuality.HIGH;
|
|
break;
|
|
case HIGH:
|
|
quality = SettingQuality.EXTREME;
|
|
break;
|
|
case EXTREME:
|
|
quality = SettingQuality.LOWEST;
|
|
break;
|
|
}
|
|
|
|
quality = DisplayRender.setShadowQuality(quality);
|
|
|
|
DisplayRender.updateShadowQuality();
|
|
Settings.update();
|
|
|
|
button.setText("Shadows: " + render(quality));
|
|
}));
|
|
|
|
/*group.add(new ButtonSetting("Dynamic Lighting: " + (LightingManager.lightingMode == 0 ? "Fast" : "Fancy"),
|
|
button ->
|
|
{
|
|
if(LightingManager.lightingMode == 0) {
|
|
LightingManager.lightingMode = 1;
|
|
|
|
} else {
|
|
LightingManager.lightingMode = 0;
|
|
}
|
|
|
|
button.setText("Dynamic Lighting: " + (LightingManager.lightingMode == 0 ? "Fast" : "Fancy"));
|
|
}));*/
|
|
|
|
gui = new GUIBackToMenu(menuOld);
|
|
input = new InputGUI(gui);
|
|
|
|
gui.add(group);
|
|
|
|
GUILabel labelSettings = new GUILabel();
|
|
labelSettings.setText("Settings");
|
|
labelSettings.setSize(new Vec2d(1, 1));
|
|
labelSettings.setPos(new Vec2d(0, 6.8));
|
|
gui.add(labelSettings);
|
|
|
|
GUIButton buttonBack = new GUIButtonBasic("Back", new Vec2d(0, -8), button -> {
|
|
Main.menu = menuOld;
|
|
});
|
|
|
|
group.get(group.size() - 1).setNeighbour(buttonBack, GUISelectableDirection.DOWN);
|
|
buttonBack.setNeighbour(group.get(group.size() - 1), GUISelectableDirection.UP);
|
|
|
|
gui.add(buttonBack);
|
|
gui.setSelected(buttonBack);
|
|
}
|
|
|
|
@Override
|
|
public void render() {
|
|
gui.render();
|
|
}
|
|
|
|
@Override
|
|
public void update() {
|
|
super.update();
|
|
this.menuOld.update();
|
|
}
|
|
|
|
}
|