refactor: Replace I/O-based requires

With the switch back to bundle-based mod distribution, we can now use
the built-in `require`/`dofile`.
This commit is contained in:
Lucas Schwiderski 2023-02-21 10:29:02 +01:00
parent b0b7395f02
commit 9486af9177
Signed by: lucas
GPG key ID: AA12679AAA6DF4D8
12 changed files with 45 additions and 113 deletions

View file

@ -3,9 +3,6 @@ local dmf
-- Native mod object used by Fatshark mod manager -- Native mod object used by Fatshark mod manager
local dmf_mod_object = {} 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 -- Global backup of original print() method
local print = __print local print = __print
@ -14,38 +11,37 @@ local print = __print
-- ##################################################################################################################### -- #####################################################################################################################
function dmf_mod_object:init() function dmf_mod_object:init()
io_dofile("dmf/scripts/mods/dmf/modules/dmf_mod_data") dofile("dmf/scripts/mods/dmf/modules/dmf_mod_data")
io_dofile("dmf/scripts/mods/dmf/modules/dmf_mod_manager") dofile("dmf/scripts/mods/dmf/modules/dmf_mod_manager")
--io_dofile("dmf/scripts/mods/dmf/modules/dmf_dummy") -- dofile("dmf/scripts/mods/dmf/modules/dmf_dummy")
io_dofile("dmf/scripts/mods/dmf/modules/dmf_package_manager") dofile("dmf/scripts/mods/dmf/modules/dmf_package_manager")
io_dofile("dmf/scripts/mods/dmf/modules/core/safe_calls") dofile("dmf/scripts/mods/dmf/modules/core/safe_calls")
io_dofile("dmf/scripts/mods/dmf/modules/core/events") dofile("dmf/scripts/mods/dmf/modules/core/events")
io_dofile("dmf/scripts/mods/dmf/modules/core/settings") dofile("dmf/scripts/mods/dmf/modules/core/settings")
io_dofile("dmf/scripts/mods/dmf/modules/core/logging") dofile("dmf/scripts/mods/dmf/modules/core/logging")
io_dofile("dmf/scripts/mods/dmf/modules/core/misc") dofile("dmf/scripts/mods/dmf/modules/core/misc")
io_dofile("dmf/scripts/mods/dmf/modules/core/persistent_tables") dofile("dmf/scripts/mods/dmf/modules/core/persistent_tables")
io_dofile("dmf/scripts/mods/dmf/modules/core/io") dofile("dmf/scripts/mods/dmf/modules/core/io")
-- DMF's internal io module is now loaded:
dmf = get_mod("DMF") dmf = get_mod("DMF")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/debug/dev_console") dmf:dofile("dmf/scripts/mods/dmf/modules/debug/dev_console")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/debug/table_dump") dmf:dofile("dmf/scripts/mods/dmf/modules/debug/table_dump")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/hooks") dmf:dofile("dmf/scripts/mods/dmf/modules/core/hooks")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/require") dmf:dofile("dmf/scripts/mods/dmf/modules/core/require")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/toggling") dmf:dofile("dmf/scripts/mods/dmf/modules/core/toggling")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/keybindings") dmf:dofile("dmf/scripts/mods/dmf/modules/core/keybindings")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/chat") dmf:dofile("dmf/scripts/mods/dmf/modules/core/chat")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/localization") dmf:dofile("dmf/scripts/mods/dmf/modules/core/localization")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/options") dmf:dofile("dmf/scripts/mods/dmf/modules/core/options")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/network") dmf:dofile("dmf/scripts/mods/dmf/modules/core/network")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/commands") dmf:dofile("dmf/scripts/mods/dmf/modules/core/commands")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/gui/custom_textures") dmf:dofile("dmf/scripts/mods/dmf/modules/gui/custom_textures")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/gui/custom_views") dmf:dofile("dmf/scripts/mods/dmf/modules/gui/custom_views")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/chat/chat_actions") dmf:dofile("dmf/scripts/mods/dmf/modules/ui/chat/chat_actions")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/mod_options") dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/mod_options")
dmf:io_dofile("dmf/scripts/mods/dmf/modules/dmf_options") dmf: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/core/mutators/mutators_manager")
dmf.delayed_chat_messages_hook() dmf.delayed_chat_messages_hook()
dmf:hook(ModManager, "destroy", function(func, ...) dmf:hook(ModManager, "destroy", function(func, ...)

View file

@ -119,64 +119,10 @@ local function handle_io(mod, local_path, file_name, file_extension, args, safe_
end end
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 ######################################################################################################## -- ##### 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 -- Use the io library to return the contents of the given file
function DMFMod:io_read_content(file_path, file_extension) function DMFMod:io_read_content(file_path, file_extension)
return handle_io(self, file_path, nil, file_extension, nil, true, "data") return handle_io(self, file_path, nil, file_extension, nil, true, "data")

View file

@ -138,5 +138,5 @@ end
-- ##### Script ####################################################################################################### -- ##### 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) dmf.initialize_mod_localization(dmf, localization_table)

View file

@ -27,11 +27,11 @@ local _mutators_sorted = false
local _all_mutators_disabled = false local _all_mutators_disabled = false
-- External modules -- External modules
local reward_manager = dmf:io_dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_reward") local reward_manager = dmf: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 set_lobby_data = dmf:dofile("dmf/scripts/mods/dmf/modules/core/mutators/mutators_info")
-- Get default configuration -- 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 -- List of enabled mutators in case DMF is reloaded in the middle of the game
local _enabled_mutators = dmf:persistent_table("enabled_mutators") local _enabled_mutators = dmf:persistent_table("enabled_mutators")
@ -505,4 +505,4 @@ end
-- ##################################################################################################################### -- #####################################################################################################################
-- Testing -- 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")

View file

@ -65,7 +65,7 @@ end
-- Handles the swap to io for registered files and the application of file hooks -- Handles the swap to io for registered files and the application of file hooks
dmf:hook(_G, "require", function (func, path, ...) dmf:hook(_G, "require", function (func, path, ...)
if _io_requires[path] then if _io_requires[path] then
return dmf:io_dofile(path) return dmf:dofile(path)
else else
local result = func(path, ...) local result = func(path, ...)

View file

@ -91,16 +91,6 @@ function dmf.safe_call_dofile(mod, error_prefix_data, file_path)
end 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. -- Format error message and throw error.
function dmf.throw_error(error_message, ...) function dmf.throw_error(error_message, ...)
error(string.format(error_message, ...), 0) error(string.format(error_message, ...), 0)

View file

@ -50,7 +50,7 @@ local function resolve_resource(mod, error_prefix_data, resource, resource_value
local type_value = type(resource_value) local type_value = type(resource_value)
if type_value == "string" then 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 elseif type_value == "function" then
return dmf.safe_call(mod, error_prefix_data, resource_value, mod) return dmf.safe_call(mod, error_prefix_data, resource_value, mod)
elseif type_value == "table" then elseif type_value == "table" then

View file

@ -33,7 +33,7 @@ local _queued_command
local function initialize_drawing_function() local function initialize_drawing_function()
if not _commands_list_gui_draw then 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_draw = commands_list_gui.draw
_commands_list_gui_destroy = commands_list_gui.destroy _commands_list_gui_destroy = commands_list_gui.destroy
end end

View file

@ -30,8 +30,8 @@ end
-- ##### DMF Options View Class ####################################################################################### -- ##### DMF Options View Class #######################################################################################
-- #################################################################################################################### -- ####################################################################################################################
local _content_blueprints = dmf:io_dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_content_blueprints") local _content_blueprints = dmf: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 _view_settings = dmf:dofile("dmf/scripts/mods/dmf/modules/ui/options/dmf_options_view_settings")
local InputUtils = require("scripts/managers/input/input_utils") local InputUtils = require("scripts/managers/input/input_utils")
local ScriptWorld = require("scripts/foundation/utilities/script_world") local ScriptWorld = require("scripts/foundation/utilities/script_world")
@ -51,7 +51,7 @@ local _last_selected_category_widget
local DMFOptionsView = class("DMFOptionsView", "BaseView") local DMFOptionsView = class("DMFOptionsView", "BaseView")
DMFOptionsView.init = function (self, settings) 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) DMFOptionsView.super.init(self, definitions, settings)

View file

@ -1,6 +1,6 @@
local dmf = get_mod("DMF") 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 ButtonPassTemplates = require("scripts/ui/pass_templates/button_pass_templates")
local CheckboxPassTemplates = require("scripts/ui/pass_templates/checkbox_pass_templates") local CheckboxPassTemplates = require("scripts/ui/pass_templates/checkbox_pass_templates")

View file

@ -1,6 +1,6 @@
local dmf = get_mod("DMF") 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 ScrollbarPassTemplates = require("scripts/ui/pass_templates/scrollbar_pass_templates")
local UIFontSettings = require("scripts/managers/ui/ui_font_settings") local UIFontSettings = require("scripts/managers/ui/ui_font_settings")

View file

@ -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 end
-- #################################################################################################################### -- ####################################################################################################################