127 lines
3.0 KiB
Java
Executable File
127 lines
3.0 KiB
Java
Executable File
package projectzombie.settings;
|
|
|
|
import bdf.classes.BdfClassManager;
|
|
import bdf.classes.IBdfClassManager;
|
|
import bdf.file.BdfFileManager;
|
|
import bdf.types.BdfNamedList;
|
|
import bdf.types.BdfObject;
|
|
import bdf.types.BdfTypes;
|
|
import projectzombie.Main;
|
|
import projectzombie.display.DisplayRender;
|
|
import projectzombie.display.DisplayRenderUI;
|
|
import projectzombie.display.DisplayWindow;
|
|
import projectzombie.entity.EntityParticle;
|
|
import projectzombie.world.chunk.Chunk;
|
|
|
|
public class Settings implements IBdfClassManager
|
|
{
|
|
public static final BdfClassManager SETTINGS = new BdfClassManager(new Settings());
|
|
private static BdfFileManager FILE_MANAGER;
|
|
|
|
@Override
|
|
public void BdfClassLoad(BdfObject bdf) {
|
|
BdfNamedList nl = bdf.getNamedList();
|
|
|
|
if(nl.get("render_distance").getType() == BdfTypes.INTEGER) {
|
|
Chunk.RENDER_DISTANCE = nl.get("render_distance").getInteger();
|
|
} else {
|
|
Chunk.RENDER_DISTANCE = 2;
|
|
}
|
|
|
|
if(nl.get("show_fps").getType() == BdfTypes.BOOLEAN) {
|
|
DisplayRenderUI.showFPS = nl.get("show_fps").getBoolean();
|
|
} else {
|
|
DisplayRenderUI.showFPS = false;
|
|
}
|
|
|
|
if(nl.get("debug").getType() == BdfTypes.BOOLEAN) {
|
|
DisplayRenderUI.debug = nl.get("debug").getBoolean();
|
|
} else {
|
|
DisplayRenderUI.debug = false;
|
|
}
|
|
|
|
if(nl.get("fullscreen").getType() == BdfTypes.BOOLEAN) {
|
|
DisplayWindow.fullscreen = nl.get("fullscreen").getBoolean();
|
|
}
|
|
|
|
if(nl.get("shadow_size").getType() == BdfTypes.INTEGER)
|
|
{
|
|
SettingQuality quality = DisplayRender.getShadowQuality();
|
|
|
|
switch(nl.get("shadow_size").getInteger())
|
|
{
|
|
case 0:
|
|
quality = SettingQuality.LOWEST;
|
|
break;
|
|
case 1:
|
|
quality = SettingQuality.LOW;
|
|
break;
|
|
case 2:
|
|
quality = SettingQuality.MEDIUM;
|
|
break;
|
|
case 3:
|
|
quality = SettingQuality.HIGH;
|
|
break;
|
|
case 4:
|
|
quality = SettingQuality.EXTREME;
|
|
break;
|
|
default:
|
|
quality = SettingQuality.LOW;
|
|
break;
|
|
}
|
|
|
|
DisplayRender.setShadowQuality(quality);
|
|
}
|
|
|
|
else {
|
|
DisplayRender.setShadowQuality(SettingQuality.LOW);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void BdfClassSave(BdfObject bdf)
|
|
{
|
|
int shadow_size;
|
|
|
|
switch(DisplayRender.getShadowQuality())
|
|
{
|
|
case LOWEST:
|
|
shadow_size = 0;
|
|
break;
|
|
case LOW:
|
|
shadow_size = 1;
|
|
break;
|
|
case MEDIUM:
|
|
shadow_size = 2;
|
|
break;
|
|
case HIGH:
|
|
shadow_size = 3;
|
|
break;
|
|
case EXTREME:
|
|
shadow_size = 4;
|
|
break;
|
|
default:
|
|
shadow_size = 1;
|
|
break;
|
|
}
|
|
|
|
BdfNamedList nl = bdf.getNamedList();
|
|
nl.set("render_distance", BdfObject.withInteger(Chunk.RENDER_DISTANCE));
|
|
nl.set("show_fps", BdfObject.withBoolean(DisplayRenderUI.showFPS));
|
|
nl.set("debug", BdfObject.withBoolean(DisplayRenderUI.debug));
|
|
nl.set("shadow_size", BdfObject.withInteger(shadow_size));
|
|
nl.set("fullscreen", BdfObject.withBoolean(Main.window.fullscreen));
|
|
}
|
|
|
|
public static void init() {
|
|
FILE_MANAGER = new BdfFileManager(Environment.gdir + "/settings.bdf", true);
|
|
SETTINGS.load(FILE_MANAGER);
|
|
}
|
|
|
|
public static void update() {
|
|
SETTINGS.save(FILE_MANAGER);
|
|
FILE_MANAGER.saveDatabase();
|
|
}
|
|
|
|
}
|