diff --git a/objects/o_dialog_file_name_collection/Create_0.gml b/objects/o_dialog_file_name_collection/Create_0.gml index 70a9b2e4b..e0d2f3018 100644 --- a/objects/o_dialog_file_name_collection/Create_0.gml +++ b/objects/o_dialog_file_name_collection/Create_0.gml @@ -12,7 +12,7 @@ event_inherited(); destroy_on_click_out = false; - meta = METADATA.clone(); + meta = PROJECT.meta.clone(); meta_expand = false; updating = noone; update_note = "Updated"; diff --git a/objects/o_dialog_file_name_collection/Draw_64.gml b/objects/o_dialog_file_name_collection/Draw_64.gml index 86b6d56ec..1bd99ee4b 100644 --- a/objects/o_dialog_file_name_collection/Draw_64.gml +++ b/objects/o_dialog_file_name_collection/Draw_64.gml @@ -8,9 +8,7 @@ #region draw TB draw_set_text(f_p0, fa_left, fa_center, COLORS._main_icon); draw_text_add(dialog_x + ui(16), dialog_y + ui(32), __txt("Name")); - - //var is_author = !meta.steam || meta.author_steam_id == 0 || meta.author_steam_id == STEAM_USER_ID; - + t_desc.interactable = !STEAM_UGC_ITEM_UPLOADING; t_auth.interactable = !STEAM_UGC_ITEM_UPLOADING; t_cont.interactable = !STEAM_UGC_ITEM_UPLOADING; diff --git a/objects/o_dialog_splash/Create_0.gml b/objects/o_dialog_splash/Create_0.gml index c94c53e9e..beecc7453 100644 --- a/objects/o_dialog_splash/Create_0.gml +++ b/objects/o_dialog_splash/Create_0.gml @@ -150,9 +150,11 @@ event_inherited(); if(mouse_press(mb_left, sFOCUS)) { LOAD_PATH(_project.path, true); PROJECT.thumbnail = _project.spr_path[0]; - METADATA.steam = txt == "Workshop"; - if(txt == "Workshop") - METADATA.file_id = _meta.file_id; + + if(txt == "Workshop") { + PROJECT.meta.file_id = _meta.file_id; + PROJECT.meta.steam = FILE_STEAM_TYPE.steamOpen; + } instance_destroy(); } } diff --git a/objects/o_main/Other_2.gml b/objects/o_main/Other_2.gml index f67289de1..b958e831d 100644 --- a/objects/o_main/Other_2.gml +++ b/objects/o_main/Other_2.gml @@ -44,7 +44,6 @@ directory_verify(DIRECTORY); //directory_set_current_working(DIRECTORY); - METADATA = __getdefaultMetaData(); APP_LOCATION = program_directory; if(string_pos("GameMakerStudio2\\Cache\\runtimes", APP_LOCATION)) APP_LOCATION = working_directory; diff --git a/objects/o_main/Step_1.gml b/objects/o_main/Step_1.gml index 3caa67030..4e392296b 100644 --- a/objects/o_main/Step_1.gml +++ b/objects/o_main/Step_1.gml @@ -109,6 +109,7 @@ _HOVERING_ELEMENT = noone; } } + if(LAST_FRAME) RENDERING = []; UPDATE = RENDER_TYPE.none; #endregion diff --git a/scripts/load_function/load_function.gml b/scripts/load_function/load_function.gml index 543ed5151..4c844645c 100644 --- a/scripts/load_function/load_function.gml +++ b/scripts/load_function/load_function.gml @@ -140,7 +140,7 @@ function __LOAD_PATH(path, readonly = false, override = false) { #region try { if(struct_has(_load_content, "metadata")) - METADATA.deserialize(_load_content.metadata); + PROJECT.meta.deserialize(_load_content.metadata); } catch(e) { log_warning("LOAD, metadata", exception_print(e)); } diff --git a/scripts/meta_data/meta_data.gml b/scripts/meta_data/meta_data.gml index 6659f659c..e28f3df2c 100644 --- a/scripts/meta_data/meta_data.gml +++ b/scripts/meta_data/meta_data.gml @@ -7,6 +7,12 @@ collection, assets } + + enum FILE_STEAM_TYPE { + local, + steamUpload, + steamOpen + } #endregion function MetaDataManager() constructor { @@ -20,7 +26,7 @@ function MetaDataManager() constructor { file_id = 0; tags = []; version = SAVE_VERSION; - steam = false; + steam = FILE_STEAM_TYPE.local; static displays = [ [ "Description", function(meta) { return meta.description; } , line_get_height() * 5], @@ -54,8 +60,6 @@ function MetaDataManager() constructor { tags = struct_try_get(m, "tags", tags); version = struct_try_get(m, "version", version); - //if(STEAM_ENABLED && author_steam_id == STEAM_USER_ID) steam = true; - return self; } @@ -225,9 +229,6 @@ function MetaDataManager() constructor { } #region - globalvar METADATA; - METADATA = noone; - function __getdefaultMetaData() { var meta = new MetaDataManager(); var path = DIRECTORY + "meta.json"; diff --git a/scripts/node_export/node_export.gml b/scripts/node_export/node_export.gml index 1d4715e6f..161015dff 100644 --- a/scripts/node_export/node_export.gml +++ b/scripts/node_export/node_export.gml @@ -309,7 +309,6 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor cmd += "-bgcolor 0,0,0,0 "; cmd += "-o " + string_quote(target_path); - array_remove(RENDERING, node_id); render_process_id = shell_execute_async(webp, cmd, self); render_type = "webp"; render_target = target_path; @@ -330,8 +329,6 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor var loop_str = loop? 0 : 1; var use_gifski = false; - array_remove(RENDERING, node_id); - if(use_gifski) { var shell_cmd = $"-o {string_quote(target_path)} -r {rate} --repeat {loop_str} -Q {qual} {string_quote(temp_path)}"; @@ -364,7 +361,6 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor var shell_cmd = $"-hide_banner -loglevel quiet -framerate {rate} -i \"{temp_path}%05d.png\" -c:v libx264 -r {rate} -pix_fmt yuv420p {string_quote(target_path)}"; print($"{ffmpeg} {shell_cmd}") - array_remove(RENDERING, node_id); render_process_id = shell_execute_async(ffmpeg, shell_cmd, self); render_type = "mp4"; render_target = target_path; @@ -675,9 +671,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor var form = getInputData(3); if(form == NODE_EXPORT_FORMAT.single) { - array_push(RENDERING, node_id); Render(); - array_remove(RENDERING, node_id); export(); updatedOutTrigger.setValue(true); @@ -748,11 +742,6 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor noti.setOnClick(function() { shellOpenExplorer(self.path); }, "Open in explorer", THEME.explorer); PANEL_MENU.setNotiIcon(THEME.noti_icon_tick); render_process_id = 0; - - array_remove(RENDERING, node_id); - } else { - //var stdOut = ExecutedProcessReadFromStandardOutput(render_process_id); - //print(stdOut); } } } #endregion @@ -774,9 +763,7 @@ function Node_Export(_x, _y, _group = noone) : Node(_x, _y, _group) constructor export(); if(LAST_FRAME) { - if(anim == NODE_EXPORT_FORMAT.sequence) - array_remove(RENDERING, node_id); - else if(anim == NODE_EXPORT_FORMAT.animation) + if(anim == NODE_EXPORT_FORMAT.animation) renderCompleted(); } } #endregion diff --git a/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml b/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml index 0d2637a82..6f9e283e3 100644 --- a/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml +++ b/scripts/node_render_sprite_sheet/node_render_sprite_sheet.gml @@ -70,10 +70,6 @@ function Node_Render_Sprite_Sheet(_x, _y, _group = noone) : Node(_x, _y, _group) update_on_frame = grup == 0; } #endregion - static postProcess = function(frame = CURRENT_FRAME) { - if(LAST_FRAME) array_remove(RENDERING, node_id); - } - static update = function(frame = CURRENT_FRAME) { #region var inpt = getInputData(0); var grup = getInputData(1); diff --git a/scripts/panel_collection/panel_collection.gml b/scripts/panel_collection/panel_collection.gml index d5a8990d2..2098bf2cb 100644 --- a/scripts/panel_collection/panel_collection.gml +++ b/scripts/panel_collection/panel_collection.gml @@ -82,7 +82,7 @@ function Panel_Collection() : PanelContent() constructor { } if(STEAM_ENABLED) { - if(!meta.steam) { + if(meta.steam == FILE_STEAM_TYPE.local) { array_push(contentMenu, menuItem(__txtx("panel_collection_workshop_upload", "Upload to Steam Workshop") + "...", function() { var dia = dialogCall(o_dialog_file_name_collection, mouse_mx + ui(8), mouse_my + ui(-320)); var meta = _menu_node.getMetadata(); diff --git a/scripts/panel_inspector/panel_inspector.gml b/scripts/panel_inspector/panel_inspector.gml index 5a7d9874f..9f309af7e 100644 --- a/scripts/panel_inspector/panel_inspector.gml +++ b/scripts/panel_inspector/panel_inspector.gml @@ -206,7 +206,7 @@ function Panel_Inspector() : PanelContent() constructor { var _hover = pHOVER && contentPane.hover; var context = PANEL_GRAPH.getCurrentContext(); - var meta = context == noone? METADATA : context.metadata; + var meta = context == noone? PROJECT.meta : context.metadata; if(meta == noone) return 0; current_meta = meta; @@ -815,12 +815,17 @@ function Panel_Inspector() : PanelContent() constructor { draw_set_text(f_h5, fa_center, fa_center, COLORS._main_text); draw_text_add(w / 2, ui(30), txt); + if(PROJECT.meta.steam == FILE_STEAM_TYPE.steamOpen) { + var _tw = string_width(txt) / 2; + draw_sprite_ui(THEME.steam, 0, w / 2 - _tw - ui(16), ui(32),,,, COLORS._main_icon); + } + var bx = w - ui(44); var by = ui(12); if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, __txtx("panel_inspector_set_default", "Set Metadata as default"), THEME.save, 0, COLORS._main_icon) == 2) { var path = DIRECTORY + "meta.json"; - json_save_struct(path, METADATA.serialize()); + json_save_struct(path, PROJECT.meta.serialize()); } by += ui(36); @@ -828,12 +833,12 @@ function Panel_Inspector() : PanelContent() constructor { if(PROJECT.path == "") { buttonInstant(noone, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, __txtx("panel_inspector_workshop_save", "Save file before upload"), THEME.workshop_upload, 0, COLORS._main_icon, 0.5); } else { - if(!METADATA.steam) { //project made locally + if(PROJECT.meta.steam == FILE_STEAM_TYPE.local) { //project made locally if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, __txtx("panel_inspector_workshop_upload", "Upload to Steam Workshop"), THEME.workshop_upload, 0, COLORS._main_icon) == 2) { var s = PANEL_PREVIEW.getNodePreviewSurface(); if(is_surface(s)) { - METADATA.author_steam_id = STEAM_USER_ID; - METADATA.steam = true; + PROJECT.meta.author_steam_id = STEAM_USER_ID; + PROJECT.meta.steam = FILE_STEAM_TYPE.steamUpload; SAVE_AT(PROJECT, PROJECT.path); steam_ugc_create_project(); @@ -843,8 +848,8 @@ function Panel_Inspector() : PanelContent() constructor { } } - if(METADATA.steam && METADATA.author_steam_id == STEAM_USER_ID) { - if(METADATA.file_id == 0) { + if(PROJECT.meta.steam && PROJECT.meta.author_steam_id == STEAM_USER_ID) { + if(PROJECT.meta.steam == FILE_STEAM_TYPE.steamUpload) { buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], false, pHOVER, __txtx("panel_inspector_workshop_restart", "Open project from the workshop tab to update."), THEME.workshop_update, 0, COLORS._main_icon); } else if(buttonInstant(THEME.button_hide, bx, by, ui(32), ui(32), [mx, my], pFOCUS, pHOVER, __txtx("panel_inspector_workshop_update", "Update Steam Workshop content"), THEME.workshop_update, 0, COLORS._main_icon) == 2) { SAVE_AT(PROJECT, PROJECT.path); diff --git a/scripts/project_data/project_data.gml b/scripts/project_data/project_data.gml index 1fd038a12..a761640c1 100644 --- a/scripts/project_data/project_data.gml +++ b/scripts/project_data/project_data.gml @@ -6,6 +6,7 @@ function Project() constructor { active = true; /// @is {bool} + meta = __getdefaultMetaData(); path = ""; /// @is {string} thumbnail = ""; version = SAVE_VERSION; /// @is {number} diff --git a/scripts/save_function/save_function.gml b/scripts/save_function/save_function.gml index 1f30f9ebc..3691a545b 100644 --- a/scripts/save_function/save_function.gml +++ b/scripts/save_function/save_function.gml @@ -32,7 +32,7 @@ function save_serialize(project = PROJECT, _outMap = false) { #region _anim_map.framerate = project.animator.framerate; _map.animator = _anim_map; - _map.metadata = METADATA.serialize(); + _map.metadata = PROJECT.meta.serialize(); _map.global_node = project.globalNode.serialize(); _map.onion_skin = project.onion_skin; @@ -110,8 +110,8 @@ function SAVE_AT(project = PROJECT, path = "", log = "save at ") { #region if(DEMO) return false; SAVING = true; - if(TESTING && string_char_at(filename_name(path), 1) != "[") - path = $"{filename_dir(path)}/[{VERSION_STRING}] {filename_name(path)}"; + //if(TESTING && string_char_at(filename_name(path), 1) != "[") + // path = $"{filename_dir(path)}/[{VERSION_STRING}] {filename_name(path)}"; if(file_exists(path)) file_delete(path); file_text_write_all(path, save_serialize(project)); diff --git a/scripts/steam_ugc_functions/steam_ugc_functions.gml b/scripts/steam_ugc_functions/steam_ugc_functions.gml index 0794e2922..d677823b0 100644 --- a/scripts/steam_ugc_functions/steam_ugc_functions.gml +++ b/scripts/steam_ugc_functions/steam_ugc_functions.gml @@ -73,7 +73,7 @@ function __loadSteamUGCCollection(file_id, f, path) { ds_list_add(STEAM_COLLECTION, file); var meta = file.getMetadata(); - meta.steam = true; + meta.steam = FILE_STEAM_TYPE.steamOpen; meta.file_id = file_id; } @@ -86,6 +86,6 @@ function __loadSteamUGCProject(file_id, f, path) { ds_list_add(STEAM_PROJECTS, file); var meta = file.getMetadata(); - meta.steam = true; + meta.steam = FILE_STEAM_TYPE.steamOpen; meta.file_id = file_id; } diff --git a/scripts/steam_ugc_project/steam_ugc_project.gml b/scripts/steam_ugc_project/steam_ugc_project.gml index dfe6768d7..255163bae 100644 --- a/scripts/steam_ugc_project/steam_ugc_project.gml +++ b/scripts/steam_ugc_project/steam_ugc_project.gml @@ -2,7 +2,7 @@ function steam_ugc_create_project() { #region if(STEAM_UGC_ITEM_UPLOADING) return; var file = new FileObject(string_replace(filename_name(PROJECT.path), filename_ext(PROJECT.path), ""), PROJECT.path); - file.meta = METADATA; + file.meta = PROJECT.meta; file.spr_path[0] = DIRECTORY + "steamUGC/thumbnail.png"; STEAM_UGC_UPDATE = false; @@ -10,7 +10,9 @@ function steam_ugc_create_project() { #region STEAM_UGC_ITEM_FILE = file; STEAM_UGC_TYPE = STEAM_UGC_FILE_TYPE.project; - directory_verify(DIRECTORY + "steamUGC"); + directory_destroy(DIRECTORY + "steamUGC"); + directory_create(DIRECTORY + "steamUGC"); + file_copy(file.path, DIRECTORY + "steamUGC/" + filename_name(file.path)); var preview_surface = PANEL_PREVIEW.getNodePreviewSurface(); @@ -23,15 +25,17 @@ function steam_ugc_create_project() { #region function steam_ugc_update_project(update_preview = false, update_note = "Updated") { #region if(STEAM_UGC_ITEM_UPLOADING) return; - var file = new FileObject(string_replace(filename_name(PROJECT.path), filename_ext(PROJECT.path), ""), PROJECT.path); - file.meta = METADATA; + var file = new FileObject(filename_name_only(PROJECT.path), PROJECT.path); + file.meta = PROJECT.meta; STEAM_UGC_UPDATE = true; STEAM_UGC_ITEM_UPLOADING = true; STEAM_UGC_ITEM_FILE = file; STEAM_UGC_TYPE = STEAM_UGC_FILE_TYPE.project; - directory_verify(DIRECTORY + "steamUGC"); + directory_destroy(DIRECTORY + "steamUGC"); + directory_create(DIRECTORY + "steamUGC"); + file_copy(file.path, DIRECTORY + "steamUGC/" + filename_name(file.path)); if(file_exists(PROJECT.thumbnail)) file_copy(PROJECT.thumbnail, DIRECTORY + "steamUGC/thumbnail.png"); @@ -39,7 +43,7 @@ function steam_ugc_update_project(update_preview = false, update_note = "Updated STEAM_UGC_PUBLISH_ID = file.meta.file_id; STEAM_UGC_UPDATE_HANDLE = steam_ugc_start_item_update(STEAM_APP_ID, STEAM_UGC_PUBLISH_ID); - steam_ugc_set_item_title(STEAM_UGC_UPDATE_HANDLE, STEAM_UGC_ITEM_FILE.meta.name); + steam_ugc_set_item_title(STEAM_UGC_UPDATE_HANDLE, STEAM_UGC_ITEM_FILE.name); steam_ugc_set_item_description(STEAM_UGC_UPDATE_HANDLE, STEAM_UGC_ITEM_FILE.meta.description); var tgs = STEAM_UGC_ITEM_FILE.meta.tags; @@ -47,7 +51,7 @@ function steam_ugc_update_project(update_preview = false, update_note = "Updated array_insert_unique(tgs, 0, "Project"); array_push_unique(tgs, VERSION_STRING); - steam_ugc_collection_generate(PROJECT.thumbnail); + steam_ugc_project_generate(PROJECT.thumbnail); steam_ugc_set_item_tags(STEAM_UGC_UPDATE_HANDLE, tgs); steam_ugc_set_item_content(STEAM_UGC_UPDATE_HANDLE, DIRECTORY + "steamUGC"); diff --git a/scripts/testing_script/testing_script.gml b/scripts/testing_script/testing_script.gml index d95f1f202..0c4fe2044 100644 --- a/scripts/testing_script/testing_script.gml +++ b/scripts/testing_script/testing_script.gml @@ -165,7 +165,7 @@ function __test_metadata_current_collections() { #region print("---------- COLLECTION UPDATING STARTED ----------"); var sel = PANEL_GRAPH.getFocusingNode(), outj = noone; - var _meta = METADATA.serialize(); + var _meta = PROJECT.meta.serialize(); if(sel != noone) outj = sel.outputs[| 0]; while(!ds_stack_empty(st)) {