package armory.data; class Config { public static var raw: TConfig = null; public static var configLoaded = false; public static function load(done: Void->Void) { try { iron.data.Data.getBlob("config.arm", function(blob: kha.Blob) { configLoaded = true; raw = haxe.Json.parse(blob.toString()); done(); }); } catch (e: Dynamic) { done(); } } public static function save() { var path = iron.data.Data.dataPath + "config.arm"; var bytes = haxe.io.Bytes.ofString(haxe.Json.stringify(raw)); #if kha_krom Krom.fileSaveBytes(path, bytes.getData()); #elseif kha_kore sys.io.File.saveBytes(path, bytes); #end } // public static function reset() {} } typedef TConfig = { @:optional var debug_console: Null; @:optional var window_mode: Null; // window, fullscreen @:optional var window_w: Null; @:optional var window_h: Null; @:optional var window_resizable: Null; @:optional var window_maximizable: Null; @:optional var window_minimizable: Null; @:optional var window_vsync: Null; @:optional var window_msaa: Null; @:optional var window_scale: Null; @:optional var rp_supersample: Null; @:optional var rp_shadowmap_cube: Null; // size @:optional var rp_shadowmap_cascade: Null; // size for single cascade @:optional var rp_ssgi: Null; @:optional var rp_ssr: Null; @:optional var rp_bloom: Null; @:optional var rp_motionblur: Null; @:optional var rp_gi: Null; // voxelao @:optional var rp_dynres: Null; // dynamic resolution scaling }