--[[
Author: Jarth
Filename: SummonAssistant.lua
]] --

-------------------------------------------------------------------------------------------------
-- VARIABLES --
-------------------------------------------------------------------------------------------------
local baseModule = SummonAssistant

-------------------------------------------------------------------------------------------------
-- FUNCTIONS --
-------------------------------------------------------------------------------------------------
function baseModule.OnAddOnLoaded(_, addonName)
    if addonName == baseModule.Addon.Name then
        baseModule.Initialize()
    end
end

function baseModule.Initialize()
    -- Load saved values..
    baseModule.Saved = ZO_SavedVars:New("SummonAssistant_Character", baseModule.Addon.Version, nil, baseModule.Default)

    if baseModule.Saved.UseAccountSettings then
        baseModule.Saved = ZO_SavedVars:NewAccountWide("SummonAssistant_Account", baseModule.Addon.Version, nil, baseModule.Default)
    end

    baseModule:RestorePanel()
    baseModule:HoykeyCreateSelections()
    baseModule:CreateSettingsWindow()

    EVENT_MANAGER:UnregisterForEvent(baseModule.Addon.Name, EVENT_ADD_ON_LOADED)
end

-------------------------------------------------------------------------------------------------
-- PRIVATE FUNCTIONS --
-------------------------------------------------------------------------------------------------
function baseModule:GetVersion(showMinor)
    if showMinor == false or baseModule.Addon.MinorVersion == nil then
        return tostring(baseModule.Addon.Version)
    end

    return tostring(baseModule.Addon.Version) .. "." .. tostring(baseModule.Addon.MinorVersion)
end

function baseModule:RestorePanel()
    baseModule:SetButtonFrameWidth()
    baseModule:InitializeButtons()
    baseModule:ButtonsBackdropColor()
    baseModule:RestorePosition()
    baseModule:UpdateMoveFrame()
    baseModule:SetFragmentBehaviour()
end

function baseModule:RestorePosition()
    local Top = baseModule.Saved.Top
    local Left = baseModule.Saved.Left

    SummonAssistant_Frame:ClearAnchors()
    SummonAssistant_Frame:SetAnchor(TOPLEFT, GuiRoot, TOPLEFT, Left, Top)
end

EVENT_MANAGER:RegisterForEvent(baseModule.Addon.Name, EVENT_ADD_ON_LOADED, baseModule.OnAddOnLoaded)