summaryrefslogtreecommitdiff
path: root/UserScripts.lua
blob: a43c4727f86a59eefbbd141a171814cf06bf67ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-- Press Shift+F1 to display debug output in-game
local Menu = require "necro.menu.Menu"

local UserScripts = {}

UserScripts.callbacks = {}

-- Other scripts can't directly modify a module member, so provide a function
-- to do it with
function UserScripts.add(label, callback)
	UserScripts.callbacks[label] = callback
end

-- The menu event is an EnumSelector event, so use the key field.
event.menu.add("pauseOptions", { key = "pause", sequence = 1 }, function(ev)
	if not ev.menu or not ev.menu.entries then
		return
	end

	-- 8th index: without any other mods, this is after "Customize"
	table.insert(ev.menu.entries, 8, {
		label = "User Scripts",
		action = function()
			Menu.open "scriptsList"
		end,
	})
end)

-- key corresponds to what is passed to Menu.open
event.menu.add("scriptsList", { key = "scriptsList", sequence = 0 }, function(ev)
	local entries = {}

	for index, callback in pairs(UserScripts.callbacks) do
		table.insert(entries, {
			label = index,
			action = callback,
		})
	end

	table.insert(entries, {
		id = "_done",
		sound = "UIBack",
		label = L "Done",
		action = function()
			Menu.close()
		end,
	})

	ev.menu = {
		label = "Script List",
		entries = entries,
	}
end)

return UserScripts