VMF Loader: refactoring

This commit is contained in:
bi 2018-05-26 16:19:43 +03:00
parent 79ef3ff00d
commit c2dabc69ac

View file

@ -1,9 +1,17 @@
VT1 = (type(script_data["eac-untrusted"]) == "nil") local vmf
--move vmf to local var
return {
init = function(object)
Managers.vmf = Managers.vmf or {} -- Global variable indicating which version of the game is currently running
VT1 = (type(script_data["eac-untrusted"]) == "nil")
-- Native mod object used by Fatshark mod manager
local vmf_mod_object = {}
-- ####################################################################################################################
-- ##### Initialization ###############################################################################################
-- ####################################################################################################################
function vmf_mod_object:init()
Managers.vmf = Managers.vmf or {} -- @TODO: move mod data to on_reload when it will be implemented in vt1
dofile("scripts/mods/vmf/modules/mods") dofile("scripts/mods/vmf/modules/mods")
dofile("scripts/mods/vmf/modules/core/events") dofile("scripts/mods/vmf/modules/core/events")
@ -33,71 +41,75 @@ return {
dofile("scripts/mods/vmf/modules/ui/mutators/mutators_gui") dofile("scripts/mods/vmf/modules/ui/mutators/mutators_gui")
end end
vmf = get_mod("VMF")
vmf:hook("ModManager.destroy", function(func, ...)
object.vmf = get_mod("VMF") vmf.mods_unload_event(true)
func(...)
object.vmf:hook("ModManager.destroy", function(func, self)
object.vmf.mods_unload_event(true)
func(self)
end) end)
end, end
update = function(object, dt) -- ####################################################################################################################
-- ##### Events #######################################################################################################
-- ####################################################################################################################
object.vmf.mods_update_event(dt) function vmf_mod_object:update(dt)
object.vmf.check_pressed_keybinds() vmf.mods_update_event(dt)
object.vmf.check_custom_menus_close_keybinds(dt) vmf.check_pressed_keybinds()
object.vmf.execute_queued_chat_command() vmf.check_custom_menus_close_keybinds(dt)
if VT1 then object.vmf.check_mutators_state() end vmf.execute_queued_chat_command()
if VT1 then vmf.check_mutators_state() end
if not object.vmf.all_mods_were_loaded and Managers.mod._state == "done" then if not vmf.all_mods_were_loaded and Managers.mod._state == "done" then
object.vmf.initialize_keybinds() vmf.initialize_keybinds()
object.vmf.initialize_vmf_options_view() vmf.initialize_vmf_options_view()
object.vmf.create_network_dictionary() vmf.create_network_dictionary()
object.vmf.ping_vmf_users() vmf.ping_vmf_users()
if VT1 then object.vmf.modify_map_view() end if VT1 then vmf.modify_map_view() end
if VT1 then object.vmf.mutators_delete_raw_config() end if VT1 then vmf.mutators_delete_raw_config() end
object.vmf.all_mods_loaded_event() vmf.all_mods_loaded_event()
object.vmf.all_mods_were_loaded = true vmf.all_mods_were_loaded = true
end end
end, end
on_unload = function(object)
function vmf_mod_object:on_unload()
print("VMF:ON_UNLOAD()") print("VMF:ON_UNLOAD()")
object.vmf.reset_guis() vmf.reset_guis()
object.vmf.save_chat_history() vmf.save_chat_history()
object.vmf.save_unsaved_settings_to_file() vmf.save_unsaved_settings_to_file()
object.vmf = nil end
end,
on_reload = function(object)
function vmf_mod_object:on_reload()
print("VMF:ON_RELOAD()") print("VMF:ON_RELOAD()")
object.vmf.disable_mods_options_button() vmf.disable_mods_options_button()
object.vmf.close_opened_custom_menus() vmf.close_opened_custom_menus()
if VT1 then object.vmf.reset_map_view() end if VT1 then vmf.reset_map_view() end
object.vmf.delete_keybinds() vmf.delete_keybinds()
object.vmf.mods_unload_event() vmf.mods_unload_event(false)
object.vmf.hooks_unload() vmf.hooks_unload()
end, end
on_game_state_changed = function(object, status, state)
function vmf_mod_object:on_game_state_changed(status, state)
print("VMF:ON_GAME_STATE_CHANGED(), status: " .. tostring(status) .. ", state: " .. tostring(state)) print("VMF:ON_GAME_STATE_CHANGED(), status: " .. tostring(status) .. ", state: " .. tostring(state))
object.vmf.mods_game_state_changed_event(status, state) vmf.mods_game_state_changed_event(status, state)
object.vmf.save_unsaved_settings_to_file() vmf.save_unsaved_settings_to_file()
object.vmf.apply_delayed_hooks() vmf.apply_delayed_hooks()
--if status == "exit" and state == "StateTitleScreen" then
-- object.vmf.hook_chat_manager()
--end
if status == "enter" and state == "StateIngame" then if status == "enter" and state == "StateIngame" then
object.vmf.initialize_keybinds() vmf.initialize_keybinds()
end end
end end
}
-- ####################################################################################################################
-- ##### Return #######################################################################################################
-- ####################################################################################################################
return vmf_mod_object