From 7ceda9d98b68632151e529d26c00af712a1f7bef Mon Sep 17 00:00:00 2001 From: Darthpred Date: Thu, 3 Jan 2013 00:03:14 +0400 Subject: [PATCH] Moar catch up --- ElvUI_SLE/modules/datatexts/time.lua | 188 ++++++++++++++++------------------ 1 file changed, 87 insertions(+), 101 deletions(-) diff --git a/ElvUI_SLE/modules/datatexts/time.lua b/ElvUI_SLE/modules/datatexts/time.lua index 8c5b9f7..4ac273d 100644 --- a/ElvUI_SLE/modules/datatexts/time.lua +++ b/ElvUI_SLE/modules/datatexts/time.lua @@ -10,6 +10,7 @@ P['datatexts'] = { local format = string.format local join = string.join local floor = math.floor +local wipe = table.wipe local APM = { TIMEMANAGER_PM, TIMEMANAGER_AM } local europeDisplayFormat = ''; @@ -18,78 +19,52 @@ local europeDisplayFormat_nocolor = join("", "%02d", ":|r%02d") local ukDisplayFormat_nocolor = join("", "", "%d", ":|r%02d", " %s|r") local timerLongFormat = "%d:%02d:%02d" local timerShortFormat = "%d:%02d" -local lockoutInfoFormat = "|cffcccccc[%d%s]|r %s |cfff04000(%s/%s)|r" +local lockoutInfoFormat = "%s%s |cffaaaaaa(%s, %s/%s)" +local lockoutInfoFormatNoEnc = "%s%s |cffaaaaaa(%s)" local formatBattleGroundInfo = "%s: " local lockoutColorExtended, lockoutColorNormal = { r=0.3,g=1,b=0.3 }, { r=.8,g=.8,b=.8 } -local difficultyInfo = { "N", "N", "H", "H" } local lockoutFormatString = { "%dd %02dh %02dm", "%dd %dh %02dm", "%02dh %02dm", "%dh %02dm", "%dh %02dm", "%dm" } local curHr, curMin, curAmPm local enteredFrame = false; local Update, lastPanel; -- UpValue +local localizedName, isActive, canQueue, startTime, canEnter +local name, reset, locked, extended, isRaid, maxPlayers, difficulty, numEncounters, encounterProgress +local quests = {} +local updateQuestTable = false + local function ValueColorUpdate(hex, r, g, b) europeDisplayFormat = join("", "%02d", hex, ":|r%02d") ukDisplayFormat = join("", "", "%d", hex, ":|r%02d", hex, " %s|r") + if lastPanel ~= nil then Update(lastPanel, 20000) end end E['valueColorUpdateFuncs'][ValueColorUpdate] = true -local function CalculateTimeValues(tt) - local Hr, Min, AmPm - if tt and tt == true then - if E.db.datatexts.localtime == true then - Hr, Min = GetGameTime() - if E.db.datatexts.time24 == true then - return Hr, Min, -1 - else - if Hr>=12 then - if Hr>12 then Hr = Hr - 12 end - AmPm = 1 - else - if Hr == 0 then Hr = 12 end - AmPm = 2 - end - return Hr, Min, AmPm - end +local function ConvertTime(h, m) + local AmPm + if E.db.datatexts.time24 == true then + return h, m, -1 + else + if h >= 12 then + if h > 12 then h = h - 12 end + AmPm = 1 else - local Hr24 = tonumber(date("%H")) - Hr = tonumber(date("%I")) - Min = tonumber(date("%M")) - if E.db.datatexts.time24 == true then - return Hr24, Min, -1 - else - if Hr24>=12 then AmPm = 1 else AmPm = 2 end - return Hr, Min, AmPm - end + if h == 0 then h = 12 end + AmPm = 2 end + end + return h, m, AmPm +end + +local function CalculateTimeValues(tooltip) + if (tooltip and E.db.datatexts.localtime) or (not tooltip and not E.db.datatexts.localtime) then + return ConvertTime(GetGameTime()) else - if E.db.datatexts.localtime == true then - local Hr24 = tonumber(date("%H")) - Hr = tonumber(date("%I")) - Min = tonumber(date("%M")) - if E.db.datatexts.time24 == true then - return Hr24, Min, -1 - else - if Hr24>=12 then AmPm = 1 else AmPm = 2 end - return Hr, Min, AmPm - end - else - Hr, Min = GetGameTime() - if E.db.datatexts.time24 == true then - return Hr, Min, -1 - else - if Hr>=12 then - if Hr>12 then Hr = Hr - 12 end - AmPm = 1 - else - if Hr == 0 then Hr = 12 end - AmPm = 2 - end - return Hr, Min, AmPm - end - end + local dateTable = date("*t") + return ConvertTime(dateTable["hour"], dateTable["min"]) end end @@ -118,6 +93,16 @@ local function formatResetTime(sec) end end +local function OnEvent(self, event) + if event == "QUEST_COMPLETE" then + updateQuestTable = true + elseif (event == "QUEST_LOG_UPDATE" and updateQuestTable) or event == "ELVUI_FORCE_RUN" then + wipe(quests) + quests = GetQuestsCompleted() + updateQuestTable = false + end +end + local function Click() GameTimeFrame:Click(); end @@ -130,8 +115,8 @@ end local function OnEnter(self) DT:SetupTooltip(self) enteredFrame = true; + GameTooltip:AddLine(VOICE_CHAT_BATTLEGROUND); - local localizedName, isActive, canQueue, startTime, canEnter for i = 1, GetNumWorldPVPAreas() do _, localizedName, isActive, canQueue, startTime, canEnter = GetWorldPVPAreaInfo(i) if canEnter then @@ -140,46 +125,46 @@ local function OnEnter(self) elseif startTime == nil then startTime = QUEUE_TIME_UNAVAILABLE else - local hour, min, sec = CalculateTimeLeft(startTime) - if hour > 0 then - startTime = format(timerLongFormat, hour, min, sec) + local h, m, s = CalculateTimeLeft(startTime) + if h > 0 then + startTime = format(timerLongFormat, h, m, s) else - startTime = format(timerShortFormat, min, sec) + startTime = format(timerShortFormat, m, s) end end GameTooltip:AddDoubleLine(format(formatBattleGroundInfo, localizedName), startTime, 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) end end - + if E.db.datatexts.lfrshow then - --LFR lockout text - local lvl = UnitLevel("player") - local ilvl = GetAverageItemLevel() - GameTooltip:AddLine(" ") - if lvl == 85 and ilvl >= 372 then - DT:DragonSoul(416, 417) - elseif lvl == 90 then - if ilvl >= 460 then - DT:Mogushan(527, 528) - GameTooltip:AddLine(" ") - end - if ilvl >= 470 then - DT:HoF(529, 530) - GameTooltip:AddLine(" ") - DT:ToES(526) - end - if ilvl < 460 then - GameTooltip:AddLine(L["No LFR is available for your lever/gear."]) + --LFR lockout text + local lvl = UnitLevel("player") + local ilvl = GetAverageItemLevel() + GameTooltip:AddLine(" ") + if lvl == 85 and ilvl >= 372 then + DT:DragonSoul(416, 417) + elseif lvl == 90 then + if ilvl >= 460 then + DT:Mogushan(527, 528) + GameTooltip:AddLine(" ") + end + if ilvl >= 470 then + DT:HoF(529, 530) + GameTooltip:AddLine(" ") + DT:ToES(526) + end + if ilvl < 460 then + GameTooltip:AddLine("No LFR is available for your lever/gear.") + end + else + GameTooltip:AddLine("No LFR is available for your lever/gear.") end - else - GameTooltip:AddLine(L["No LFR is available for your lever/gear."]) + --LFR lockout end end - --LFR lockout end - end - + local oneraid, lockoutColor for i = 1, GetNumSavedInstances() do - local name, _, reset, difficulty, locked, extended, _, isRaid, maxPlayers, _, numEncounters, encounterProgress = GetSavedInstanceInfo(i) + name, _, reset, _, locked, extended, _, isRaid, maxPlayers, difficulty, numEncounters, encounterProgress = GetSavedInstanceInfo(i) if isRaid and (locked or extended) and name then local tr,tg,tb,diff if not oneraid then @@ -188,36 +173,37 @@ local function OnEnter(self) oneraid = true end if extended then lockoutColor = lockoutColorExtended else lockoutColor = lockoutColorNormal end - local formatTime = formatResetTime(reset) - if difficultyInfo[difficulty] and encounterProgress and numEncounters and formatTime and lockoutColor then - GameTooltip:AddDoubleLine(format(lockoutInfoFormat, maxPlayers, difficultyInfo[difficulty], name, encounterProgress, numEncounters), formatTime, 1,1,1, lockoutColor.r,lockoutColor.g,lockoutColor.b) + + if (numEncounters and numEncounters > 0) and (encounterProgress and encounterProgress > 0) then + GameTooltip:AddDoubleLine(format(lockoutInfoFormat, maxPlayers, (difficulty:match("Normal") and "N" or "H"), name, encounterProgress, numEncounters), formatResetTime(reset), 1,1,1, lockoutColor.r,lockoutColor.g,lockoutColor.b) + else + GameTooltip:AddDoubleLine(format(lockoutInfoFormatNoEnc, maxPlayers, (difficulty:match("Normal") and "N" or "H"), name), formatResetTime(reset), 1,1,1, lockoutColor.r,lockoutColor.g,lockoutColor.b) end end end GameTooltip:AddLine(" ") - GameTooltip:AddLine(L["World Boss(s)"]) - local quests = GetQuestsCompleted(); - local shaKilled, galleonKilled = quests[32099], quests[32098] - GameTooltip:AddDoubleLine(L['Sha of Anger']..':', shaKilled and L['Defeated'] or L['Undefeated'], 1, 1, 1, 0.8, 0.8, 0.8) - GameTooltip:AddDoubleLine(L['Galleon']..':', galleonKilled and L['Defeated'] or L['Undefeated'], 1, 1, 1, 0.8, 0.8, 0.8) - - + GameTooltip:AddLine(L["World Boss(s)"]) + GameTooltip:AddDoubleLine(L['Sha of Anger']..':', quests[32099] and L['Defeated'] or L['Undefeated'], 1, 1, 1, 0.8, 0.8, 0.8) + GameTooltip:AddDoubleLine(L['Galleon']..':', quests[32098] and L['Defeated'] or L['Undefeated'], 1, 1, 1, 0.8, 0.8, 0.8) + + local timeText local Hr, Min, AmPm = CalculateTimeValues(true) GameTooltip:AddLine(" ") - timeText = E.db.datatexts.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME if AmPm == -1 then - GameTooltip:AddDoubleLine(timeText, format(europeDisplayFormat_nocolor, Hr, Min), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) + GameTooltip:AddDoubleLine(E.db.datatexts.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME, + format(europeDisplayFormat_nocolor, Hr, Min), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) else - GameTooltip:AddDoubleLine(timeText, format(ukDisplayFormat_nocolor, Hr, Min, APM[AmPm]), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) - end + GameTooltip:AddDoubleLine(E.db.datatexts.localtime and TIMEMANAGER_TOOLTIP_REALMTIME or TIMEMANAGER_TOOLTIP_LOCALTIME, + format(ukDisplayFormat_nocolor, Hr, Min, APM[AmPm]), 1, 1, 1, lockoutColorNormal.r, lockoutColorNormal.g, lockoutColorNormal.b) + end GameTooltip:Show() end -local int = 1 +local int = 3 function Update(self, t) int = int - t @@ -237,7 +223,7 @@ function Update(self, t) -- no update quick exit if (Hr == curHr and Min == curMin and AmPm == curAmPm) and not (int < -15000) then - int = 2 + int = 5 return end @@ -251,7 +237,7 @@ function Update(self, t) self.text:SetFormattedText(ukDisplayFormat, Hr, Min, APM[AmPm]) end lastPanel = self - int = 2 + int = 5 end --[[ @@ -265,4 +251,4 @@ end onEnterFunc - function to fire OnEnter onLeaveFunc - function to fire OnLeave, if not provided one will be set for you that hides the tooltip. ]] -DT:RegisterDatatext('Time', nil, nil, Update, Click, OnEnter, OnLeave) +DT:RegisterDatatext('Time', { "QUEST_COMPLETE", "QUEST_LOG_UPDATE" }, OnEvent, Update, Click, OnEnter, OnLeave) \ No newline at end of file -- 1.7.9.5