Files
spearhead/classes/api/SpearheadApi.lua
T
dutchie031GitHubdutchie032 <dutchie032>
05e2d067ce Spearhead API updates (#31)
Co-authored-by: dutchie032 <dutchie032>
2025-05-10 12:44:01 +02:00

56 lines
1.8 KiB
Lua

---@type Array<OnMissionCompleteListener>
local MissionCompleteListeners = {}
---@type SpearheadAPI
local SpearheadAPI = {
Stages = {
changeStage = function(stageNumber)
if type(stageNumber) ~= "number" then
return false, "stageNumber " .. stageNumber .. " is not a valid number"
end
Spearhead.Events.PublishStageNumberChanged(stageNumber)
return true, ""
end,
getCurrentStage = function()
return Spearhead.StageNumber or nil
end,
isStageComplete = function(stageNumber)
if type(stageNumber) ~= "number" then
return false, "stageNumber " .. stageNumber .. " is not a valid number"
end
local isComplete = Spearhead.internal.GlobalStageManager.isStageComplete(stageNumber)
if isComplete == nil then
return nil, "no stage found with number " .. stageNumber
end
return isComplete, ""
end
},
Missions = {
addOnMissionCompleteListener = function(listener)
if type(listener) ~= "table" or type(listener.onMissionComplete) ~= "function" then
error("listener is not a valid OnMissionCompleteListener")
end
table.insert(MissionCompleteListeners, listener)
end
},
--- Internal Functions for the API that can be called through the rest of the Framework
Internal = {
notifyMissionComplete = function(zone_name)
for _, listener in ipairs(MissionCompleteListeners) do
pcall(function()
listener:onMissionComplete(zone_name)
end)
end
end,
}
}
if Spearhead == nil then Spearhead = {} end
Spearhead.API = SpearheadAPI