Pixel-Composer/objects/o_main/Other_2.gml
2023-04-21 19:08:10 +02:00

120 lines
3.1 KiB
Plaintext

/// @description main directory, parameter
//print("===== Game Start Begin =====");
#region directory
globalvar DIRECTORY, APP_DIRECTORY, PRESIST_PREF;
DIRECTORY = "";
PRESIST_PREF = {};
if(OS == os_windows) {
APP_DIRECTORY = environment_get_variable("userprofile") + "\\AppData\\Local\\PixelComposer\\";
} else if(OS == os_macosx) {
var home_dir = environment_get_variable("HOME");
if(string(home_dir) == "0")
log_message("DIRECTORY", "Directory not found.");
else
APP_DIRECTORY = string(home_dir) + "/PixelComposer/";
}
show_debug_message("App directory: " + string(APP_DIRECTORY));
if(!directory_exists(APP_DIRECTORY)) directory_create(APP_DIRECTORY);
var perstPath = APP_DIRECTORY + "persistPreference.json";
if(file_exists(perstPath)) {
PRESIST_PREF = json_load_struct(perstPath);
DIRECTORY = struct_has(PRESIST_PREF, "path")? PRESIST_PREF.path : "";
}
show_debug_message("Env directory: " + string(DIRECTORY));
var dir_valid = DIRECTORY != "" && directory_exists(DIRECTORY);
var tmp = file_text_open_write(DIRECTORY + "val_check.txt");
if(tmp == -1) {
dir_valid = false;
print("WARNING: Inaccessible directory [" + DIRECTORY + "] this may be caused by non existing folder, or Pixel Composer has no permission to open the folder.");
} else {
file_text_close(tmp);
file_delete(DIRECTORY + "val_check.txt");
}
if(!dir_valid) DIRECTORY = APP_DIRECTORY;
PRESIST_PREF.path = DIRECTORY;
json_save_struct(perstPath, PRESIST_PREF);
if(!directory_exists(DIRECTORY))
directory_create(DIRECTORY);
if(!directory_exists(DIRECTORY + "temp"))
directory_create(DIRECTORY + "temp");
METADATA = __getdefaultMetaData();
#endregion
#region Set up
PREF_LOAD();
log_clear();
log_newline();
log_message("SESSION", "Begin");
log_message("DIRECTORY", DIRECTORY);
window_set_showborder(false);
__initSurfaceFormat();
__initLocale();
__initTheme();
__initCollection();
__initAssets();
__initPresets();
__initFontFolder();
__initLua();
__initNodeData();
__initNodes();
__initSteamUGC();
PREF_APPLY();
loadFonts();
loadGraphic(PREF_MAP[? "theme"]);
loadColor(PREF_MAP[? "theme"]);
setPanel();
if(file_exists("icon.png"))
file_copy("icon.png", DIRECTORY + "icon.png");
environment_set_variable("IMGUI_DIALOG_WIDTH", string(800));
var cmd = ".pxc=\"" + string(program_directory) + "PixelComposer.exe\"";
execute_shell("assoc", cmd);
var cmd = ".pxcc=\"" + string(program_directory) + "PixelComposer.exe\"";
execute_shell("assoc", cmd);
#endregion
#region parameter
alarm[1] = 2;
if(parameter_count() > 1) {
var path = parameter_string(1);
if(path == "--crashed") {
if(PREF_MAP[? "show_crash_dialog"])
dialogCall(o_dialog_crashed);
} else {
path = string_replace_all(path, "\n", "");
path = string_replace_all(path, "\"", "");
if(file_exists(path) && filename_ext(path) == ".pxc") {
file_open_parameter = path;
alarm[2] = 3;
directory_set_current_working(DIRECTORY);
}
}
}
#endregion
#region lua
lua_error_handler = _lua_error;
#endregion
//print("===== Game Start End =====");