local GlobalAddonName, ExRT = ...

local ELib,L = ExRT.lib,ExRT.L

if ExRT.isClassic then return end

local sf = CreateFrame("ScrollFrame", nil, UIParent)
sf:SetPoint("CENTER")
sf:SetSize(500,500)
sf:Hide()
sf:SetFrameStrata("DIALOG")

sf.back = sf:CreateTexture(nil,"BACKGROUND")
sf.back:SetAtlas("UI-Frame-Venthyr-CardParchmentWider")
sf.back:SetSize(570,570)
sf.back:SetPoint("CENTER",0,0)

sf.close = CreateFrame("Button",nil,sf,"UIPanelCloseButton")
sf.close:SetPoint("TOPRIGHT",25,25)

sf.C = CreateFrame("Frame", nil, sf) 
sf:SetScrollChild(sf.C)
sf.C:SetSize(500,500)

for i=1,4 do
	local f = CreateFrame("Frame",nil,sf.C)
	sf.C[i] = f
	f:SetPoint("CENTER")
	f:SetSize(1,1)
	
	f.img = f:CreateTexture(nil,"BACKGROUND")
	f.img:SetSize(350,350)
	
	local group = f:CreateAnimationGroup()
	group:SetScript('OnFinished', function() group:Play() end)
	local rotation = group:CreateAnimation('Rotation')
	rotation:SetDuration(0.000001)
	rotation:SetEndDelay(2147483647)
	rotation:SetOrigin('TOPLEFT', 0, 0)
	rotation:SetDegrees(0)
	group:Play()

	f.r = rotation
end

sf.C[1].img:SetPoint("BOTTOMLEFT",0,0)
sf.C[1].img:SetAtlas("UI-Frame-KyrianChoice-ScrollingBG")
sf.C[1].r:SetOrigin('BOTTOMLEFT', 0, 0)

sf.C[2].img:SetPoint("TOPLEFT",0,0)
sf.C[2].img:SetAtlas("UI-Frame-NecrolordsChoice-ScrollingBG")
sf.C[2].r:SetOrigin('TOPLEFT', 0, 0)

sf.C[3].img:SetPoint("TOPRIGHT",0,0)
sf.C[3].img:SetAtlas("UI-Frame-NightFaeChoice-ScrollingBG")
sf.C[3].r:SetOrigin('TOPRIGHT', 0, 0)

sf.C[4].img:SetPoint("BOTTOMRIGHT",0,0)
sf.C[4].img:SetAtlas("UI-Frame-VenthyrChoice-ScrollingBG")
sf.C[4].r:SetOrigin('BOTTOMRIGHT', 0, 0)


sf.arrowf = CreateFrame("Frame",nil,sf)
sf.arrowf:SetAllPoints()

sf.arrow = sf.arrowf:CreateTexture()
sf.arrow:SetAtlas("NPE_ArrowDown",true)
sf.arrow:SetPoint("TOP",0,28)

sf.result = CreateFrame("Frame",nil,sf)
sf.result:SetAllPoints()

sf.result_icon = sf.result:CreateTexture()
sf.result_icon:SetSize(500,232)
sf.result_icon:SetPoint("CENTER",0,0)

local f2 = CreateFrame("Frame")

local t = 0

f2.anim = f2:CreateAnimationGroup()
f2.anim:SetLooping("NONE")
f2.anim.timer = f2.anim:CreateAnimation()
f2.anim.timer:SetDuration(7)
f2.anim.timer:SetSmoothing("OUT")
f2.anim.timer:SetScript("OnUpdate", function(self,elapsed) 
	local p = self:GetSmoothProgress()
	for i=1,4 do
		sf.C[i].r:SetDegrees(t*p)
	end
end)

local f3 = CreateFrame("Frame")
f3.anim = f3:CreateAnimationGroup()
f3.anim.timer = f3.anim:CreateAnimation()
f3.anim.timer:SetDuration(.5)
f3.anim.timer:SetSmoothing("IN")
f3.anim.timer:SetScript("OnUpdate", function(self,elapsed) 
	local p = self:GetSmoothProgress()
	sf.result_icon:SetScale(2-p)
end)

f2.anim:SetScript('OnFinished', function() 
	local covenantID = floor((t%360)/90)
	sf.result_icon:SetTexCoord(0,1,0,1)
	if covenantID == 0 then
		sf.result_icon:SetAtlas("adventures-endcombat-kyrian")
	elseif covenantID == 1 then
		sf.result_icon:SetAtlas("adventures-endcombat-necrolord")
	elseif covenantID == 2 then
		sf.result_icon:SetTexture(3463360)
		sf.result_icon:SetTexCoord(1/1024,501/1024,338/2048,570/2048)
	elseif covenantID == 3 then
		sf.result_icon:SetAtlas("adventures-endcombat-venthyr")
	end
	f3.anim:Play()
	sf.result_icon:Show()
end)

sf:SetScript("OnMouseUp",function()
	if f3.anim:IsPlaying() then
		return
	end
	if f2.anim:IsPlaying() then
		t = t + math.random(1000,3000)
		return
	end
	local prev = t % 360
	t = math.random(2000,5000)
	f2.anim:Play()
	sf.result_icon:Hide()
end)

sf:SetScript("OnShow",function(self)
	self:GetScript("OnMouseUp")(self)
end)

local helpButton
local helpButtonClick = function()
	PlayerChoiceFrame:Hide()
	sf:Show()
end

local loader = CreateFrame("Frame")
loader:RegisterEvent("ADDON_LOADED")
loader:RegisterEvent("PLAYER_CHOICE_UPDATE")
loader:SetScript("OnEvent",function(self,event,arg)
	if event == "ADDON_LOADED" then
		if arg == "Blizzard_PlayerChoiceUI" then
			helpButton = CreateFrame("Button",nil,PlayerChoiceFrame,"UIPanelButtonTemplate")
			helpButton:SetPoint("BOTTOM",PlayerChoiceFrame,"TOP",0,4)
			helpButton:SetText("ExRT: "..L.OtherCovHelper)
			helpButton:SetSize(200,30)
			helpButton:SetScale(1.3)
			helpButton:SetScript("OnClick",helpButtonClick)
		end
	elseif event == "PLAYER_CHOICE_UPDATE" then
		if not helpButton then
			return
		end
		local choiceInfo = C_PlayerChoice.GetPlayerChoiceInfo()
		if choiceInfo and choiceInfo.choiceID == 644 then
			helpButton:Show()
		else
			helpButton:Hide()
		end
	end
end)


SlashCmdList["covhelpSlash"] = function (arg)
	sf:Show()
end
SLASH_covhelpSlash1 = "/covenanthelper"