Rework battle pass timer into multiple weakauras

This commit is contained in:
2024-04-08 22:14:29 +02:00
parent 1a1e250e68
commit 02bde8ebb5
15 changed files with 170 additions and 46 deletions

View File

@@ -0,0 +1,79 @@
if WeakAurasSaved.Cyka == nil then WeakAurasSaved.Cyka = {} end
if WeakAurasSaved.Cyka.LoginInfo == nil then WeakAurasSaved.Cyka.LoginInfo = {} end
Today = date("%Y-%m-%d")
if WeakAurasSaved.Cyka.LoginInfo[UnitName("player")] == nil then WeakAurasSaved.Cyka.LoginInfo[UnitName("player")] = {} end
if WeakAurasSaved.Cyka.LoginInfo[UnitName("player")][Today] == nil then
WeakAurasSaved.Cyka.LoginInfo[UnitName("player")][Today] = {
isClaimed = false,
timeLeft = 120,
}
end
aura_env.BattlePass = {
Hide = function()
uDailyRewFrame:Hide()
end,
---@param day number
---@return Frame, string|nil
GetDayCard = function(day)
local frame = _G[string.format("card%d", day)]
if frame == nil then
return UIParent, string.format("card%d is nil", day)
end
return frame, nil
end,
---@return {day: number, text: Frame, button: Frame}, string|nil
GetActiveDayInfo = function()
for i = 1, 7 do
local dayCard, err = aura_env.BattlePass.GetDayCard(i)
if err ~= nil then return { day = i, text = nil, button = nil }, err end
local textFrame = dayCard.text_w
if textFrame ~= nil then
if textFrame:GetText() ~= nil then
return { day = i, text = textFrame, button = nil }, nil
end
else
print(string.format("card%d.text_w is nil", i))
end
local button = _G[string.format("uDRWbutton_get%d", i)]
if button ~= nil then
return { day = i, text = nil, button = button }, nil
end
end
return { day = 0, text = nil, button = nil }, "No active days found"
end,
GetRemainingTime = function()
local activeDayInfo, err = aura_env.BattlePass.GetActiveDayInfo()
if err ~= nil then return 0, err end
if activeDayInfo.text == nil then return 0, "No time text found" end
local minutes = tonumber(activeDayInfo.text:GetText():match("(%d+) minutes"))
if minutes == nil then return 0, "No time text found" end
return minutes, nil
end
}
local aura_env = aura_env
aura_env.Tick = function()
-- TODO: If cannot find time text try find claim button
-- If claim button then click claim button and set isClaimed to true
-- OR better yet change the click handler to one that updates isClaimed to true
-- And THEN click the button
-- idk if that works though
-- uDRWbutton_get<n> is the button
local remainingTime = aura_env.BattlePass.GetRemainingTime()
if remainingTime == 0 then
local activeDayInfo, err = aura_env.BattlePass.GetActiveDayInfo()
if activeDayInfo.button ~= nil then
activeDayInfo.button:Click()
WeakAurasSaved.Cyka.LoginInfo[UnitName("player")][Today].isClaimed = true
end
end
WeakAurasSaved.Cyka.LoginInfo[UnitName("player")][Today].timeLeft = remainingTime
aura_env.BattlePass.Hide()
C_Timer.After(0.1, function()
aura_env.BattlePass.Hide()
end)
end