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