function ModFeeder( f1_arg0 ) local mod_buttons = {} if (not directoryexists("mods")) then return mod_buttons end local mods = listfiles("mods/") for i = 1, #mods do local mod_button = nil local mod_path = mods[i] local mod_name = mod_path:gsub("mods/", "") if (directoryexists(mods[i]) and not directoryisempty(mods[i])) then mod_button = { type = "UIGenericButton", id = "mod_button_" .. i, properties = { button_text = mod_name, button_action_func = MBh.EmitEventToRoot( { name = "select_mod", modtoload = mod_path } ) } } end mod_buttons[#mod_buttons + 1] = mod_button end return mod_buttons end function SelectMod( f6_arg0, f6_arg1 ) Engine.Exec("loadmod " .. f6_arg1.modtoload) end function UnloadMod() Engine.Exec("unloadmod") end function BackButtonFunc( f13_arg0 ) LUI.FlowManager.RequestLeaveMenu( f13_arg0 ) end function ModsMenuButtons( f2_arg0 ) f2_arg0:dispatchEventToRoot( { name = "add_button_helper_text", button_ref = "button_secondary", helper_text = Engine.Localize( "@LUA_MENU_BACK" ), side = "left", clickable = true, immediate = true } ) f2_arg0:dispatchEventToRoot( { name = "add_button_helper_text", button_ref = "button_action", helper_text = Engine.Localize( "@LUA_MENU_SELECT" ), side = "left", clickable = true, immediate = true } ) f2_arg0:dispatchEventToRoot( { name = "add_button_helper_text", button_ref = "button_alt1", helper_text = "Unload Mod", side = "left", clickable = true, immediate = true } ) end function mods_menu() return { type = "UIElement", id = "mods_menu_root", properties = { menu_title = "MODS", rotationAllowed = false }, states = { default = { topAnchor = true, bottomAnchor = true, leftAnchor = true, rightAnchor = true, top = 0, bottom = 0, left = 0, right = 0 } }, handlers = { menu_create = ModsMenuButtons, select_mod = SelectMod }, children = { { type = "generic_menu_title", id = "mod_menu_title", properties = { menu_title = MBh.Property( "menu_title" ) } }, { type = "UIScrollingVerticalList", id = "modlist", childrenFeeder = ModFeeder, properties = { use_arrows = true, use_scrollbar = false, bar_width = 20 }, states = { default = { leftAnchor = true, rightAnchor = false, topAnchor = true, bottomAnchor = false, left = GenericMenuDims.menu_left, right = GenericMenuDims.menu_right, top = GenericMenuDims.menu_top, bottom = GenericMenuDims.menu_top + GenericButtonSettings.Styles.GradientButton.height * 11 + 2 + 60 } } }, { type = "UIBindButton", id = "mods_menu_bindbuttons", handlers = { button_secondary = BackButtonFunc, button_alt1 = UnloadMod } }, { type = "button_helper_text_main", id = "mods_menu_button_helper_text_id" } } } end LUI.MenuBuilder.registerDef( "mods_menu", mods_menu )