ProjectZombie/src/projectzombie/settings/Settings.java

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