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
|