diff options
Diffstat (limited to 'UserScripts.lua')
| -rw-r--r-- | UserScripts.lua | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/UserScripts.lua b/UserScripts.lua new file mode 100644 index 0000000..a43c472 --- /dev/null +++ b/UserScripts.lua @@ -0,0 +1,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 |
