local ADDON_NAME, NS = ...
local L = LibStub("AceLocale-3.0"):GetLocale("MDungeonTeleports")
local AceGUI = LibStub("AceGUI-3.0")

local addonName = "MDungeonTeleports"
local version = C_AddOns.GetAddOnMetadata(addonName, "Version") or "Unknown"

-- Version Check
function VersionCheck()
   local currentVersion = 60000
    if not MDungeonTeleports then
        MDungeonTeleports = {}
    end

    if MDungeonTeleports.Version == nil or MDungeonTeleports.Version > currentVersion then
        MDungeonTeleports.Version = currentVersion
        MDT_LaunchFeatureWindow()
        return
    end

    if MDungeonTeleports.Version < currentVersion then
        MDungeonTeleports.Version = currentVersion
        MDT_LaunchFeatureWindow()
        return
    end
end

-- font set
local defaultFont = "Interface/AddOns/MDungeonTeleports/media/fonts/accia.ttf"

local function FontSet()
    if GetLocale() == "zhCN" or GetLocale() == "koKR" then
        defaultFont = GameFontNormal:GetFont()
    else
        defaultFont = "Interface/AddOns/MDungeonTeleports/media/fonts/accia.ttf"
    end
end

FontSet()

-- MARK: First Launch Frame
local FeatureWindow = CreateFrame("Frame", "FeatureWindow", UIParent)
FeatureWindow:SetSize(578, 342)
FeatureWindow:SetPoint("CENTER")
FeatureWindow:SetMovable(true)
FeatureWindow:EnableMouse(true)
FeatureWindow:RegisterForDrag("LeftButton")
FeatureWindow:SetScript("OnDragStart", FeatureWindow.StartMoving)
FeatureWindow:SetScript("OnDragStop", FeatureWindow.StopMovingOrSizing)
FeatureWindow:SetFrameStrata("DIALOG")
FeatureWindow:Hide()
FeatureWindow:EnableKeyboard(true)
FeatureWindow:SetClampedToScreen(true)
FeatureWindow:SetScale(1)

--------------------------------------------
-- MARK: Backdrop and Border
local FeatureWindowBackdrop = FeatureWindow:CreateTexture(nil, "BACKGROUND")
FeatureWindowBackdrop:SetAllPoints(FeatureWindow)
FeatureWindowBackdrop:SetTexture("Interface\\AddOns\\MDungeonTeleports\\media\\ui\\launch_frame.blp")
FeatureWindowBackdrop:SetTexCoord(0, 0.846679, 0, 1)
--------------------------------------------
-- MARK: Titles
-- Title Sizes and Colours
local MainTitleSize = 22
local SubTitleSize = 16
local DescTitleSize = 12
local MainTitleColour = {223/255, 185/255, 69/255}
local SubTitleColour = {1, 1, 1}
local DescTitleColour = {172/255, 172/255, 172/255}

local FeatureTitle = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle:SetPoint("TOP", FeatureWindow, "TOP", 0, -18)
FeatureTitle:SetFont(defaultFont, MainTitleSize, nil)
FeatureTitle:SetJustifyH("CENTER")
FeatureTitle:SetTextColor(unpack(MainTitleColour))
FeatureTitle:SetText(L["FEATURE_TITLE"])

local FeatureTitle2 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle2:SetPoint("TOP", FeatureWindow, "TOP", 0, -44)
FeatureTitle2:SetFont(defaultFont, SubTitleSize, nil)
FeatureTitle2:SetJustifyH("CENTER")
FeatureTitle2:SetTextColor(unpack(DescTitleColour))
FeatureTitle2:SetText(L["VER_TITLE"])

local icon1 = FeatureWindow:CreateTexture(nil, "ARTWORK")
icon1:SetSize(48, 48)
icon1:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 40, -82)
icon1:SetTexture("Interface\\Icons\\achievement_zone_isleofqueldanas")
icon1:SetTexCoord(0.15, 0.85, 0.15, 0.85)

local icon1Border = FeatureWindow:CreateTexture(nil, "OVERLAY")
icon1Border:SetSize(58, 58)
icon1Border:SetPoint("CENTER", icon1, "CENTER", 0, 0)
icon1Border:SetTexture("interface\\professions\\professions.blp")
icon1Border:SetTexCoord(0.173828125, 0.22265625, 0.5380859375, 0.5869140625)

local FeatureTitle3 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle3:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 100, -88)
FeatureTitle3:SetFont(defaultFont, SubTitleSize, nil)
FeatureTitle3:SetJustifyH("LEFT")
FeatureTitle3:SetTextColor(unpack(SubTitleColour))
FeatureTitle3:SetText(L["FEATURE_1"])

local FeatureTitle4 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle4:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 100, -106)
FeatureTitle4:SetFont(defaultFont, DescTitleSize, nil)
FeatureTitle4:SetJustifyH("LEFT")
FeatureTitle4:SetTextColor(unpack(DescTitleColour))
FeatureTitle4:SetText(L["FEATURE_DESC_1"])

local icon2 = FeatureWindow:CreateTexture(nil, "ARTWORK")
icon2:SetSize(48, 48)
icon2:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 40, -138)
icon2:SetTexture("Interface\\Icons\\Inv_10_specialization_professionbook_enchanting_color2")
icon2:SetTexCoord(0.15, 0.85, 0.15, 0.85)

local icon2Border = FeatureWindow:CreateTexture(nil, "OVERLAY")
icon2Border:SetSize(58, 58)
icon2Border:SetPoint("CENTER", icon2, "CENTER", 0, 0)
icon2Border:SetTexture("interface\\professions\\professions.blp")
icon2Border:SetTexCoord(0.173828125, 0.22265625, 0.5380859375, 0.5869140625)

local FeatureTitle5 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle5:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 100, -140)
FeatureTitle5:SetFont(defaultFont, SubTitleSize, nil)
FeatureTitle5:SetJustifyH("LEFT")
FeatureTitle5:SetTextColor(unpack(SubTitleColour))
FeatureTitle5:SetText(L["FEATURE_2"])

local FeatureTitle6 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle6:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 100, -158)
FeatureTitle6:SetFont(defaultFont, DescTitleSize, nil)
FeatureTitle6:SetJustifyH("LEFT")
FeatureTitle6:SetTextColor(unpack(DescTitleColour))
FeatureTitle6:SetText(L["FEATURE_DESC_2"])

local icon3 = FeatureWindow:CreateTexture(nil, "ARTWORK")
icon3:SetSize(48, 48)
icon3:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 40, -196)
icon3:SetTexture("Interface\\Icons\\Inv_engineering_90_toolbox_yellow")
icon3:SetTexCoord(0.15, 0.85, 0.15, 0.85)

local icon3Border = FeatureWindow:CreateTexture(nil, "OVERLAY")
icon3Border:SetSize(58, 58)
icon3Border:SetPoint("CENTER", icon3, "CENTER", 0, 0)
icon3Border:SetTexture("interface\\professions\\professions.blp")
icon3Border:SetTexCoord(0.173828125, 0.22265625, 0.5380859375, 0.5869140625)

local FeatureTitle7 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle7:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 100, -202)
FeatureTitle7:SetFont(defaultFont, SubTitleSize, nil)
FeatureTitle7:SetJustifyH("LEFT")
FeatureTitle7:SetTextColor(unpack(SubTitleColour))
FeatureTitle7:SetText(L["FEATURE_3"])

local FeatureTitle8 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle8:SetPoint("TOPLEFT", FeatureWindow, "TOPLEFT", 100, -220)
FeatureTitle8:SetFont(defaultFont, DescTitleSize, nil)
FeatureTitle8:SetJustifyH("LEFT")
FeatureTitle8:SetTextColor(unpack(DescTitleColour))
FeatureTitle8:SetText(L["FEATURE_DESC_3"])

local FeatureTitle9 = FeatureWindow:CreateFontString(nil, "OVERLAY", "GameFontHighlight")
FeatureTitle9:SetPoint("TOP", FeatureWindow, "TOP", 0, -275)
FeatureTitle9:SetFont(defaultFont, DescTitleSize, nil)
FeatureTitle9:SetJustifyH("LEFT")
FeatureTitle9:SetTextColor(unpack(DescTitleColour))
FeatureTitle9:SetText(L["MORE_UPDATES"])
--------------------------------------------
-- MARK: FeatureWindow Close Button
local closeButtonContainer = AceGUI:Create("SimpleGroup")
closeButtonContainer:SetLayout("Flow")
closeButtonContainer:SetWidth(60)
closeButtonContainer:SetHeight(32)
closeButtonContainer.frame:SetScale(1.7)
closeButtonContainer.frame:SetParent(FeatureWindow)
closeButtonContainer.frame:SetPoint("TOP", FeatureWindow, "TOP", 0, -175)
closeButtonContainer.frame:Show()

local aceCloseButton = AceGUI:Create("Button")
aceCloseButton:SetWidth(90)
aceCloseButton.frame:SetScale(0.6)
local buttonText = aceCloseButton.frame:GetFontString()
if buttonText then
    buttonText:SetFont(defaultFont, 14, nil)
end
aceCloseButton:SetText("Got it!")
aceCloseButton:SetCallback("OnClick", function()
    PlaySound(SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON)
    MDungeonTeleports = {
    Season1Pos = {x = 392, y = -98, anchor = "TOPRIGHT"},
    PortalLibraryPos = {x = 781, y = -98, anchor = "TOPRIGHT"},
    PortalLibraryRaidPos = {x = 909, y = -98, anchor = "TOPRIGHT"},
    KeyTrackerPos = {x = 794, y = -206, anchor = "TOPLEFT"},
    showTooltips = false,
    ShiftDragToggle = false,
    isRespondChecked = true,
    isSeason1PortalsShown = true,
    isPortalLibraryShown = true,
    isPortalLibraryRaidShown = true,
    isKeyFrameShown = true,
    loginMessage = true,
    frameScale = 1,
    KeyTrackerFrameScale = 1,
    borderColor = { r = 0.05, g = 0.05, b = 0.05, a = 0.8 },
    backgroundColor = { r = 0, g = 0, b = 0, a = 0.6 },
    expansionColor = { r = 0, g = 1, b = 0.6 },
    titleColor = { r = 1, g = 1, b = 1 },
    buttonTextColor = { r = 1, g = 1, b = 1 },
    borderThickness = 2,
    customFontName = "Expressway",
    customFont = "Interface\\AddOns\\MDungeonTeleports\\media\\fonts\\expressway.ttf",
    settingsScale = 1,
    announcePort = false,
    LockIcons = false,
    DarkenText = false,
    rioScore = true,
    realmName = false,
    dragHandle = true,
    selectedPreset = 1,
    buttonBorderColor = { r = 0.05, g = 0.05, b = 0.05, a = 0.8 },
    KeyTrackerWidth = 160,
    lastVersionCheck = nil,
    WhisperResonse = true,
    expansionVisibility = {
        MID = true,
        TWW = true,
        DF = true,
        SL = true,
        BFA = true,
        Legion = true,
        WOD = true,
        MOP = true,
        CATA = true,
        WRATH = true,
    },
    teleportsTab = true,
    mythicTabButtons = true,
    mythicTabVertical = true,
    Version = 60000
}
    ReloadUI()
end)
aceCloseButton:SetCallback("OnEnter", function(widget)
    GameTooltip:SetOwner(widget.frame, "ANCHOR_TOP")
    GameTooltip:SetText(L["RESET_ADDON_TIP"], 1, 1, 1)
    GameTooltip:Show()
end)
aceCloseButton:SetCallback("OnLeave", function()
    GameTooltip:Hide()
end)

closeButtonContainer:AddChild(aceCloseButton)
--------------------------------------------
-- MARK: Launch Feature Window
function MDT_LaunchFeatureWindow()
   FeatureWindow:Show()
end

local launchFrame = CreateFrame("Frame")
launchFrame:RegisterEvent("ADDON_LOADED")
launchFrame:RegisterEvent("PLAYER_LOGIN")
launchFrame:SetScript(
   "OnEvent",
   function(self, event, arg1)
      if event == "ADDON_LOADED" then
         if arg1 == "MDungeonTeleports" then
            C_Timer.After(2, function() 
               VersionCheck() 
            end)
         end
      elseif event == "PLAYER_LOGIN" then
         C_Timer.After(2, function() 
            VersionCheck() 
         end)
      end
   end
)

