ProjectZombie/src/projectzombie/menu/MenuSettings.java

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();
}
}