You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.8 KiB
146 lines
4.8 KiB
local SI, L = unpack((select(2, ...)))
|
|
|
|
-- Lua functions
|
|
local date, format, ipairs, strtrim, tinsert, time = date, format, ipairs, strtrim, tinsert, time
|
|
|
|
-- WoW API / Variables
|
|
local C_DateAndTime_GetCurrentCalendarTime = C_DateAndTime.GetCurrentCalendarTime
|
|
local C_QuestLog_GetAllCompletedQuestIDs = C_QuestLog.GetAllCompletedQuestIDs
|
|
local GetGameTime = GetGameTime
|
|
local GetQuestResetTime = GetQuestResetTime
|
|
local GetRealmName = GetRealmName
|
|
local GetRealZoneText = GetRealZoneText
|
|
local GetTime = GetTime
|
|
local UnitLevel = UnitLevel
|
|
|
|
local SecondsToTime = SecondsToTime
|
|
|
|
function SI:Debug(...)
|
|
if not SI or not SI.db or SI.db.Tooltip.DebugMode then
|
|
SI:ChatMsg(...)
|
|
end
|
|
end
|
|
|
|
function SI:TimeDebug()
|
|
SI:ChatMsg("Version: %s", SI.version)
|
|
SI:ChatMsg("Realm: %s (%s)", GetRealmName(), SI:GetRegion())
|
|
SI:ChatMsg("Zone: %s (%s)", GetRealZoneText(), SI:GetCurrentMapAreaID())
|
|
SI:ChatMsg("time() = %s, GetTime() = %s", time(), GetTime())
|
|
SI:ChatMsg("Local time: %s local", date("%Y/%m/%d %H:%M:%S"))
|
|
SI:ChatMsg("GetGameTime: %s:%s server", GetGameTime())
|
|
|
|
local t = C_DateAndTime_GetCurrentCalendarTime()
|
|
SI:ChatMsg("C_DateAndTime.GetCurrentCalendarTime: %s/%s/%s server", t.year, t.month, t.monthDay)
|
|
SI:ChatMsg("GetQuestResetTime: %s", SecondsToTime(GetQuestResetTime()))
|
|
SI:ChatMsg(date("Daily reset: %Y/%m/%d %H:%M:%S local (based on GetQuestResetTime)", time() + GetQuestResetTime()))
|
|
|
|
local offset = SI:GetServerOffset()
|
|
SI:ChatMsg("Local to server offset: %d hours", offset)
|
|
offset = offset * 60 * 60 -- offset in seconds
|
|
|
|
t = SI:GetNextDailyResetTime()
|
|
SI:ChatMsg(
|
|
"Next daily reset: %s local, %s server",
|
|
date("%Y/%m/%d %H:%M:%S", t), date("%Y/%m/%d %H:%M:%S", t + offset)
|
|
)
|
|
|
|
t = SI:GetNextWeeklyResetTime()
|
|
SI:ChatMsg(
|
|
"Next weekly reset: %s local, %s server",
|
|
date("%Y/%m/%d %H:%M:%S", t), date("%Y/%m/%d %H:%M:%S", t + offset)
|
|
)
|
|
|
|
t = SI:GetNextDailySkillResetTime()
|
|
SI:ChatMsg(
|
|
"Next skill reset: %s local, %s server",
|
|
date("%Y/%m/%d %H:%M:%S", t), date("%Y/%m/%d %H:%M:%S", t + offset)
|
|
)
|
|
|
|
t = SI:GetNextDarkmoonResetTime()
|
|
SI:ChatMsg(
|
|
"Next Darkmoon reset: %s local, %s server",
|
|
date("%Y/%m/%d %H:%M:%S", t), date("%Y/%m/%d %H:%M:%S", t + offset)
|
|
)
|
|
end
|
|
|
|
do
|
|
local function questTableToString(data)
|
|
local level = UnitLevel('player')
|
|
local ret = ''
|
|
for index, questID in ipairs(data) do
|
|
ret = ret .. format(
|
|
"%s\124cffffff00\124Hquest:%s:%s\124h[%s]\124h\124r",
|
|
(index == 1) and "" or ", ", questID, level, questID
|
|
)
|
|
end
|
|
return ret
|
|
end
|
|
|
|
function SI:QuestDebug(info)
|
|
local t = SI.db.Toons[SI.thisToon]
|
|
local ql = C_QuestLog_GetAllCompletedQuestIDs()
|
|
|
|
local cmd = info.input
|
|
cmd = cmd and strtrim(cmd:gsub("^%s*(%w+)%s*","")):lower()
|
|
if t.completedquests and (cmd == "load" or not SI.completedquests) then
|
|
SI:ChatMsg("Loaded quest list")
|
|
SI.completedquests = t.completedquests
|
|
elseif cmd == "load" then
|
|
SI:ChatMsg("No saved quest list")
|
|
elseif cmd == "save" then
|
|
SI:ChatMsg("Saved quest list")
|
|
t.completedquests = ql
|
|
elseif cmd == "clear" then
|
|
SI:ChatMsg("Cleared quest list")
|
|
SI.completedquests = nil
|
|
t.completedquests = nil
|
|
return
|
|
elseif cmd and #cmd > 0 then
|
|
SI:ChatMsg("Quest command not understood: '"..cmd.."'")
|
|
SI:ChatMsg("/si quest ([save|load|clear])")
|
|
return
|
|
end
|
|
local cnt = #ql
|
|
local add = {}
|
|
local remove = {}
|
|
SI:ChatMsg("Completed quests: "..cnt)
|
|
if SI.completedquests then
|
|
local prev, curr = 1, 1
|
|
while true do
|
|
if not SI.completedquests[prev] then
|
|
while ql[curr] do
|
|
tinsert(add, ql[curr])
|
|
curr = curr + 1
|
|
end
|
|
break
|
|
elseif not ql[curr] then
|
|
while SI.completedquests[prev] do
|
|
tinsert(remove, SI.completedquests[prev])
|
|
prev = prev + 1
|
|
end
|
|
break
|
|
elseif SI.completedquests[prev] > ql[curr] then
|
|
while ql[curr] and SI.completedquests[prev] > ql[curr] do
|
|
tinsert(add, ql[curr])
|
|
curr = curr + 1
|
|
end
|
|
elseif SI.completedquests[prev] < ql[curr] then
|
|
while SI.completedquests[prev] and SI.completedquests[prev] < ql[curr] do
|
|
tinsert(remove, SI.completedquests[prev])
|
|
prev = prev + 1
|
|
end
|
|
else -- SI.completedquests[prev] == ql[curr]
|
|
prev = prev + 1
|
|
curr = curr + 1
|
|
end
|
|
end
|
|
if #add > 0 then
|
|
SI:ChatMsg("Added IDs: " .. questTableToString(add))
|
|
end
|
|
if #remove > 0 then
|
|
SI:ChatMsg("Removed IDs: " .. questTableToString(remove))
|
|
end
|
|
end
|
|
SI.completedquests = ql
|
|
end
|
|
end
|
|
|