74 lines
2.1 KiB
Lua

lotj = lotj or {}
lotj.setup = lotj.setup or {}
lotj.setup.eventHandlerKillIds = lotj.setup.eventHandlerKillIds or {}
lotj.setup.gmcpEventHandlerFuncs = lotj.setup.gmcpEventHandlerFuncs or {}
function lotj.setup.registerEventHandler(eventName, func)
local killId = registerAnonymousEventHandler(eventName, func)
table.insert(lotj.setup.eventHandlerKillIds, killId)
-- A little bit hacky, but we want to run all GMCP event handlers when we finish
-- doing initial setup to populate the UI.
if eventName:find("gmcp\.") then
table.insert(lotj.setup.gmcpEventHandlerFuncs, func)
end
end
local function setup()
-- Layout has to be created first
lotj.layout.setup()
-- Then everything else in no particular order
lotj.chat.setup()
lotj.galaxyMap.setup()
lotj.infoPanel.setup()
lotj.mapper.setup()
lotj.systemMap.setup()
-- Then set our UI default view
lotj.layout.selectTab(lotj.layout.upperRightTabData, "map")
lotj.layout.selectTab(lotj.layout.lowerRightTabData, "all")
-- Manually kick off all GMCP event handlers, since GMCP data would not have changed
-- since loading the UI.
for _, func in ipairs(lotj.setup.gmcpEventHandlerFuncs) do
func()
end
end
local function teardown()
for _, killId in ipairs(lotj.setup.eventHandlerKillIds) do
killAnonymousEventHandler(killId)
end
lotj.mapper.teardown()
lotj.layout.teardown()
lotj = nil
end
lotj.setup.registerEventHandler("sysLoadEvent", function()
setup()
end)
lotj.setup.registerEventHandler("sysInstallPackage", function(_, pkgName)
--Check if the generic_mapper package is installed and if so uninstall it
if table.contains(getPackages(),"generic_mapper") then
uninstallPackage("generic_mapper")
end
if pkgName ~= "lotj-ui" then return end
sendGMCP("Core.Supports.Set", "[\"Ship 1\"]")
setup()
end)
lotj.setup.registerEventHandler("sysUninstallPackage", function(_, pkgName)
if pkgName ~= "lotj-ui" then return end
teardown()
end)
lotj.setup.registerEventHandler("sysProtocolEnabled", function(_, protocol)
if protocol == "GMCP" then
sendGMCP("Core.Supports.Set", "[\"Ship 1\"]")
end
end)