armory/Sources/armory/data/Config.hx

53 lines
1.5 KiB
Haxe

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<Bool>;
@:optional var window_mode:Null<Int>; // window, fullscreen
@:optional var window_w:Null<Int>;
@:optional var window_h:Null<Int>;
@:optional var window_resizable:Null<Bool>;
@:optional var window_maximizable:Null<Bool>;
@:optional var window_minimizable:Null<Bool>;
@:optional var window_vsync:Null<Bool>;
@:optional var window_msaa:Null<Int>;
@:optional var window_scale:Null<Float>;
@:optional var rp_supersample:Null<Float>;
@:optional var rp_shadowmap_cube:Null<Int>; // size
@:optional var rp_shadowmap_cascade:Null<Int>; // size for single cascade
@:optional var rp_ssgi:Null<Bool>;
@:optional var rp_ssr:Null<Bool>;
@:optional var rp_bloom:Null<Bool>;
@:optional var rp_motionblur:Null<Bool>;
@:optional var rp_gi:Null<Bool>; // voxelao
@:optional var rp_dynres:Null<Bool>; // dynamic resolution scaling
}