From 9486af9177cf8fe2aa211709f93b2fdb2d002948 Mon Sep 17 00:00:00 2001 From: Lucas Schwiderski Date: Tue, 21 Feb 2023 10:29:02 +0100 Subject: [PATCH] refactor: Replace I/O-based requires With the switch back to bundle-based mod distribution, we can now use the built-in `require`/`dofile`. --- scripts/mods/dmf/dmf_loader.lua | 60 +++++++++---------- scripts/mods/dmf/modules/core/io.lua | 56 +---------------- .../mods/dmf/modules/core/localization.lua | 2 +- .../core/mutators/mutators_manager.lua | 8 +-- scripts/mods/dmf/modules/core/require.lua | 4 +- scripts/mods/dmf/modules/core/safe_calls.lua | 10 ---- scripts/mods/dmf/modules/dmf_mod_manager.lua | 2 +- .../mods/dmf/modules/ui/chat/chat_actions.lua | 4 +- .../modules/ui/options/dmf_options_view.lua | 6 +- .../dmf_options_view_content_blueprints.lua | 2 +- .../options/dmf_options_view_definitions.lua | 2 +- .../dmf/modules/ui/options/mod_options.lua | 2 +- 12 files changed, 45 insertions(+), 113 deletions(-) diff --git a/scripts/mods/dmf/dmf_loader.lua b/scripts/mods/dmf/dmf_loader.lua index c7faaf6..81d26c8 100644 --- a/scripts/mods/dmf/dmf_loader.lua +++ b/scripts/mods/dmf/dmf_loader.lua @@ -3,9 +3,6 @@ local dmf -- Native mod object used by Fatshark mod manager local dmf_mod_object = {} --- Global method to load a file through iowith a return -local io_dofile = Mods.file.dofile - -- Global backup of original print() method local print = __print @@ -14,38 +11,37 @@ local print = __print -- ##################################################################################################################### function dmf_mod_object:init() - io_dofile("dmf/scripts/mods/dmf/modules/dmf_mod_data") - io_dofile("dmf/scripts/mods/dmf/modules/dmf_mod_manager") - --io_dofile("dmf/scripts/mods/dmf/modules/dmf_dummy") - io_dofile("dmf/scripts/mods/dmf/modules/dmf_package_manager") - io_dofile("dmf/scripts/mods/dmf/modules/core/safe_calls") - io_dofile("dmf/scripts/mods/dmf/modules/core/events") - io_dofile("dmf/scripts/mods/dmf/modules/core/settings") - io_dofile("dmf/scripts/mods/dmf/modules/core/logging") - io_dofile("dmf/scripts/mods/dmf/modules/core/misc") - io_dofile("dmf/scripts/mods/dmf/modules/core/persistent_tables") - io_dofile("dmf/scripts/mods/dmf/modules/core/io") + dofile("dmf/scripts/mods/dmf/modules/dmf_mod_data") + dofile("dmf/scripts/mods/dmf/modules/dmf_mod_manager") + -- dofile("dmf/scripts/mods/dmf/modules/dmf_dummy") + dofile("dmf/scripts/mods/dmf/modules/dmf_package_manager") + dofile("dmf/scripts/mods/dmf/modules/core/safe_calls") + dofile("dmf/scripts/mods/dmf/modules/core/events") + dofile("dmf/scripts/mods/dmf/modules/core/settings") + dofile("dmf/scripts/mods/dmf/modules/core/logging") + dofile("dmf/scripts/mods/dmf/modules/core/misc") + dofile("dmf/scripts/mods/dmf/modules/core/persistent_tables") + dofile("dmf/scripts/mods/dmf/modules/core/io") - -- DMF's internal io module is now loaded: dmf = get_mod("DMF") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/debug/dev_console") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/debug/table_dump") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/hooks") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/require") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/toggling") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/keybindings") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/chat") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/localization") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/options") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/network") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/commands") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/gui/custom_textures") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/gui/custom_views") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/chat/chat_actions") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/mod_options") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/dmf_options") - dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_manager") + dmf:dofile("dmf/scripts/mods/dmf/modules/debug/dev_console") + dmf:dofile("dmf/scripts/mods/dmf/modules/debug/table_dump") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/hooks") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/require") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/toggling") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/keybindings") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/chat") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/localization") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/options") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/network") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/commands") + dmf:dofile("dmf/scripts/mods/dmf/modules/gui/custom_textures") + dmf:dofile("dmf/scripts/mods/dmf/modules/gui/custom_views") + dmf:dofile("dmf/scripts/mods/dmf/modules/ui/chat/chat_actions") + dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/mod_options") + dmf:dofile("dmf/scripts/mods/dmf/modules/dmf_options") + dmf:dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_manager") dmf.delayed_chat_messages_hook() dmf:hook(ModManager, "destroy", function(func, ...) diff --git a/scripts/mods/dmf/modules/core/io.lua b/scripts/mods/dmf/modules/core/io.lua index 13a5880..b9308ab 100644 --- a/scripts/mods/dmf/modules/core/io.lua +++ b/scripts/mods/dmf/modules/core/io.lua @@ -119,64 +119,10 @@ local function handle_io(mod, local_path, file_name, file_extension, args, safe_ end end - --- Return whether the file exists at the given path -local function file_exists(local_path, file_name, file_extension) - local file_path = get_file_path(local_path, file_name, file_extension) - local f = _io.open(file_path,"r") - - if f ~= nil then - _io.close(f) - return true - else - return false - end -end - -- ##################################################################################################################### -- ##### DMFMod ######################################################################################################## -- ##################################################################################################################### --- Use the io library to execute the given file with a pcall, without return -function DMFMod:io_exec(local_path, file_name, file_extension, args) - return handle_io(self, local_path, file_name, file_extension, args, true, "exec_boolean") -end - - --- Use the io library to execute the given file without a pcall, without return -function DMFMod:io_exec_unsafe(local_path, file_name, file_extension, args) - return handle_io(self, local_path, file_name, file_extension, args, false, "exec_boolean") -end - - --- Use the io library to execute the given file with a pcall and return the result -function DMFMod:io_exec_with_return(local_path, file_name, file_extension, args) - return handle_io(self, local_path, file_name, file_extension, args, true, "exec_result") -end - - --- Use the io library to execute the given file without a pcall and return the result -function DMFMod:io_exec_unsafe_with_return(local_path, file_name, file_extension, args) - return handle_io(self, local_path, file_name, file_extension, args, false, "exec_result") -end - - --- Use the io library to execute the given file with a pcall and return the result, --- but treat the first parameter as the entire path to the file, and assume .lua. --- IO version of the dofile method with a pcall. -function DMFMod:io_dofile(file_path) - return handle_io(self, file_path, nil, nil, nil, true, "exec_result") -end - - --- Use the io library to execute the given file without a pcall and return the result, --- but treat the first parameter as the entire path to the file, and assume .lua. --- IO version of the dofile method. -function DMFMod:io_dofile_unsafe(file_path) - return handle_io(self, file_path, nil, nil, nil, false, "exec_result") -end - - -- Use the io library to return the contents of the given file function DMFMod:io_read_content(file_path, file_extension) return handle_io(self, file_path, nil, file_extension, nil, true, "data") @@ -199,4 +145,4 @@ end -- ##################################################################################################################### -- ##### Script ######################################################################################################## --- ##################################################################################################################### \ No newline at end of file +-- ##################################################################################################################### diff --git a/scripts/mods/dmf/modules/core/localization.lua b/scripts/mods/dmf/modules/core/localization.lua index 00b8a46..bc149f1 100644 --- a/scripts/mods/dmf/modules/core/localization.lua +++ b/scripts/mods/dmf/modules/core/localization.lua @@ -138,5 +138,5 @@ end -- ##### Script ####################################################################################################### -- #################################################################################################################### -local localization_table = dmf:io_dofile("dmf/localization/dmf") +local localization_table = dmf:dofile("dmf/localization/dmf") dmf.initialize_mod_localization(dmf, localization_table) diff --git a/scripts/mods/dmf/modules/core/mutators/mutators_manager.lua b/scripts/mods/dmf/modules/core/mutators/mutators_manager.lua index f728962..a5f08f2 100644 --- a/scripts/mods/dmf/modules/core/mutators/mutators_manager.lua +++ b/scripts/mods/dmf/modules/core/mutators/mutators_manager.lua @@ -27,11 +27,11 @@ local _mutators_sorted = false local _all_mutators_disabled = false -- External modules -local reward_manager = dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_reward") -local set_lobby_data = dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_info") +local reward_manager = dmf:dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_reward") +local set_lobby_data = dmf:dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_info") -- Get default configuration -local _default_config = dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_default_config") +local _default_config = dmf:dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_default_config") -- List of enabled mutators in case DMF is reloaded in the middle of the game local _enabled_mutators = dmf:persistent_table("enabled_mutators") @@ -505,4 +505,4 @@ end -- ##################################################################################################################### -- Testing ---dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/mutators/test/mutators_test") +--dmf:dofile("dmf/scripts/mods/dmf/modules/core/mutators/test/mutators_test") diff --git a/scripts/mods/dmf/modules/core/require.lua b/scripts/mods/dmf/modules/core/require.lua index 2a5e08e..aed69b8 100644 --- a/scripts/mods/dmf/modules/core/require.lua +++ b/scripts/mods/dmf/modules/core/require.lua @@ -65,7 +65,7 @@ end -- Handles the swap to io for registered files and the application of file hooks dmf:hook(_G, "require", function (func, path, ...) if _io_requires[path] then - return dmf:io_dofile(path) + return dmf:dofile(path) else local result = func(path, ...) @@ -85,4 +85,4 @@ end) -- ##################################################################################################################### -- ##### Script ######################################################################################################## --- ##################################################################################################################### \ No newline at end of file +-- ##################################################################################################################### diff --git a/scripts/mods/dmf/modules/core/safe_calls.lua b/scripts/mods/dmf/modules/core/safe_calls.lua index 866aaeb..377f61d 100644 --- a/scripts/mods/dmf/modules/core/safe_calls.lua +++ b/scripts/mods/dmf/modules/core/safe_calls.lua @@ -91,16 +91,6 @@ function dmf.safe_call_dofile(mod, error_prefix_data, file_path) end --- Safe Call [io_dofile] -function dmf.safe_call_io_dofile(mod, error_prefix_data, file_path) - if type(file_path) ~= "string" then - show_error(mod, error_prefix_data, "file path should be a string.") - return false - end - return dmf.safe_call(mod, error_prefix_data, mod.io_dofile_unsafe, mod, file_path) -end - - -- Format error message and throw error. function dmf.throw_error(error_message, ...) error(string.format(error_message, ...), 0) diff --git a/scripts/mods/dmf/modules/dmf_mod_manager.lua b/scripts/mods/dmf/modules/dmf_mod_manager.lua index fe70f0b..66b520e 100644 --- a/scripts/mods/dmf/modules/dmf_mod_manager.lua +++ b/scripts/mods/dmf/modules/dmf_mod_manager.lua @@ -50,7 +50,7 @@ local function resolve_resource(mod, error_prefix_data, resource, resource_value local type_value = type(resource_value) if type_value == "string" then - return dmf.safe_call_io_dofile(mod, error_prefix_data, resource_value) + return dmf.safe_call_dofile(mod, error_prefix_data, resource_value) elseif type_value == "function" then return dmf.safe_call(mod, error_prefix_data, resource_value, mod) elseif type_value == "table" then diff --git a/scripts/mods/dmf/modules/ui/chat/chat_actions.lua b/scripts/mods/dmf/modules/ui/chat/chat_actions.lua index 1778c19..32a859c 100644 --- a/scripts/mods/dmf/modules/ui/chat/chat_actions.lua +++ b/scripts/mods/dmf/modules/ui/chat/chat_actions.lua @@ -33,7 +33,7 @@ local _queued_command local function initialize_drawing_function() if not _commands_list_gui_draw then - local commands_list_gui = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/chat/commands_list_gui") + local commands_list_gui = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/chat/commands_list_gui") _commands_list_gui_draw = commands_list_gui.draw _commands_list_gui_destroy = commands_list_gui.destroy end @@ -310,4 +310,4 @@ if _chat_history_save then _chat_history = dmf:get("chat_history") or _chat_history end -initialize_drawing_function() \ No newline at end of file +initialize_drawing_function() diff --git a/scripts/mods/dmf/modules/ui/options/dmf_options_view.lua b/scripts/mods/dmf/modules/ui/options/dmf_options_view.lua index dec9be4..47470c0 100644 --- a/scripts/mods/dmf/modules/ui/options/dmf_options_view.lua +++ b/scripts/mods/dmf/modules/ui/options/dmf_options_view.lua @@ -30,8 +30,8 @@ end -- ##### DMF Options View Class ####################################################################################### -- #################################################################################################################### -local _content_blueprints = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints") -local _view_settings = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings") +local _content_blueprints = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints") +local _view_settings = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings") local InputUtils = require("scripts/managers/input/input_utils") local ScriptWorld = require("scripts/foundation/utilities/script_world") @@ -51,7 +51,7 @@ local _last_selected_category_widget local DMFOptionsView = class("DMFOptionsView", "BaseView") DMFOptionsView.init = function (self, settings) - local definitions = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_definitions") + local definitions = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_definitions") DMFOptionsView.super.init(self, definitions, settings) diff --git a/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints.lua b/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints.lua index e1ef44a..df2d098 100644 --- a/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints.lua +++ b/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints.lua @@ -1,6 +1,6 @@ local dmf = get_mod("DMF") -local _view_settings = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings") +local _view_settings = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings") local ButtonPassTemplates = require("scripts/ui/pass_templates/button_pass_templates") local CheckboxPassTemplates = require("scripts/ui/pass_templates/checkbox_pass_templates") diff --git a/scripts/mods/dmf/modules/ui/options/dmf_options_view_definitions.lua b/scripts/mods/dmf/modules/ui/options/dmf_options_view_definitions.lua index d6e5069..304ce16 100644 --- a/scripts/mods/dmf/modules/ui/options/dmf_options_view_definitions.lua +++ b/scripts/mods/dmf/modules/ui/options/dmf_options_view_definitions.lua @@ -1,6 +1,6 @@ local dmf = get_mod("DMF") -local _view_settings = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings") +local _view_settings = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings") local ScrollbarPassTemplates = require("scripts/ui/pass_templates/scrollbar_pass_templates") local UIFontSettings = require("scripts/managers/ui/ui_font_settings") diff --git a/scripts/mods/dmf/modules/ui/options/mod_options.lua b/scripts/mods/dmf/modules/ui/options/mod_options.lua index 940eb24..37b289b 100644 --- a/scripts/mods/dmf/modules/ui/options/mod_options.lua +++ b/scripts/mods/dmf/modules/ui/options/mod_options.lua @@ -607,7 +607,7 @@ dmf.initialize_dmf_options_view = function () } }) - dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view") + dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view") end -- ####################################################################################################################