forked from rojo-rbx/rojo
- Sessions can now be restarted if they error - Terminology is much easier to follow in the plugin - More change cases are handled correctly
77 lines
1.9 KiB
Lua
77 lines
1.9 KiB
Lua
if not plugin then
|
|
return
|
|
end
|
|
|
|
local Session = require(script.Session)
|
|
local Config = require(script.Config)
|
|
local Version = require(script.Version)
|
|
local Logging = require(script.Logging)
|
|
local DevSettings = require(script.DevSettings)
|
|
|
|
local function showUpgradeMessage(lastVersion)
|
|
local message = (
|
|
"Rojo detected an upgrade from version %s to version %s." ..
|
|
"\nMake sure you have also upgraded your server!" ..
|
|
"\n\nRojo plugin version %s is intended for use with server version %s."
|
|
):format(
|
|
Version.display(lastVersion), Version.display(Config.version),
|
|
Version.display(Config.version), Config.expectedServerVersionString
|
|
)
|
|
|
|
Logging.info(message)
|
|
end
|
|
|
|
--[[
|
|
Check if the user is using a newer version of Rojo than last time. If they
|
|
are, show them a reminder to make sure they check their server version.
|
|
]]
|
|
local function checkUpgrade()
|
|
-- When developing Rojo, there's no use in doing version checks
|
|
if DevSettings:isEnabled() then
|
|
return
|
|
end
|
|
|
|
local lastVersion = plugin:GetSetting("LastRojoVersion")
|
|
|
|
if lastVersion then
|
|
local wasUpgraded = Version.compare(Config.version, lastVersion) == 1
|
|
|
|
if wasUpgraded then
|
|
showUpgradeMessage(lastVersion)
|
|
end
|
|
end
|
|
|
|
plugin:SetSetting("LastRojoVersion", Config.version)
|
|
end
|
|
|
|
local function main()
|
|
local displayedVersion = DevSettings:isEnabled()
|
|
and Config.codename
|
|
or Version.display(Config.version)
|
|
|
|
Logging.trace("Rojo %s initialized", displayedVersion)
|
|
|
|
local toolbar = plugin:CreateToolbar("Rojo " .. displayedVersion)
|
|
|
|
local currentSession
|
|
|
|
-- TODO: More robust session tracking to handle errors
|
|
-- TODO: Icon!
|
|
toolbar:CreateButton("Connect", "Connect to Rojo Session", "")
|
|
.Click:Connect(function()
|
|
checkUpgrade()
|
|
|
|
if currentSession ~= nil then
|
|
Logging.warn("A session is already running!")
|
|
return
|
|
end
|
|
|
|
Logging.info("Started new session.")
|
|
currentSession = Session.new(function()
|
|
Logging.info("Session terminated.")
|
|
currentSession = nil
|
|
end)
|
|
end)
|
|
end
|
|
|
|
main() |