|
|
|
|
local function CreateEvent()
|
|
|
|
|
local functions = {}
|
|
|
|
|
return {
|
|
|
|
|
---Adds an event handler.
|
|
|
|
|
---
|
|
|
|
|
---The handler called every time an event is triggered.
|
|
|
|
|
---@param func function
|
|
|
|
|
add = function(func)
|
|
|
|
|
table.insert(functions, func)
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
---Removes the event handler.
|
|
|
|
|
---@param func function
|
|
|
|
|
remove = function(func)
|
|
|
|
|
for i, f in ipairs(functions) do
|
|
|
|
|
if f == func then
|
|
|
|
|
table.remove(functions, i)
|
|
|
|
|
break
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
|
|
|
|
|
---Triggers an event.
|
|
|
|
|
---
|
|
|
|
|
---The arguments are forwarded to handlers.
|
|
|
|
|
---@param ... any
|
|
|
|
|
trigger = function(...)
|
|
|
|
|
local args = {...}
|
|
|
|
|
if #args > 0 then
|
|
|
|
|
for _, func in ipairs(functions) do
|
|
|
|
|
func(table.unpack(args))
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
for _, func in ipairs(functions) do
|
|
|
|
|
func()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end,
|
|
|
|
|
__sig_trigger = "(...)",
|
|
|
|
|
}
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local events = {
|
|
|
|
|
---Called after all mods have been loaded.
|
|
|
|
|
LoadModsComplete = CreateEvent(),
|
|
|
|
|
__doc_LoadModsComplete = "Called after all mods have been loaded.",
|
|
|
|
|
|
|
|
|
|
---Called after the item data TSV file has been loaded.
|
|
|
|
|
ItemDataLoaded = CreateEvent(),
|
|
|
|
|
__doc_ItemDataLoaded = "Called after the item data TSV file has been loaded.",
|
|
|
|
|
|
|
|
|
|
---Called after the unique item data TSV file has been loaded.
|
|
|
|
|
UniqueItemDataLoaded = CreateEvent(),
|
|
|
|
|
__doc_UniqueItemDataLoaded = "Called after the unique item data TSV file has been loaded.",
|
|
|
|
|
|
|
|
|
|
---Called after the monster data TSV file has been loaded.
|
|
|
|
|
MonsterDataLoaded = CreateEvent(),
|
|
|
|
|
__doc_MonsterDataLoaded = "Called after the monster data TSV file has been loaded.",
|
|
|
|
|
|
|
|
|
|
---Called after the unique monster data TSV file has been loaded.
|
|
|
|
|
UniqueMonsterDataLoaded = CreateEvent(),
|
|
|
|
|
__doc_UniqueMonsterDataLoaded = "Called after the unique monster data TSV file has been loaded.",
|
|
|
|
|
|
|
|
|
|
---Called every time a new game is started.
|
|
|
|
|
GameStart = CreateEvent(),
|
|
|
|
|
__doc_GameStart = "Called every time a new game is started.",
|
|
|
|
|
|
|
|
|
|
---Called every frame at the end.
|
|
|
|
|
GameDrawComplete = CreateEvent(),
|
|
|
|
|
__doc_GameDrawComplete = "Called every frame at the end.",
|
|
|
|
|
|
|
|
|
|
---Called when opening a towner store. Passes the towner name as argument (e.g., "griswold", "adria", "pepin", "wirt", "cain").
|
|
|
|
|
StoreOpened = CreateEvent(),
|
|
|
|
|
__doc_StoreOpened = "Called when opening a towner store. Passes the towner name as argument.",
|
|
|
|
|
|
|
|
|
|
---Called when a Monster takes damage.
|
|
|
|
|
OnMonsterTakeDamage = CreateEvent(),
|
|
|
|
|
__doc_OnMonsterTakeDamage = "Called when a Monster takes damage.",
|
|
|
|
|
|
|
|
|
|
---Called when Player takes damage.
|
|
|
|
|
OnPlayerTakeDamage = CreateEvent(),
|
|
|
|
|
__doc_OnPlayerTakeDamage = "Called when Player takes damage.",
|
|
|
|
|
|
|
|
|
|
---Called when Player gains experience.
|
|
|
|
|
OnPlayerGainExperience = CreateEvent(),
|
|
|
|
|
__doc_OnPlayerGainExperience = "Called when Player gains experience.",
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
---Registers a custom event type with the given name.
|
|
|
|
|
---@param name string
|
|
|
|
|
function events.registerCustom(name)
|
|
|
|
|
events[name] = CreateEvent()
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
events.__sig_registerCustom = "(name: string)"
|
|
|
|
|
events.__doc_registerCustom = "Register a custom event type."
|
|
|
|
|
|
|
|
|
|
return events
|